String赋值方式
public class Test {public static void main(String[] args) {//String的赋值方式String name1="Tom";int identity = System.identityHashCode(name1);// System.identityHashCode(name1)得到name1的地址System.out.println("name1地址:"+identity);String name2="Tom";identity = System.identityHashCode(name2);System.out.println("name2地址:"+identity);System.out.println(name1==name2);//结果为true,"=="比的是地址,name1和name2是在常量池里面,地址相同String name3=new String("Kate");identity = System.identityHashCode(name3);System.out.println("name3地址:"+identity);String name4=new String("Kate");identity = System.identityHashCode(name4);System.out.println("name4地址:"+identity);System.out.println(name3==name4);//结果false,"=="比的是地址,没创造一个新的对象会在堆里面产生一个的地址,name3和name4地址不同}}
运行结果:
由运行结果可以看出,采用直接赋值的方法,所得地址是相同的,而采用构造方法实现赋值,每次赋值会创造一个新的对象,地址是不同的