/**
* ==和equals的区别
* @author Administrator
*
*/
public class Test {
public static void main(String[] args){
/*两个输出的结果都是true
问题在于String类型的变量,String是放在常量池里的。
一开始我们定义一个a,a指向常量池里的一个aa,后面又定义了一个b,它也指向aa。因为String比较特殊,如果有相同的字符串,
他就不会再去建一个新的String对象了,
所以他们指向同一块内存,当然地址也就相等了*/
String m="aa";
String n="aa";
boolean n1=m==n;//==基本类型比较值,类类型比较地址
boolean n2=m.equals(n);//equals:基本类型不能用,类类型比较时不确定
System.out.println("m:n "+n1);
System.out.println("m:n "+n2);
/*对于基本数据类型,==比较值,对于对象,比较内存地址。
equals方法是需要用户重写的,它的行为由我们自己定义,想让它返回什么就返回什么,方法可以重写,想让它比较什么就比较什么。
而之所以我们会认为它比较的是内容,是因为现在jdk中的类重写这个方法,比较的都是内容(如String型:name.equals("王二"))。
*/
int a=10;
int b=10;
Integer c=10;
Integer d=10;
Integer e=new Integer(10);
Integer f=new Integer(10);
boolean n3=a==b;
boolean n4=a==c;
boolean n5=a==e;
boolean n6=c==d;
boolean n7=c==e;
boolean n8=e==f;
System.out.println("a:b "+n3);
System.out.println("a:c "+n4);
System.out.println("a:e "+n5);
System.out.println("c:d "+n6);
System.out.println("c:e "+n7);
System.out.println("e:f "+n8);
}
}
输出的结果是:
m:n true
m:n true
a:b true
a:c true
a:e true
c:d true
c:e false
e:f false
c.equals(d) true
c.equals(e) true
e.equals(f) true
* ==和equals的区别
* @author Administrator
*
*/
public class Test {
public static void main(String[] args){
/*两个输出的结果都是true
问题在于String类型的变量,String是放在常量池里的。
一开始我们定义一个a,a指向常量池里的一个aa,后面又定义了一个b,它也指向aa。因为String比较特殊,如果有相同的字符串,
他就不会再去建一个新的String对象了,
所以他们指向同一块内存,当然地址也就相等了*/
String m="aa";
String n="aa";
boolean n1=m==n;//==基本类型比较值,类类型比较地址
boolean n2=m.equals(n);//equals:基本类型不能用,类类型比较时不确定
System.out.println("m:n "+n1);
System.out.println("m:n "+n2);
/*对于基本数据类型,==比较值,对于对象,比较内存地址。
equals方法是需要用户重写的,它的行为由我们自己定义,想让它返回什么就返回什么,方法可以重写,想让它比较什么就比较什么。
而之所以我们会认为它比较的是内容,是因为现在jdk中的类重写这个方法,比较的都是内容(如String型:name.equals("王二"))。
*/
int a=10;
int b=10;
Integer c=10;
Integer d=10;
Integer e=new Integer(10);
Integer f=new Integer(10);
boolean n3=a==b;
boolean n4=a==c;
boolean n5=a==e;
boolean n6=c==d;
boolean n7=c==e;
boolean n8=e==f;
System.out.println("a:b "+n3);
System.out.println("a:c "+n4);
System.out.println("a:e "+n5);
System.out.println("c:d "+n6);
System.out.println("c:e "+n7);
System.out.println("e:f "+n8);
}
}
输出的结果是:
m:n true
m:n true
a:b true
a:c true
a:e true
c:d true
c:e false
e:f false
c.equals(d) true
c.equals(e) true
e.equals(f) true