“==”和”equals的比较

1.Object类中的equals方法和==是一样的,都是比较是否是同一个对象(内存地址值是否一致)没有区别,只要是new了两个对象,肯定不相等

2.StringInteger类等一些包装类,是重写了equals方法,才使得equals(对象的值)和==(对象的内存地址值,只要new了两个就不同)不同

3string是一个特殊的引用类型。对于两个字符串的比较,不管是 == 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

 

 

}

}

posted on 2017-03-30 12:58  码神了,不解释  阅读(90)  评论(0)    收藏  举报

导航