package Experience;
public class Stringequal {
public static void main(String[] args){
//除了byte short int long double float char boolean的基本类型
//还有类,数组,接口三种引用数据类型,String属于引用数据类型中的类类型
//引用数据类型的形参改变,也会影响实际参数的改变
//a和b在栈内存有不同的地址,但是指向堆内存的内容都是相同的,都是数组的地址
char[] ch={'a','b','c'};
String a=new String(ch);
String b=new String(ch);
System.out.println(a);
//c和d在栈内存中是相同的地址,指向堆内存的内容也相同
//所以这两部分的意义是不一样的
String c="abc";
String d="abc";
System.out.println(c);
//==比较,对于基本数据类型,是比较内容是否相同
//对于引用数据类型,是比较地址是否相同
//比较字符串对象地址是否相同
//a和b是两个字符串对象,在栈内存有不同的地址,所以不一样
System.out.println(a==b);
System.out.println(a==c);
//c和d都是直接赋值的,内容也一样,所以地址是相同的
System.out.println(c==d);
System.out.println("-----------------------------------------");
//比较字符串内容是否相同,用equals方法 public boolean equals(Object anObject)
System.out.println(a.equals(b));
System.out.println(a.equals(c));
System.out.println(c.equals(d));
}
}