Java的基本數據類型


   1、Java的基本數據類型都有哪些各占有幾個字節?

    

  2、String是基本數據類型嗎?

    String是引用類型,底層使用char數組實現的。

  3、short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1有錯嗎;

    前者不正確,后者正確。對於short s1 = 1; s1 = s1 + 1;由於1是int類型,因此s1+1運算結果也是int型,需要強制類型轉換才能復制給short型。而short s1 = 1; s1 += 1;可以正確編譯,因為s1 += 1;相當於s1 = (short)(s1+1);其中有隱含的強制類型轉換。

  4、int 和Integer有什么區別?

    Java是一個近乎純潔的面向對象編程語言,但是為了編程的方便還是引入了基本數據類型,為了能夠將這些基本數據類型當成對象操作,Java為每一個基本數據類型都引入了對象的包裝類型(Wrapper class),int的包裝類就是Integer,從Java5開始引入了自動裝箱/拆箱機制,使得而這可以相互轉換。

    Java為每個原始類型提供了包裝類型:

      原始類型:boolean,char,byte,short,int,long,float,double

      包裝類型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

  5、下面Integer類型的數值比較輸出的結果為?

    

    如果不明就里很容易認為兩個輸出要么都是true要么都是false。首先要注意的是f1、f2、f3、f4四個變量都是Integer對象引用,所以下面的==運算符比較的不是值而是引用。裝箱的本質是什么呢?當我們給一個Integer對象賦一個int值的時候,會調用Integer類的靜態方法valueOf,如果看看valueOf的源代碼就知道了什么。

    源碼:

    

    IntegerCache是Integer的內部類,其代碼如下所示:

    

    簡單的說,如果整型字面量的值在-128到127之間,那么不會new型的Integer對象。而是直接引用常量池中的Integer對象。

 

    6、String類常用方法

      

    7、String(JDK1.0)、StringBuffer(JDK1.4)、StringBuilder(JDK1.5)的區別?

      1)可變不可變

        String:字符串常量,在修改時不會改變自身;若修改,等於重新生成新的字符串對象。

        StringBuffer:在修改時會改變對象自身,每次操作都是對StringBuffer對象本身就行修改,不是生成新的對象;使用場景:對字符串經常改變的情況下,主要方法有:append(),insert()等。

      2)線程是否安全

        String:對象定義后不可變,線程安全。

        StringBuffer:是線程安全的(對調用方法加入同步鎖),執行效率較慢,適用於多線程下操作字符串緩沖區大量數據。

        StringBuilder:是線程不安全的,適用於單線程下操作字符串緩沖區大量數據。

      3)公共點

        StringBuilder與StringBuffer有公共父類AbstractStringBuilder(抽象類)。

        StringBuilder、StringBuffer 的方法都會調用 AbstractStringBuilder 中的公共方法,如 super.append(...)。只是 StringBuffer 會在方法上加 synchronized 關鍵字,進行同步。最后,如果程序不是多線程的,那么使用StringBuilder 效率高於 StringBuffer

 

    8、數據類型之間的轉換?

      1)字符串如何轉基本數據類型?

        調用基本數據類型對應的包裝類中的方法parseXXX(String)或valueOf(String)即可返回相應基本類型。

      2)基本數據類型如何轉字符串?

        一種方法是將基本數據類型與空字符串(“”)連接(+)即可獲得所對應的字符串;另一種時調用String類中的valueOf()方法返回相應字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM