国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

為你介紹Java中引用類型和原始類型的區別

開發 后端
本文介紹的是java中的兩種類型,分別是引用類型和原始類型,希望對你有幫助,一起來看。

Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。另外,Java 還為每個原始類型提供了封裝類(Wrapper)。如果需要一個整型變量,是使用基本的 int 型呢,還是使用 Integer 類的一個對象呢?如果需要聲明一個布爾類型,是使用基本的 boolean,還是使用 Boolean 類的一個對象呢?本文可幫助您作出決定。

下表列出了原始類型以及它們的對象封裝類。

原始類型 封裝類
boolean  Boolean
 char Character
byte  Byte
short  Short
int Integer

long  

Long
float Float
double  Double

引用類型和原始類型的行為完全不同,并且它們具有不同的語義。例如,假定一個方法中有兩個局部變量,一個變量為 int 原始類型,另一個變量是對一個 Integer 對象的對象引用:

  1. int i = 5// 原始類型  
  2. Integer j = new Integer(10); // 對象引用 

 

這兩個變量都存儲在局部變量表中,并且都是在 Java 操作數堆棧中操作的,但對它們的表示卻完全不同。(本文中以下部分將用通用術語堆棧代替操作數堆棧或局部變量表。)原始類型 int 和對象引用各占堆棧的 32 位。(要表示一個 int 或一個對象引用,Java 虛擬機實現至少需要使用 32 位存儲。)Integer 對象的堆棧項并不是對象本身,而是一個對象引用。

Java 中的所有對象都要通過對象引用訪問。對象引用是指向對象存儲所在堆中的某個區域的指針。當聲明一個原始類型時,就為類型本身聲明了存儲。

引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的缺省值。對象引用實例變量的缺省值為 null,而原始類型實例變量的缺省值與它們的類型有關。

許多程序的代碼將同時包含原始類型以及它們的對象封裝。當檢查它們是否相等時,同時使用這兩種類型并了解它們如何正確相互作用和共存將成為問題。程序員必須了解這兩種類型是如何工作和相互作用的,以避免代碼出錯。

例如,不能對原始類型調用方法,但可以對對象調用方法:

  1. int j = 5;  
  2. j.hashCode(); // 錯誤  
  3. //。..  
  4. Integer i = new Integer(5);  
  5. i.hashCode(); // 正確 

 

