equals和==有什么区别

    xiaoxiao2025-01-10  12

    equals和==有什么区别?

    ==

    == 是用来比较值是否相同的这个值可以是基本类型的值,或者是引用类型的地址

    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

    总结:可以看出,==比较的是值得大小,基本类型的变量比较的是值引用类型的变量比较的是内存中的地址。

    equeals

    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方法重写了,比较的所指向的对象的内容

    特殊的String类型

    public class Strin { public static void main(String[] args) { String a="abc"; String b="abc"; String c=new String("abc"); System.out.println(a==b); System.out.println(a.equals(b)); System.out.println(a==c); System.out.println(a.equals(c)); } } true true false true

    总结:Stirng是一种特殊的类型,java中不用new String就能够创建字符串对象String s= ”abc",存放在方法区中的运行时常量池中,再次执行String c=“abc"的时候,首先会在常量池中查找有没有”abc"字符串,如果有的话将引用变量c指向abc,两个变量指向的是同一个字符串,如果没有将会在常量池中重新创建一个"abc“字符串对象,如果是String d=new String(”abc")这种形式,会直接创建一个新的字符串对象,引用变量c和d指向的地址不同,== 为false,equals为true

    最新回复(0)