java中 和equals java里面的equals
转载
java虚拟机里有一个区域叫方法区,方法区里有一个常量区,如果你是String str = "abc",虚拟机认为“abc”是常量,放在常量区。下次你再定义String otherStr = “abc", 虚拟机并不新创建任何东西,而是连到刚才常量区里的”abc“,所以不管是equals()还是==,都相等,因为值和地址都相等。
另外还有一个区域叫堆,如果String str = new String("abc"), 虚拟机会创建对象放到堆里,再String otherStr = new String("abc"),会在堆里放两个对象。所以==就是false,因为两个对象地址不同。
equals():比较两个对象所指向的内容是否相等。
——————————————————————————
package Number;
class V{}
public class Test3{
public static void main(String[] args){// Cannot make a static reference to the non-static field b
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
V v1 = new V();
V v2 = new V();
System.out.println(s1.equals(s2));
System.out.println(s1 == s2);
System.out.println("*************");
System.out.println(s3.equals(s4));
System.out.println(s3 == s4);
System.out.println("*************");
System.out.println(v1.equals(v2));
System.out.println(v1 == v2);
}
}
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。