问:“a”.equals(a)和a.equals("a")在工程中我们一般会使用哪个,为什么?
答:在工程中我们一般使用第一个,第一种在a为空的时候不会报空指针的错误。
测试,当a不为空的时候,两者的输出结果一样,代码如下:
package study.base_study; /** * Created by Taoyongpan on 2017/11/24. * "abc".equals(a),a.equals("abc")在工程中一般使用哪个,Why? * 在工程中我们一般使用第一个,因为第一种在a为空的时候不会报空指针的错误 */ public class EqualsTest { public static void main(String[] args){ String a = "abc"; System.out.println("abc".equals(a)); System.out.println(a.equals("abc")); } }
输出结果如下:
true
true
Process finished with exit code 0
当a为空的时候,测试结果如下:
package study.base_study; /** * Created by Taoyongpan on 2017/11/24. * "abc".equals(a),a.equals("abc")在工程中一般使用哪个,Why? * 在工程中我们一般使用第一个,因为第一种在a为空的时候不会报空指针的错误 */ public class EqualsTest { public static void main(String[] args){ String a = null; System.out.println("abc".equals(a)); System.out.println(a.equals("abc")); } }
结果如下:
Exception in thread "main" java.lang.NullPointerException
false
at study.base_study.EqualsTest.main(EqualsTest.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Process finished with exit code 1
综上所述:
我们在真正的工程中尽量使用第一种的写法,即“a”.equals(a);
相关推荐
这个名为`buffer-equals-master`的压缩包很可能就是一个这样的库,它提供了`equals()`函数的实现,使得在旧版Node.js中也能使用类似于`Buffer.prototype.equals()`的功能。 具体实现上,`equals()`方法通常会遍历两...
在上面的示例代码中,我们可以看到,a和b都是常量,它们都是指向常量存储区中的常量"hello",所以无论内容还是内存地址都是一样的,因此a==b以及a.equals(b)都是true;c和d都是变量,他们都是new出来的对象,里面存在...
2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2....
解决 ERROR s.d.s.web.plugins.DocumentationPluginsBootstrapper:98 - Unable to scan documentation context default ... at springfox.documentation.schema.Example.equals(Example.java:131)
Java 中 String.equals 和 == 的比较 Java 中 String.equals 和 == 的比较是 Java 编程语言中一个常见的概念,但是一些初学者容易混淆这两个概念。下面我们将详细介绍 Java 中 String.equals 和 == 的比较。 ...
这意味着`stu1.equals(stu2)`将比较`stu1`和`stu2`的引用地址,而不是`Student`对象的属性。由于`stu1`和`stu2`是两个独立的对象,它们的引用地址不同,所以`stu1.equals(stu2)`的结果是`false`。 至于`String name...
著名的《算法加数据结构等于程序》,1976年Wirth编著。所有软件开发人员都应该阅读。DJVU版本。
在数据访问层中,正确实现`equals()`和`hashCode()`对于数据库实体类尤其重要,因为它直接影响到数据的查找、比较和存储效率。而压缩包"DAL.rar"可能包含了关于如何在数据访问层中有效使用`equals()`方法的实例、...
对称性是指 `a.equals(b)` 和 `b.equals(a)` 应返回相同结果;传递性是指如果 `a.equals(b)` 且 `b.equals(c)`,那么 `a.equals(c)` 应为 `true`;一致性是指多次调用 `equals()` 对于不变的对象,应始终返回相同...
计算机后端-Java-Java核心基础-第14章 面向对象06 13. equals()的使用.avi
Java 中的equals和==的区别 Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数类型、浮点数类型、字符类型、布尔类型等,共有八种;而引用数据类型则包括 ...
3. 如果`o.equals(o1)`和`o.equals(o2)`都返回`true`,那么`o1.equals(o2)`也应该返回`true`(传递性)。 4. 如果`o.equals(o1)`首次返回`true`,在对象未变的情况下,之后的调用也应返回`true`(一致性)。 5. `o....
计算机后端-Java-Java核心基础-第14章 面向对象06 17. equals()练习2:代码实现.avi
计算机后端-Java-Java核心基础-第14章 面向对象06 16. equals()练习1:代码实现.avi
在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...
在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别对于编写出正确、健壮的代码至关重要。 首先,`==`运算符用于基本类型(如int, char, boolean)的比较,...
如果a和b在任何时候都相等,那么它们始终相等;如果a不等于b,那么在任何时刻a.equals(b)都不应为真。 3. `hashCode()`方法应尽可能产生不同的哈希码以减少哈希冲突。 举个例子,考虑一个名为Person的类,包含name...
在C#编程语言中,“==”运算符和“.Equals()”方法是两种常见的用于比较对象是否相等的方式,但它们之间存在着重要的差异。理解这些差异对于编写高效且准确的代码至关重要。 首先,让我们来探讨“==”运算符。在C#...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象的基本组成部分,它们在很多场景下都发挥着至关重要的作用。这两个方法与对象的相等性比较和哈希表(如HashMap、HashSet)的运作紧密相关。这篇博客将深入...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是两个非常重要的成员,尤其是在处理对象比较和集合操作时。这两个方法通常与`Object`类中的默认实现相关联,但为了在实际开发中实现正确的对象比较和哈希表操作...