java中两种比较方式==和equals()

    xiaoxiao2023-09-28  151

    ##两种比较 ==和equals()方法 ##

    Integer s = new Integer(9) Integer t = new Integer(9) Long u = new Long(9)

    (一)

    ==用来判断两个变量是否相等 (1)两个变量为基本数据类型,则比较值的大小;

    int a =1 ,int b=1

    a == b ,true

    (2)两个变量为引用数据类型,则比较地址是否相同

    String str = new String("hello");

    str == "hello",false一个为常量池中的hello,str为堆内存中的。

    Integer类型和Long类型,两种不同类型的引用不能进行**==**比较。

    (二)

    ***equals方法 ***

    public boolean equals(Object obj){ if(obj instance Integer){ return value = ((Integer) obj).intValue(); } return false; }

    new String("hello").equals("hello"),true;判断字符串内容是否相同。

    new Integer()和int比较,Integer会自动拆箱, ==和equals()均为true

    s.equals(9),true

    s==9,true

    new Integr()和new Integr(),比较 ==为false,equals()为ture

    s==t,false

    s.equals(t),true 同理 s.equals(new Integer(9)),true

    Integer和Integer比较,由于直接赋值会自动装箱。

    Integer a =1000 ,Integer b = 1000

    Integer c = 100 ,Integer d = 100

    (1)值在[-128,127]之间时,不会创建新的Integer对象,而是直接从缓存IntegerCache中获取创建好的Integer对象

    c.equals(d)结果为true

    (2)大于这个区间,则会new新的Integer

    a.equals(b)比较结果为false 5.equlas()比较值内容,前提是,两个值内容是同一个类型(一个String,一个char不可比较内容)

    最新回复(0)