首页 > 学院 > 开发设计 > 正文

== 和 equals 的区别

2019-11-08 20:03:27
字体:
来源:转载
供稿:网友

== 和 equals 的区别

package sun.rain.amazing;import org.junit.Test;/** * ==和equals的区别 * 这里采用的单元测试包是 junit-4.8.jar * @author sunRainAmazing */public class StringEquals { /* 1、== 和 equals 的区别 ==比较的是基本类型的值是否相等,比较引用类型是否为同一个对象(同一个引用地址) equals 是比较两个对象是否在内容 逻辑上相等 或是否为同一个对象 最常见的应用场景为 String字符串的比较或者是对象逻辑内容的比较 见博客http://blog.csdn.net/xcysuccess3/article/details/6557771 */ @Test public void testEquals(){ String str0 = "hello"; String str1 = "hello"; String str2 = "World"; String str3 = str1+str2; String str4 = "hello"+"World"; String str5 = "helloWorld"; String str6 = new String("helloWorld"); System.out.PRintln(str0==str1);//true System.out.println(str3==str4);//false System.out.println(str3.equals(str4));//true System.out.println(str4==str5);//true System.out.println(str5==str6);//false /** * 总结: * 1.关于String字符串 是有一个缓存池的作用 * 当创建一个简写的String对象(没有通过new关键字)时, * 首先去缓存池中去找是否存在这个字符串, * 若存在,直接将这个存在的字符串对象的引用地址给当前字符串变量, * 若不存在,则创建一个新的字符串的对象 * 因此,对于 String str ="abc"; * 这条语句有可能创建了一个引用对象,或者是两个对象(一个引用对象,一个真实内容的对象) * * 2.因为String类重写了java中Object类中的equals方法, * 所以可以直接使用判断其内容是否相等 * 若是其他普通自定义对象则需要重写此方法,进行自定义相等的条件,来判断是否相等 * * 3.对于new出来的String对象,是每new一个内存里生成一个, * 也就是说其允许存在内容相同的重复对象,但是其物理内存地址不同。 * 而String str ="abc"这种形式是不允许存在内容相同的重复对象, * 只要内存已经存在了,就不再新生成,而是把新的引用指向原来的对象。 * * 4.String 类型是 final修饰的,一旦创建,不能被继承,和被修改 * public final class String * extends Object * implements Serializable, Comparable<String>, CharSequence * */ }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表