二元运算符“==”与方法equals()

    xiaoxiao2021-03-29  27

    运算符“==”

    1.“==”一般应用于基本数据类型(四类八种)比较 2.“==”比较对象,比较的是他们在内存中存放的地址。

    程序1 String s1 = "Monday"; String s2 = "Monday"; System.out.println(s1 == s2);

    显然,上述结果应为 true

    方法equals()

    1.Java中所有的类均extends Object,在object基类中定义了一个equals()方法,该方法的初始行为是比较对象的内存地址。但是,在一些类库中,该方法已经被覆盖 如String,比较的不再是堆内存中存放的地址,而是字符串具体内容。

    程序2 String s1 = "Monday"; String s2 = new String("Monday"); System.out.println(s1 ==s2); System.out.println(s1.equals(s2));

    上述结果应为 false true

    原因:字符串缓冲池的使用 程序1中,使用s2=“Monday”,此时程序首先会在这个String缓冲池中寻找相同值的对象,显然这里s1先被放到池中,故在s2创建的时候,将s2引用s1所引用的对象”Monday”。 而程序2 中,使用了new操作符,会新开辟地址,s1和s2值相同,但是位置不同. 因此System.out.println(s1 ==s2);为false System.out.println(s1.equals(s2));为true

    null、“(空格)”和 “”

    String str1 = null; str引用为空,没有被实例化 String str2 = “”; str引用一个空串,已经实例化,内容为空 String str3 = ” “; str引用为空格,已经实例化,内容为空格

    1.null判断 一个字符变量是否是null ,使用 逻辑判断 等于(==)与null对象比较,空对象不能使用诸如equals(), isEmpty()等对象方法,因为它未被实例化。equals方法比较的是两个对象的内容是否相同,因此,对象必须有指向的空间,即不能为null,否则,会抛出异常。

    2.判断空值可有三种方式: equals方法比较的是两个对象的内容是否相同,可用表达语句:k.equals(“”) ; length()方法是查看某个字符串对象的字符个数,可用表达式判断:k.length() == 0 ; isEmpty()方法是判断某个字符串对象字符个数时候为0,可用表达式判断:k.isEmpty()

    3.空格判断 空格内容为一个空格,虽然在输出显示时候和空值一样,都是空的,但是在系统里面的内存机制不一样的,空格字符串表示该对象的内存空间里面有内容,是空格,字符个数是1 equals(” “);

    转载请注明原文地址: https://ju.6miu.com/read-664850.html

    最新回复(0)