==和equals的區別(面試題)

一:==的用法

1)基本數據類型(byte,short,char,int,long,float,double,boolean)之間的比較需要用(==),因爲比較的是值
2)引用數據類型(接口,類,數組)之間用(= =),比較的是內存地址,所以除非是同一個new出來的對象,他們的比較後是true,否則就是false,因爲new一次,就會重新開闢一個新的堆內存空間

二:equals的用法

1)java中的所有類都是繼承Object的,Object中的equals比較的是內存地址,所以沒有重寫equals方法的類,比較的內存地址,重寫(String,Integer,Date都是重寫了這個方法)之後比較的就是對象中的屬性(即內容)

三:案例

1)String s1 = “黑客攻擊”;
2)String s2 = “黑客”;
3)String s3 = “攻擊”;
4) String s4 = “黑客” + “攻擊”; (編譯時確定常量,從常量池獲取)
5) String s6 = s2 + s3; (編譯時不能確定,不能從常量池獲取)
6)String s7 = new String(“黑客攻擊”); (創建的字符串是在運行時創建出來的,它保存在運行時內存區,不會放入常量池中。)
System.out.println(s1 == s4); // 輸出true
System.out.println(s1 == s6); // 輸出false

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章