第3题-==&equals

Posted dingwen_blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3题-==&equals相关的知识,希望对你有一定的参考价值。

==

比较的是栈中的值,基本数据类型比较的是变量值,引用数据类型比较的是堆中内存对象的地址。(栈中存储地址)。

equals

基类Object类的方法,默认就是==,通常会进行重写。

// Object
public boolean equals(Object obj) {
    return (this == obj);
}

String中的equals

  • 相等情况
    • 栈中存储的堆内存对象地址信息一致(同一个对象)
    • 不论地址信息是否一致,只要字符串本身内容相等
// String
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
								i++;
          	}
            return true;
        }
		}
    return false;
}
// demo

public class StringDemo {
      public static void main(String args[]) {
        String str1 = "Hello";
				String str2 = new String("Hello");
				String str3 = str2; // 引用传递
        System.out.println(str1 == str2); // false 						   				 			 				 							System.out.println(str1 == str3); // false 
        System.out.println(str2 == str3); // true 
        System.out.println(str1.equals(str2)); // true 
        System.out.println(str1.equals(str3)); // true 
        System.out.println(str2.equals(str3)); // true
			}
}

以上是关于第3题-==&equals的主要内容,如果未能解决你的问题,请参考以下文章

如何重构这个 Java 代码片段

Java面试题6 判断下面代码是否有问题

Java开发常见基础题大全

第四周课程总结&试验报告

JavaScript笔试题(js高级代码片段)

java程序分析题?