等于运算符与equals方法的区别:
package com.test;
public class TestTwo{
public static void main(String[] args){
String a="我爱中国";
String b="我爱中国";
String c=new String("我爱中国");
String d=new String("我爱中国");
System.out.println("a与b的内容是否相同:"+(a.equals(b)));
System.out.println("a与c的内容是否相同:"+(a.equals(c)));
System.out.println("a与b的地址是否相同:"+(a==b));
System.out.println("a与c的地址是否相同:"+(a==c));
System.out.println("c与d的地址是否相同"+(c==d));
//答案分别是 true true true false false
}
}
内存有 栈、常量池、堆
栈:用来存类的引用
常量池:可存常量
堆:用来存new 的对象
通过此操作内存中:
栈:a、b、c、d
常量池: “我爱中国”
堆: new String(“我爱中国”) new String(“我爱中国”)
指向:a和b都指向常量池中的"我爱中国"
c和d分别指向堆中的俩个不同的地址空间