“==”和”equals的比较
1.Object类中的equals方法和==是一样的,都是比较是否是同一个对象(内存地址值是否一致)没有区别,只要是new了两个对象,肯定不相等
2.String,Integer类等一些包装类,是重写了equals方法,才使得equals(对象的值)和==(对象的内存地址值,只要new了两个就不同)不同
3、string是一个特殊的引用类型。对于两个字符串的比较,不管是 == 和 Equals 这两者比较的都是字符串是否相同;
*注意:String str1="我是";
String str2="中国人";
String str3="我是中国人";
String str4="我是中国人";
String str5=new String("我是中国人");
String str6=new String("我是中国人");
System.out.println((str1+str2)==str3);//false
System.out.println(str3==str4);//true
注意:“我是中国人”在字符串常量池就存在一份,内存地址值只有一个
System.out.println(str3==str5);//false
注意:new的“我是中国人”在堆内存中,所以地址值不一样,只是内容一样而已
System.out.println(str5==str6);//false
特别注意:String str1="java";
String str2="java";
String str3=new String("java");
问内存中有几个对象:2个
String str4=new String("Java");
问内存中有几个对象:3个
4.普通的包装类(不是new的), == 和 Equals 这两者比较的都是值是否相同
5.基本数据类型只能用==,比较的是两个变量的值是否相等
public class Test {
public static void main(String[] args) {
/*基本数据类型的比较
* 1.只可以使用"=="
* 2.比较的是变量的值是否相等
*/
int i=2;
int j=2;
System.out.println(i==j);
//System.out.println(i.equals(j));//编译错误
/*包装类型的比较
* 1."=="和"equals"都可以使用
* 2.对于普通包装类而言:"=="和"equals"都是是比较值是否相等;
* 3.对于new类型的包装类而言:"=="是比较两个变量的地址值是否相同;"equals"是比较两个变量是否是同一对象(内容是否 相同)
*
*/
Integer i1=2;
Integer i2=2;
Integer i3=new Integer(3);
Integer i4=new Integer(3);
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
System.out.println(i3==i4);//false
System.out.println(i3.equals(i4));
//引用类型中的String类型的比较
String str1="我是";
String str2="中国人";
String str3="我是中国人";
String str4="我是中国人";
System.out.println("引用类型中的String类型的比较");
System.out.println((str1+str2)==str3);//false
System.out.println((str1+str2).equals(str3));
System.out.println(str3==str4);
System.out.println(new String("中国人")==new String("中国人"));//false
System.out.println(str3.equals(str4));
System.out.println(new String("中国人").equals(new String("中国人")));
//一般引用数据类型的比较
Student stu1=new Student("关羽");
Student stu2=new Student("关羽");
Student stu3 = stu1;
System.out.println(stu1==stu2);//false
System.out.println(stu1.equals(stu2));//false
System.out.println(stu3==stu1);
System.out.println(stu3.equals(stu1));
System.out.println(stu3==stu2);//false
System.out.println(stu3.equals(stu2));//false
}
}
浙公网安备 33010602011771号