== 是用来比较值是否相同的这个值可以是基本类型的值,或者是引用类型的地址
public class Main { public static void main(String[] args) { int n=3; int m=3; System.out.println(n==m); String str = new String("hello"); String str1 = new String("hello"); String str2 = new String("hello"); System.out.println(str1==str2); str1 = str; str2 = str; System.out.println(str1==str2); } } 对应的结果是true false true总结:可以看出,==比较的是值得大小,基本类型的变量比较的是值引用类型的变量比较的是内存中的地址。
equlas比较两个对象的内容是否相同,equals中不能作用基本数据类的变量 浮点型:float(4 byte), double(8 byte) 整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte) 字符型: char(2 byte) 布尔型: boolean
总结:如果类没有对equals方法重写,比较的是引用类型的变量所指向的对象地址,如果对equals方法重写了,比较的所指向的对象的内容
总结:Stirng是一种特殊的类型,java中不用new String就能够创建字符串对象String s= ”abc",存放在方法区中的运行时常量池中,再次执行String c=“abc"的时候,首先会在常量池中查找有没有”abc"字符串,如果有的话将引用变量c指向abc,两个变量指向的是同一个字符串,如果没有将会在常量池中重新创建一个"abc“字符串对象,如果是String d=new String(”abc")这种形式,会直接创建一个新的字符串对象,引用变量c和d指向的地址不同,== 为false,equals为true