当前位置: 首页 > 面试题库 >

if(null check)-else vs try catch(NullPointerException)哪个更有效?

狄望
2023-03-14
问题内容

以下三个功能中哪个更有效?

  public String getmConnectedDeviceName1() {
        if(null != mServerDevice) {
            return mServerDevice.getName();
        }
        else {
            return null;
        }
    }

  public String getmConnectedDeviceName2() {
        return mServerDevice == null ? null : mServerDevice.getName();
    }


  public String getmConnectedDeviceName3() {
        try{
            return mServerDevice.getName();
        }
        catch(NullPointerException e) {
            return null;
        }
    }

请以可接受的具体逻辑答复。


问题答案:

前者是更有效时,mServerDevicenull。两者何时mServerDevicenull相同。与的比较null只是两个32位整数的比较,这是非常快速的运算。抛出异常的代价很高,因为应该创建新对象并且应该填充堆栈跟踪。

三进制运算符... ? ... : ...if (...) ... else ...语句完全一样有效,因为两者都被转换为相同的字节码。



 类似资料:
  • 问题内容: 在Java中,哪个会更有效,并且有什么区别? 要么 问题答案: (类似于此问题:null == object和object==null之间的区别) 我要说的是,这两个表达式在性能上绝对没有区别。 然而,有趣的是,两种情况下的编译字节码(由OpenJDK的javac发出)看起来有些不同。 对于: 对于: 正如@Bozho所说,是最常见,默认和首选的样式。 但是,在某些情况下,我倾向于放在

  • 问题内容: 我有一个关于成语和可读性的问题,对于这种特殊情况,似乎存在Python哲学的冲突: 我想从字典B构建字典A。如果B中不存在特定键,则什么也不做,继续。 哪种方法更好? 要么 “做并请求宽恕”与“简单明了”。 哪个更好?为什么? 问题答案: 异常不是有条件的。 条件版本更清晰。这很自然:这是直接的流控制,这是条件设计的目的,而不是异常。 在循环中进行这些查找时,异常版本主要用作优化:对于

  • 本文向大家介绍v-if和v-show哪个优先级更高?相关面试题,主要包含被问及v-if和v-show哪个优先级更高?时的应答技巧和注意事项,需要的朋友参考一下 v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。 v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。 相比之下,v-show

  • 问题内容: 当使用范围表达式迭代大数组时,我应该使用Python的内置范围函数还是numpy来获得最佳性能? 到目前为止,我的推理是: 可能求助于本机实现,因此可能会更快。另一方面,返回一个占用内存的完整数组,因此可能会产生开销。Python 3的范围表达式是一个生成器,它不会在内存中保存所有值。 问题答案: 对于大型数组,numpy应该是更快的解决方案。 在numpy中,您应该结合使用向量化计算

  • 问题内容: 使用哪种更好或更方便: 要么 问题答案: 您是否完全需要类型属性?如果您使用的是HTML5,则不会。否则,是的。HTML 4.01和XHTML 1.0 根据需要指定属性,而HTML5具有可选属性,默认为。HTML5现在得到了广泛的实现,因此,如果您使用HTML5doctype,则是有效且不错的选择。 至于type属性中应该包含的内容,2006年注册的MIME类型旨在替代所有主要浏览器(

  • 问题内容: 在Java中,似乎只报告,它发生在一个特定的代码行。如果一行代码中使用了多个变量,是否可以更改该异常以声明哪个变量为null? 问题答案: 否,类文件中的调试信息没有足够的信息来允许这样做。 但是,您可以改善这种情况。有两件事会导致引发NPE: 甲解引用变量,像。 甲索引的阵列,像。 如果您编写代码,那么在给定的代码行中只有 其中之一 ,那么毫无疑问,哪一个引起了NPE。它将引入 很多