溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java操作符有哪些容易混淆

發布時間:2021-06-17 15:17:24 來源:億速云 閱讀:179 作者:chen 欄目:編程語言

這篇文章主要講解了“Java操作符有哪些容易混淆”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java操作符有哪些容易混淆”吧!

今天開始重新溫習Java,翻了翻java編程思想,看到操作符那里有一些考試面試經常遇到的又容易出錯的地方,在這記錄一下。

1. 賦值操作:在對一個對象進行賦值操作時,我們所操作的是對對象的引用。比如使用c=d,將對象d賦給對象c,這時c所指向的正式d之前所指向的內存,這時如果改變c或者d其中任何一個的值,另外一個的值也會變。

下面舉個例子說明:

Java代碼

class A{         int a;     }         public class Test{         public static void main(String[] args){             A c = new A();             A d = new A();             c.a = 10;             d.a = 15;                 c = d;             System.out.println("c.a = " + c.a + ", d.a = " + d.a);             d.a = 20;             System.out.println("c.a = " + c.a + ", d.a = " + d.a);         }     }

輸出結果為:

c.a = 15, d.a = 15

c.a = 20, d.a = 20

可見當d的值改變時,c的值也會跟著改變,這說明這兩個對象指向同一塊兒內存。

2. 方法調用中的別名問題,比如將對象a作為參數傳遞給函數f,并在函數f中對對象a進行修改,那么實際修改的是a對象本身,因為傳遞給f的是a的一個引用,它和a指向的是同一塊內存。

Java代碼

class A{         int item;     }         public class Test{         public static void main(String[] args){             A a = new A();             a.item = 10;             f(a);             System.out.println("a.item = " + a.item);         }         static void f(A obj){             obj.item = 20;         }     }

輸出結果為:

a.item = 20

3. equals 和 ==

==就是用來比較對象的引用,也就是說它只在乎兩個對象是不是指向同一塊內存,如果是的話,就返回true,否則即使兩個對象的值相等,它也返回false

equals()的默認行為也是比較引用,但是它在jdk的許多類中都被覆蓋過了(這些類有java.io.file,java.util.Date,java.lang.string,包裝類(Integer,Double等)),覆蓋后的結果為,只要兩個對象的類型一致、值一致,就返回true,否則返回false。

舉個例子:

Java代碼

class A{         int item;     }         public class Test{         public static void main(String[] args){             A a = new A();             a.item = 10;             A b = new A();             b.item = 10;                          f(a, b);                 a = b;             f(a, b);                 String s1 = new String("test");             String s2 = new String("test");             if(s1 == s2)                 System.out.println("s1 == s2");             else if(s1.equals(s2))                 System.out.println("s1 equals s2");         }             static void f(A a, A b){             if(a == b)                 System.out.println("a == b");             else                  System.out.println("a != b");                 if(a.equals(b))                 System.out.println("a equals b");             else                System.out.println("a is not equals b");         }     }
Java操作符有哪些容易混淆

輸出結果為:

a != b

a is not equals b

a == b

a equals b

s1 equals s2

這充分說明了 == 和 equals都是比較對象的引用的,s1 equals s2說明了在String類里覆蓋了equals方法,只要兩個對象值一樣,就返回true。

感謝各位的閱讀,以上就是“Java操作符有哪些容易混淆”的內容了,經過本文的學習后,相信大家對Java操作符有哪些容易混淆這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女