使用原始類型無須調用 new,也無須創建對象。這節省了時間和空間。混合使用原始類型和對象也可能導致與賦值有關的意外結果。看起來沒有錯誤的代碼可能無法完成您希望做的工作。例如:

  1. import java.awt.Point;  
  2. class Assign  
  3. {  
  4. public static void main(String args[])  
  5. {  
  6. int a = 1;  
  7. int b = 2;  
  8. Point x = new Point(00);  
  9. Point y = new Point(11); //1  
  10. System.out.println(“a is ” + a);  
  11. System.out.println(“b is ” + b);  
  12. System.out.println(“x is ” + x);  
  13. System.out.println(“y is ” + y);  
  14. System.out.println(“Performing assignment and ” +  
  15. “setLocation.。.”);  
  16. a = b;  
  17. a++;  
  18. x = y; //2  
  19. x.setLocation(55); //3  
  20. System.out.println(“a is ”+a);  
  21. System.out.println(“b is ”+b);  
  22. System.out.println(“x is ”+x);  
  23. System.out.println(“y is ”+y);  
  24. }  

 

這段代碼生成以下輸出:

  1. a is 1  
  2. b is 2  
  3. x is java.awt.Point[x=0y=0]  
  4. y is java.awt.Point[x=1y=1]  
  5. Performing assignment and setLocation.。.  
  6. a is 3  
  7. b is 2  
  8. x is java.awt.Point[x=5y=5]  
  9. y is java.awt.Point[x=5y=5] 

 

修改整數 a 和 b 的結果沒什么意外的地方。b 的值被賦予整型變量 a,結果 a 的值增加了 1。這一輸出反映了我們希望發生的情況。但是,令人感到意外的,是在賦值并調用 setLocation之后 x 和 y 對象的輸出。我們在完成 x = y 賦值之后特意對 x 調用了 setLocation,x 和 y 的值怎么會相同呢?我們畢竟將 y 賦予 x,然后更改了 x,這與我們對整數 a 和 b 進行的操作沒什么不同。 

這種混淆是由原始類型和對象的使用造成的。賦值對這兩種類型所起的作用沒什么不同。但它可能看起來所有不同。賦值使等號 (=) 左邊的值等于右邊的值。這一點對于原始類型(如前面的 int a 和 b)是顯而易見的。對于非原始類型(如 Point 對象),賦值修改的是對象引用,而不是對象本身。因此,在語句

  1. x = y; 

 

之后,x 等于 y。換句話說,因為 x 和 y 是對象引用,它們現在引用同一個對象。因此,對 x 所作的任何更改也會更改 y。下面是 //1 處的代碼執行以后的情況:

執行 //2 處的賦值以后情況如下:

當在 //3 處調用 setLocation 時,這一方法是對 x 引用的對象執行的。因為 x 引用的 Point 對象也正是 y 所引用的對象,所以我們現在得到以下結果:

因為 x 和 y 引用同一個對象,所以對 x 執行的所有方法與對 y 執行的方法都作用于同一個對象。

區分引用類型和原始類型并理解引用的語義是很重要的。若做不到這一點,則會使編寫的代碼無法完成預定工作。

希望通過以上內容的介紹,能夠給你帶來幫助。

責任編輯:于鐵 來源: 互聯網
相關推薦

2017-02-27 08:34:09

JavaScript數據引用

2009-08-03 17:51:43

C#引用類型

2013-05-23 17:21:16

C#

2009-10-10 09:53:07

.NET值類型

2011-07-11 15:02:54

枚舉

2009-10-22 18:41:49

CLR VIA C#教

2009-08-19 16:39:44

C#值類型C#引用類型

2009-08-26 14:05:19

C#值類型和引用類型

2021-08-27 07:47:06

引用類型

2024-05-20 08:58:13

Java引用類型垃圾回收器

2021-11-29 18:02:05

VMware磁盤存儲

2009-07-22 09:43:30

Scala類型

2009-08-03 14:54:23

值類型C#

2016-08-18 14:13:55

JavaScript基本數據引用數據

2010-03-18 14:02:37

Python空對象整理

2009-06-08 18:05:00

Java進階引用

2009-08-27 16:39:26

C# String類型

2011-07-21 14:45:13

java

2021-09-02 15:24:25

Prisma JavaScript 類型安全

2011-06-08 13:03:52

C#值類型引用類型
點贊
收藏

51CTO技術棧公眾號

成人精品在线视频观看| 夜夜爽www精品| 国产欧美一区二区三区在线老狼| 久久影院一区二区三区| 亚洲国产欧洲综合997久久| 欧美成人aa大片| 国产精品人成在线观看免费| 欧美成人亚洲| 精品视频一二| a成人v在线| 欧美四级在线| 深夜福利在线观看直播| 日本福利视频一区| 欧美激情综合五月色丁香小说| 国产区二精品视| 欧美情侣性视频| 日韩av中文字幕在线| 91麻豆精品国产自产在线| 色综合久久中文字幕| 亚洲成人av免费| 尤物在线观看一区| 国产精品麻豆网站| 国产精品人妖ts系列视频| 91在线视频播放地址| 99国产精品| 国产精品久久久免费| 亚洲综合在线电影| 国产精品久久成人免费观看| 欧美久久久久久一卡四| 97人人干人人| 蜜桃网站成人| 亚洲图片小说在线| 一本一道久久a久久精品综合 | 超碰97久久国产精品牛牛| 91嫩草精品| 成人在线免费观看视频| 一区二区免费不卡在线| 国内视频精品| 一区二区自拍| 老司机免费视频一区二区| 成人激情文学综合网| 亚洲国产精品av| 一区二区视频在线| 欧美偷拍一区二区| 国产丝袜一区视频在线观看| 久久九九免费视频| 国产在线视频91| 美女精品国产| 91视频最新入口| 欧美,日韩,国产在线| 成人18视频日本| 制服丝袜日韩| 欧美好骚综合网| 亚洲特色特黄| 日本午夜一区二区| 97久久久精品综合88久久| 国产日韩欧美电影| 伊人性伊人情综合网| 色哟哟国产精品| 亚洲少妇中文在线| 奇米四色中文综合久久| 欧美精品人人做人人爱视频| 中文精品一区二区三区| 久久久精品在线视频| 美女永久在线网站| 撸视在线观看免费视频| 性欧美freesex顶级少妇| 日本久久成人网| 在线观看不卡| 久久久不卡影院| 精品久久久久久久人人人人传媒 | 黑人巨大精品欧美一区二区一视频| 欧美日韩一区二区在线观看视频| 中文在线不卡视频| 亚洲一区二区三区sesese| 国产在线视频在线| a在线免费观看| 女同久久另类99精品国产| 久久精品99国产国产精| 色婷婷综合久久| 欧美日韩成人网| 一区高清视频| 日本小视频在线免费观看| 亚洲欧美成人vr| 不卡一区中文字幕| 亚洲精品美女久久 | 日本欧美国产在线| 少妇黄色一级片| 手机在线观看av| 亚洲人人精品| 亚洲免费成人| 色女孩综合网| 91热这里只有精品| 小视频免费在线观看| 九九免费精品视频在线观看| 国产成人在线看| 日韩免费观看高清完整版 | 国产精品嫩草99a| 国产亚洲精品综合一区91| 亚洲欧美日韩精品久久久| 成年人羞羞的网站| 欧美激情影院| 亚洲女同女同女同女同女同69| 欧美成人中文字幕在线| 麻豆中文字幕在线观看| heyzo在线欧美播放| 精品无码三级在线观看视频 | 在线色欧美三级视频| 国产毛片久久久久久国产毛片| 大香伊人久久| 日韩黄色免费电影| 精品成人一区二区| 亚洲福利视频二区| 韩国美女主播一区| 日韩肉感妇bbwbbwbbw| 午夜先锋成人动漫在线| 亚洲视频在线一区观看| 国产在线日韩在线| 国产小视频在线| 日本欧洲一区二区| 亚洲美女性视频| 午夜大尺度福利视频| 五月激情久久久| 精品国产免费视频| jizzzz日本| 新片速递亚洲合集欧美合集| 亚洲欧美在线综合| 国产欧美日韩综合一区在线播放 | 日韩在线视频观看正片免费网站| 400部精品国偷自产在线观看| 日韩免费电影| 国产色产综合产在线视频| 欧美一区二区影院| av国产在线观看| aaa国产一区| 国产91精品网站| 91av久久| 国产精品久久久久影院色老大 | 久久视频www| 老司机免费视频一区二区三区| 色噜噜狠狠色综合网图区| 亚洲第一区视频| 国产综合色在线| 国产成人亚洲综合91| 动漫一区二区| av片中文字幕| 99精品国产热久久91蜜凸| 综合136福利视频在线| 午夜视频免费在线观看| 麻豆成人精品| 欧美夫妻性视频| 怡红院av在线| 亚洲在线成人精品| 超碰成人免费在线| 日韩精品免费视频人成| 日韩av免费网站| 欧美性生活一级| 亚洲福利视频在线| 欧美日韩一区二区三区69堂| 免费看日韩精品| 亚洲最大福利网站| 小说区图片区亚洲| 欧美无乱码久久久免费午夜一区| 男人天堂a在线| 中文字幕免费一区二区三区| 理论片在线不卡免费观看| 俄罗斯一级**毛片在线播放| 精品成人在线视频| 人妻有码中文字幕| 日韩精品午夜视频| 成人精品一区二区三区电影免费 | 亚洲色图自拍| 亚洲国产三级| 114国产精品久久免费观看| 国产精品1luya在线播放| 亚洲午夜未删减在线观看| 精品亚洲成a人片在线观看| 亚洲欧美一区二区三区极速播放 | 久久久噜噜噜久噜久久综合| 韩国无码av片在线观看网站| 国产乱子轮精品视频| 美国av一区二区三区| 精品影片在线观看的网站| 欧美成人在线免费| 欧美电影院免费观看| 久久亚洲欧美日韩精品专区| 视频91a欧美| 国内精品久久久久久久久| 阿v视频在线观看| 欧美综合色免费| 国产色视频在线播放| 在线精品一区| 美女久久精品| 日韩成人在线视频| 欧美xxx性| 在线看日韩av| caoporn成人| 日本精品一区二区三区在线| 亚洲免费专区| 91麻豆国产语对白在线观看|