1. 程式人生 > >java相等比較:==與equals

java相等比較:==與equals

字符串 相同 bcd 速度 指向 nbsp 常量 覆寫 方法

比較分兩種:變量之間的比較,變量與值的比較,

引用類型值分兩種:如: "abcd" , new String("abcd"); “abcd”相當於a=”abcd”中的a, new String("abcd")相當於b= new String("abcd")中的b;

new分配新的內存地址

1.基本類型變量一律用==;因為基本數據類型沒有equal方法

2.引用類型變量:(引用類型:類,接口,數組)

==:比較的是他們在內存中的地址,即引用相等

equals:String Integer等比較的是值相等 其他未覆寫equals方法比較的則是引用相等

備註:

int a = 3;

int b = 3;

int c = 4;

由於基本數據類型大小可知,生存周期可知(定義在方法中,方法退出之後自動銷毀),所以出於追求速度,存放在棧中(僅僅指局部變量),當定義了字段3給a之後,再定義b時,首先找有沒有以3為字段的地址,如果有,讓b也指向3,也就是說a和b的地址是一樣的,上兩句代碼也就等同於int b = a; 當定義c時,發現沒有字段4,那麽重新開辟存放字段4的地址,讓引用c指向字段4。String (如果一個字符串是 String s = "abc";它放在棧裏,如果一個字符串 用創建對象的方式 String s = new String("abc");那它是放在了 堆裏 而如果單純的 一個 "abc" 這個輸入字符串常量 是放在static segement/棧/String池裏),當執行=時,也有類似先查找有沒有相同的字符串的過程. toString()方法?

java相等比較:==與equals