`

"a".equals(a)和a.equals("a")

    博客分类:
  • Java
阅读更多

问:“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);

分享到:
评论

相关推荐

    Node.js-Node.js0.12buffer.equals()ponyfill

    这个名为`buffer-equals-master`的压缩包很可能就是一个这样的库,它提供了`equals()`函数的实现,使得在旧版Node.js中也能使用类似于`Buffer.prototype.equals()`的功能。 具体实现上,`equals()`方法通常会遍历两...

    Java中Object.equals和String.equals的区别详解

    在上面的示例代码中,我们可以看到,a和b都是常量,它们都是指向常量存储区中的常量"hello",所以无论内容还是内存地址都是一样的,因此a==b以及a.equals(b)都是true;c和d都是变量,他们都是new出来的对象,里面存在...

    2.javaequals()方法.zip

    2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2....

    springfox-core-3.0.1-SNAPSHOT.jar

    解决 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 中 String.equals 和 == 的比较是 Java 编程语言中一个常见的概念,但是一些初学者容易混淆这两个概念。下面我们将详细介绍 Java 中 String.equals 和 == 的比较。 ...

    equals问题经典

    这意味着`stu1.equals(stu2)`将比较`stu1`和`stu2`的引用地址,而不是`Student`对象的属性。由于`stu1`和`stu2`是两个独立的对象,它们的引用地址不同,所以`stu1.equals(stu2)`的结果是`false`。 至于`String name...

    Algorithms.Plus.Data.Structure.Equals.Programs_Wirth

    著名的《算法加数据结构等于程序》,1976年Wirth编著。所有软件开发人员都应该阅读。DJVU版本。

    DAL.rar_equals

    在数据访问层中,正确实现`equals()`和`hashCode()`对于数据库实体类尤其重要,因为它直接影响到数据的查找、比较和存储效率。而压缩包"DAL.rar"可能包含了关于如何在数据访问层中有效使用`equals()`方法的实例、...

    hashcode()和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-Java核心基础-第14章 面向对象06 13. equals()的使用.avi

    java 资料 equals 与== 的区别

    Java 中的equals和==的区别 Java 是一种面向对象的编程语言,其中有两种数据类型:基本数据类型和引用数据类型。基本数据类型包括整数类型、浮点数类型、字符类型、布尔类型等,共有八种;而引用数据类型则包括 ...

    Java语言深入_equals

    3. 如果`o.equals(o1)`和`o.equals(o2)`都返回`true`,那么`o1.equals(o2)`也应该返回`true`(传递性)。 4. 如果`o.equals(o1)`首次返回`true`,在对象未变的情况下,之后的调用也应返回`true`(一致性)。 5. `o....

    计算机后端-Java-Java核心基础-第14章 面向对象06 16. equals()练习1:代码实现.avi

    计算机后端-Java-Java核心基础-第14章 面向对象06 16. equals()练习1:代码实现.avi

    计算机后端-Java-Java核心基础-第14章 面向对象06 17. equals()练习2:代码实现.avi

    计算机后端-Java-Java核心基础-第14章 面向对象06 17. equals()练习2:代码实现.avi

    java中的==和equals()方法1

    在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...

    java中equals()函数的用法 equals和==的区别

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象是否相等的关键概念。理解它们的区别对于编写出正确、健壮的代码至关重要。 首先,`==`运算符用于基本类型(如int, char, boolean)的比较,...

    java中hashcode()和equals()的详解

    如果a和b在任何时候都相等,那么它们始终相等;如果a不等于b,那么在任何时刻a.equals(b)都不应为真。 3. `hashCode()`方法应尽可能产生不同的哈希码以减少哈希冲突。 举个例子,考虑一个名为Person的类,包含name...

    “ ==”和.Equals()有什么区别?

    在C#编程语言中,“==”运算符和“.Equals()”方法是两种常见的用于比较对象是否相等的方式,但它们之间存在着重要的差异。理解这些差异对于编写高效且准确的代码至关重要。 首先,让我们来探讨“==”运算符。在C#...

    Java_重写equals()和hashCode()

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象的基本组成部分,它们在很多场景下都发挥着至关重要的作用。这两个方法与对象的相等性比较和哈希表(如HashMap、HashSet)的运作紧密相关。这篇博客将深入...

    equals与hashCode在实际开发中的重写写法

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是两个非常重要的成员,尤其是在处理对象比较和集合操作时。这两个方法通常与`Object`类中的默认实现相关联,但为了在实际开发中实现正确的对象比较和哈希表操作...

Global site tag (gtag.js) - Google Analytics