Fork me on GitHub

自己写的demo---equals()跟==的区别

 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 

posted @ 2015-11-19 09:26  ZZZZW  阅读(381)  评论(0编辑  收藏  举报
AmazingCounters.com