Java 中 == 与 equals比较

小菜同学的第一篇博客开始啦

一. ==

1.应用在基础数据类型当中,比较两个数据的值是否相等。
2.应用在对象类型当中,比较内存地址是否相等。
二.equals
只应用在对象类型当中,在Object类中比较内存地址是否相等。
但是,在String,Byte,Short,Character,Integer,Long,Float,Double,Boolean,Date类中重写了equals方法,比较其值是否相等。
//==基础数据类型,比较两值是否相等
int aa = 1;
int bb = 1;
System.out.println(aa == bb);//true

//==应用与对象类型中,比较内存地址是否相等
String str1 = new String("hello");
String str2 = new String("hello");
String c = "hello";
String d = "hello";
System.out.println(str1 == str2);//false
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(c));//true
System.out.println(str1 == c);//false
System.out.println(d.equals(c));//true
System.out.println(d == c);//true
//d==c 为true是因为在给c d赋值的时候,就是使用字符串字面量(写死的值),在程序编译的时候,这种字面量直接放入class文件的常量池,
//实现复用,所以d c就是一个地址,存储与常量池,所以相等

原文地址:https://www.cnblogs.com/meihao99/p/11691657.html