1 package equals; 2 3 /*public class equals { 4 //基本数据类型跟引用数据类型(复合数据类型), 5 //在引用数据类型中equals方法被重写,一般用来比较内存地址 6 public static void main(String args[]) 7 { 8 String a="zengzhiwei"; 9 String b="zengzhiwei";//指向同一个引用10 if(a==b)//比较内存地址11 {12 System.out.println("a==b"); 13 }14 else{15 System.out.println("a!=b");16 }17 if(a.equals(b))//比较值18 {19 System.out.println("a equals b");20 }21 else{22 System.out.println("a not equals b");23 }24 25 }26 *//**27 * a==b28 a equals b29 *//*30 31 }*/32 /*public class equals{33 public static void main(String args[])34 {35 String a="zengzhiwei";36 String b=new String("zengzhiwei");37 if(a==b)//比较内存地址38 {39 System.out.println("a==b"); 40 }41 else{42 System.out.println("a!=b");43 }44 if(a.equals(b))//比较值45 {46 System.out.println("a equals b");47 }48 else{49 System.out.println("a not equals b");50 }51 52 }53 *//**54 * a!=b55 a equals b56 *//*57 58 59 }*/60 //对于复合型数据,如果没有覆盖(重写)equals()方法的话还是是比较的“内存地址”61 public class equals{62 public static void main(String args[])63 {64 String a="zengzhiwei";65 String b=new String("zengzhiwei");66 b.intern();//检查字符串池里是否存在"zengzhiwei"这么一个字符串,如果存在,就返回池里的字符串;67 //如果不存在,该方法会 把"zengzhiwei"添加到字符串池中,然后再返回它的引用。68 if(a==b)//比较内存地69 {70 System.out.println("a==b"); 71 }72 else{73 System.out.println("a!=b");74 }75 if(a.equals(b))//比较值76 {77 System.out.println("a equals b");78 }79 else{80 System.out.println("a not equals b");81 }82 83 }84 /***85 * a!=b86 a equals b87 但是在88 http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html#undefined89 中是:说什么内存缓冲池。可是我见不到这种效果90 s1 == s291 s1 equals s292 */93 }
还有有几点疑惑的东西:
1.怎么我用了intern()之后还是 a!=b;
2.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean