java中 == equal到底有什么区别
迷茫
迷茫 2017-04-18 10:25:40
0
3
468

这个问题可能比较简单,但我真的被搞糊涂了
问题还是由String比较引发的
网上看都说 == 是比较地址,然后String类中重写了equal的方法使其能够比较内容
那么问题来了
如果两个int值相等的进行比较,为什么输出的是true

public class Test{
    public static void main(String[] args)
    {
        int i = 5;
        int b = 5;
        Integer c = new Integer(5);
        if(i == b)
        {
            System.out.println("ok");
        }

        if(i == c)
        {
            System.out.println("ok");
        }
    }
}

结果的话理所当然都是输出ok,但是两个int 的地址肯定不相同,请高人点化下

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(3)
阿神

Untuk objek == sentiasa alamat perbandingan. Jika anda mempunyai int di satu sisi dan Integer di sisi yang lain, anda boleh menukar Integer menjadi int dan membandingkan nilainya. Ini dipanggil unboxing automatik.

伊谢尔伦

1.int ialah salah satu daripada 8 jenis data asas, yang hanya menyimpan nilai berangka
2.Integer ialah jenis data yang kompleks, yang bermaksud ia ialah kelas

Berikut ialah objek Integer yang dicipta Objek mempunyai alamat dan nilai yang disimpan di alamatnya == digunakan untuk membandingkan alamat, dan sama digunakan untuk membandingkan nilai. Objek dicipta pada timbunan, dan rujukannya menunjuk ke alamatnya pada timbunan. Semua jenis data asas, untuk meningkatkan kecekapan pengiraan dan sebab lain, menunjuk kepada nilai mudah, dan kebanyakan lokasinya berada pada memori tindanan, kecuali tatasusunan jenis data asas. Ini sedikit bertentangan dengan prinsip berorientasikan objek Ia hanya menunjuk kepada nilai berangka, jadi apa yang boleh dibandingkan hanyalah perbandingan nilai berangka tulen.

Ty80

Integer akan cache -128~127, jadi keputusan membandingkan Integer, sama dan == dalam julat ini adalah sama.
Situasi khusus jdk kod sumber Integer.IntegerCache

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!