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==b 28 a equals b 29 *//* 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!=b 55 a equals b 56 *//* 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!=b 86 a equals b 87 但是在 88 http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html#undefined 89 中是:说什么内存缓冲池。可是我见不到这种效果 90 s1 == s2 91 s1 equals s2 92 */ 93 }
还有有几点疑惑的东西:
1.怎么我用了intern()之后还是 a!=b;
2.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
时间: 2024-10-13 00:15:49