日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

數(shù)據(jù)的類型

 昵稱22369024 2015-05-13
java中有兩種數(shù)據(jù)類型:基本類型和引用類型。
基本類型有8個:
整數(shù)類型 byte、short、int、long
浮點數(shù)類型 float、double
字符型 char
布爾類型 boolean
引用類型包括三種:
類 Class
接口 Interface
數(shù)組 Array
基本類型是通過諸如 int a = 5; long b = 6L;的形式來定義的,稱為自動變量,自動變量存放的是字面值,不是類的實例,它存放在內(nèi)存的堆棧中,數(shù)據(jù)大小和生存期必須是確定的,存取速度比較快,在堆棧中的字面值可以共享,也就是說我們定義一個int a = 5;然后又定義了一個int b = 5;這時a與b在內(nèi)存中指向的是同一個字面常量。
引用類型一般是通過new關(guān)鍵字來創(chuàng)建,比如Integer num = new Integer(3);它存放在內(nèi)存的堆中,可以在運行時動態(tài)的分配內(nèi)存大小,生存期也不必事先告訴編譯器,當(dāng)引用類型變量不被使用時,Java內(nèi)部的垃圾回收器GC會自動回收走。引用變量中存放的不是變量的內(nèi)容,而是存放變量內(nèi)容的地址。
在參數(shù)傳遞時,基本類型都是傳值,也就是傳遞的都是原變量的值得拷貝,改變這個值不會改變原變量,而引用類型傳遞的是地址,也就是參數(shù)與原變量指向的是同一個地址,所以如果改變參數(shù)的值,原變量的值也會改變。這點要注意。
在java中,8種基本類型在java中都有對應(yīng)的封裝類型,也就是引用類型:
整數(shù)類型 Byte、Short、Integer、Long
浮點數(shù)類型 Float、Double
字符型 Character
布爾類型 Boolean
有時候我們會看到這樣的語句 Integer num = 3;Boolean b = true;這樣定義也能行得通,其實這里面有一個自動裝箱的問題,即java自動把3這個字面常量封裝成了Integer對象,同理也有自動拆箱。
還有些需要注意的比較特殊的地方:
1.Integer類型
Integer i1 = 3;
Integer i2 = 3;
此時i1 == i2 返回的是true
Integer i1 = 128;
Integer i2 = 128;
此時i1 == i2返回的是false,
這時因為Integer的數(shù)值在-128~127之間時,即在int的范圍內(nèi),默認(rèn)是按照基本類型int來存放的,仍舊存在堆棧中,如果超出了int的范圍,就按照對象的方式來存放和比較了。

2、String類型
String類型我們有時候也會直接這樣定義:
String s = "abc";
這里的"abc"稱為字符串常量,也是存在堆棧中的,s中存放的就是指向這個堆棧地址的引用,如果再定義一個
String s1 = "abc";
這時,s與s1存放的是同一個地址的引用,即s與s1指向的是同一個字符串常量,
s == s1的值是true,
但是如果有
String s2 = new String("abc");
這時s == s2則為false,因為使用new之后,每次生成的對象都不是同一個,即使存儲的內(nèi)容相同。
上面的s == s1,s == s2其實比較的都是地址,并不是里面的內(nèi)容。如果要比較內(nèi)容,可以使用equals()方法。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多