Java中equals与==的使用
平时开发代码中做比较的地方,有些时候equals()方法和==用的不太恰当,所以今天抽空研究了一下
首先上测试图
①直接定义String类型变量a,b,都赋值为a
②直接定义String类型对象c,d,都赋值为a
比较二者之前是否相等,一开始觉得图中②应该为false,但是执行后发现竟然为true,原因如下图:
结论:
①判断值是否相等用equals()(除基本数据类型:byte,short,int,long,double,float,char,boolean)
②判断是否为同一对象(内存地址相同)用 ==
今日收获:
①String是以字节数组的形式进行存储(char[]);
②String的equals()方法不同于Object的equals()方法,这也是String特有的,String的equals()会先对比内存地址是否相同,若相同直接返回,若不相同,则会继续对比字节数组里的每个字符是否相等,返回最终结果;Object的equals()方法只会对比内存地址是否相同;
③记忆性的东西
注明:文章中的表述如有问题,欢迎大家指教!
文章中文字图片引自博客:https://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html