2.==和equals的区别
== 比较的是值
比较基本的数据类型,比较的是数值
比较引用类型:比较引用指向的值(地址)
==比较的是栈内存中存放的对象的堆内存地址,判断两个对象的地址是否相同需要判断是否指向同一个对象,是真正意义上的指针操作
equals
默认比较两个对象的内容是否相同,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的任然是Object类中的方法,而Object中的equals方法返回的却是**==**的判断
代码案例:
String s1 = new String("zs");
String s2 = new String("zs");
System.out.println(s1 == s2); //false new String()会开辟新的内存空间
String s3 = "zs";
String s4 = "zs";
System.out.println(s3 == s4); //true s3和s4指向同一个引用
System.out.println(s3 == s1); //false
String s5 = "zszs";
String s6 = s3+s4;
System.out.println(s5 == s6); //false
final String s7 = "zs";
final String s8 = "zs";
String s9 = s7+s8; //true final修饰的变量为常量
System.out.println(s5 == s9);
final String s10 = s3+s4; //false
System.out.println(s5 == s10);