亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java數(shù)據(jù)類型(八種基本數(shù)據(jù)類型+四種引用類型)以及數(shù)據(jù)類型轉(zhuǎn)換

 更新時間:2024年04月15日 09:29:01   作者:尋求出路的程序媛  
java中除了基本數(shù)據(jù)類型之外,剩下的都是引用數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)類型(八種基本數(shù)據(jù)類型?+?四種引用類型)以及數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下

1.總覽

  • Java的數(shù)據(jù)類型只有兩大類:8大基本數(shù)據(jù)類型引用數(shù)據(jù)類型。其中基本數(shù)據(jù)類型又被稱為值類型
    • 基本數(shù)據(jù)類型:6種數(shù)字類型(byte/short/int/long/float/double)、1種字符型(char)、1種布爾型(boolean)
    • 引用數(shù)據(jù)類型:類(Class)、接口(Interface)、數(shù)組(Array)
    • 除了以上的基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,還有一些其他相關(guān)的數(shù)據(jù)類型,例如字符串類型String、枚舉類型Enum,它們都是基于引用數(shù)據(jù)類型來實現(xiàn)的
  • 基本數(shù)據(jù)類型只能存自己類型的值,無其他額外功能,具體介紹如下第2小節(jié)
  • 引用類型:參數(shù)傳遞時,以拷貝引用地址的方式傳遞給接收變量,而非復制整個數(shù)據(jù)本體。除八大基本數(shù)據(jù)類型之外的所有數(shù)據(jù)類型,都為引用數(shù)據(jù)類型。所有引用數(shù)據(jù)類型的默認值都為null。
  • 為了基本數(shù)據(jù)類型可以與引用數(shù)據(jù)類型互相轉(zhuǎn)換、以利用彼此的特性,java為每一種基本數(shù)據(jù)類型提供了相應(yīng)的包裝類。包裝類對基本數(shù)據(jù)類型進行了封裝,提供了豐富的功能,包裝類是基本類型的拓展
  • 包裝類是引用類型的一種,包裝類與基本數(shù)據(jù)類型一一對應(yīng),也有8種,分別為:Byte、Short、Integer、Long、Float、Double、Character、Boolean

2.基本數(shù)據(jù)類型

2.1 類型概述

  • 6種數(shù)字類型

    • 4種整數(shù)型:byte、short、int、long
    • 2種浮點型:float、double
  • 1種字符類型:char

  • 1種布爾型:boolean

2.2 基本數(shù)據(jù)類型詳解

基本類型存儲大小初始化默認值取值范圍包裝類型
byte1字節(jié)(8位)0-128~127Byte
short2字節(jié)(16位)0-32768~32767Short
int4字節(jié)(32位)0-2^31 ~ 2^31 - 1Integer
long8字節(jié)(64位)0L。"L"理論上不分大小寫,但若寫成"l"容易與數(shù)字"1"混淆,不容易分辨,所以最好大寫。-2^63 ~ 2^63 - 1Long
float4字節(jié)(32位)0.0f符合IEEE754標準的浮點數(shù),1.4E-45 ~ 3.4028235E38Float
double8字節(jié)(64位)0.0d符合IEEE754標準的浮點數(shù),4.9E-324 ~ 1.7976931348623157E308Double
char2字節(jié)(16位)‘\u0000’\u0000 ~ \uffff(十進制等效值為 0~65535,本質(zhì)也是數(shù)值)Character
boolean1字節(jié)(8位)/4字節(jié)(32位)falsetrue/falseBoolean

char 數(shù)據(jù)類型可以儲存任何字符。
float、double不能用來表示精確的值,運算不精確——>解決方案:BigDecimal。創(chuàng)建BigDecimal對象的方式:

  • BigDecimal(double val) : double類型的數(shù)據(jù)作為參數(shù),交給BigDecimal對象【不用,因為double本身不精確】
  • BigDecimal(String val) : String類型的數(shù)據(jù)作為參數(shù),交給BigDecimal對象【用這個】
    注:double->String 直接拼接一個字符串""就行。

對于數(shù)值類型的基本類型的取值范圍,我們無需強制去記憶,因為它們的值都已經(jīng)以常量的形式定義在對應(yīng)的包裝類中

//long
System.out.println("基本類型:long 二進制位數(shù):" + Long.SIZE);
System.out.println("包裝類:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();

//double
System.out.println("基本類型:double 二進制位數(shù):" + Double.SIZE);
System.out.println("包裝類:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();

//其他類型方法同上類似

2.3 基本數(shù)據(jù)類型與引用數(shù)據(jù)類型區(qū)別

  • 存儲方式:基本數(shù)據(jù)類型直接存儲值,而引用數(shù)據(jù)類型存儲的是對象的引用(內(nèi)存地址)
  • 內(nèi)存分配:基本數(shù)據(jù)類型在棧上分配內(nèi)存,引用數(shù)據(jù)類型在堆上分配內(nèi)存(具體內(nèi)容存放在堆中,棧中存放的是其具體內(nèi)容所在內(nèi)存的地址)。棧上的分配速度較快,但是內(nèi)存空間較小,而堆上的分配速度較慢,但可以分配更大的內(nèi)存空間
  • 默認值:基本數(shù)據(jù)類型會有默認值,例如int類型的默認值是0,boolean類型的默認值是false。而引用數(shù)據(jù)類型的默認值是null,表示沒有引用指向任何對象
  • 復制操作:基本數(shù)據(jù)類型進行復制時,會復制該變量的值。而引用數(shù)據(jù)類型進行復制時,只會復制對象的引用,兩個變量指向同一個對象
  • 參數(shù)傳遞:基本數(shù)據(jù)類型作為方法的參數(shù)傳遞時,傳遞的是值的副本,不會修改原始值。而引用數(shù)據(jù)類型作為方法的參數(shù)傳遞時,傳遞的是對象的引用,可以修改對象的屬性或狀態(tài)
  • 比較操作:基本數(shù)據(jù)類型使用==進行比較時,比較的是值是否相等。而引用數(shù)據(jù)類型使用==進行比較時,比較的是引用是否指向同一個對象,如果要比較對象的內(nèi)容是否相同,需要使用equals()方法

注意:Java中的包裝類(Wrapper Classes)對基本數(shù)據(jù)類型進行了封裝,使其也具有了對象的特性,可以調(diào)用方法和進行類型轉(zhuǎn)換等操作。

2.4 基本數(shù)據(jù)類型與包裝類區(qū)別

  • 存儲方式:基本類型直接存儲值,而包裝類型存儲的是對應(yīng)基本類型值的對象。
  • 空值處理:基本類型沒有空值(null)的概念,而包裝類型可以將null作為有效值來表示缺失或無效值。
  • 默認值:基本類型有默認值,例如int類型的默認值是0,boolean類型的默認值是false。而包裝類型的默認值是null。
  • 對象操作:基本類型不能直接調(diào)用方法,而包裝類型可以調(diào)用對應(yīng)的方法,例如Integer類的intValue()方法可以獲取保存在Integer對象中的值。
  • 自動裝箱/拆箱:基本類型和包裝類型之間可以進行自動裝箱和拆箱的轉(zhuǎn)換。自動裝箱是指將基本類型的值自動轉(zhuǎn)換為對應(yīng)的包裝類型對象,如int 轉(zhuǎn)Integer,Integer integer = 100,底層調(diào)用了Interger.valueOf(100)方法;而自動拆箱則是將包裝類型對象自動轉(zhuǎn)換為基本類型的值。
  • 泛型支持:泛型只能使用引用類型,不能直接使用基本類型。因此,當需要在泛型中使用基本類型時,需要使用對應(yīng)的包裝類型。
  • 比較方式:基本類型使用==進行比較時,比較的是值是否相等。而包裝類型使用==進行比較時,比較的是引用是否指向同一個對象,而不是比較值是否相等。若要比較包裝類型的值是否相等,需要使用equals()方法。

注意:在Java 5及其之后的版本中,基本類型和包裝類型之間的轉(zhuǎn)換會通過自動裝箱、拆箱來自動進行,使得基本類型和包裝類型之間的使用更加方便

補充:

  • 包裝類Integer的創(chuàng)建方式

    • 1)Integer i1 = new Integer(3); 沒有高效的效果,new一次,創(chuàng)建一個包裝類對象

    • 2)Integer i2 = Integer.valueOf(3); 有高效的效果,數(shù)據(jù)在-128~127的范圍內(nèi),才有高效的效果

    • 3)Integer i3 = 3; 自動裝箱:編譯器會把int類型5裝箱,變成Integer,底層調(diào)用Integer.valueOf(5)方法

  • 包裝類Double的創(chuàng)建方式

    • 1)Double d1 = new Double(2.7); 沒有高效的效果,new一次,創(chuàng)建一個包裝類對象

    • 2)Double d2 = Double.valueOf(2.7);這個也沒有高效的效果,只有Integer有

  • 自動裝箱與自動拆箱

    • Integer aInteger = 100; 自動裝箱【編譯器會將int類型的100裝箱,變成Interger類型,底層調(diào)用 Interger.valueOf(100) 方法】

    • int a = aInteger; 自動拆箱【編譯器會將包裝類型aInteger中的數(shù)據(jù)取出來,賦值給a,底層調(diào)用 aInteger.intValue() 方法】

  • String轉(zhuǎn)Integer、int、Double、double

String str1 = "7";
Integer m = Integer.valueOf(str1);
int n = Integer.parseInt(str1);

String str2 = "5.4";
Double d2 = Double.valueOf(str2);
double d3 = Double.parseDouble(str2);

//輸出  7,  7,  5.4,  5.4
System.out.println(m + ",  " + n + ",  " + d2 + ",  " + d3);

3.數(shù)據(jù)類型轉(zhuǎn)換

Java中的數(shù)據(jù)轉(zhuǎn)換主要分為兩種:自動類型轉(zhuǎn)換(也稱為隱式轉(zhuǎn)換)、強制類型轉(zhuǎn)換(也稱為顯式轉(zhuǎn)換)。

轉(zhuǎn)換從低級到高級:byte、short、char(三者同級)——> int ——> long ——> float ——> double

  • 自動類型轉(zhuǎn)換:代碼無需任何處理,在代碼編譯時 編譯器會自動進行處理。特點——低級轉(zhuǎn)換高級。
  • 強制類型轉(zhuǎn)換:需要在待轉(zhuǎn)換數(shù)據(jù)類型前 使用 (type)value, type是要強制類型轉(zhuǎn)換后的數(shù)據(jù)類型,可能會導致溢出或損失精度 。特點——高級轉(zhuǎn)換低級。

數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則

  • 不能對boolean類型進行類型轉(zhuǎn)換。

  • 不能把對象類型轉(zhuǎn)換成不相關(guān)類的對象。

  • 在把容量大的類型轉(zhuǎn)換為容量小的類型時必須使用強制類型轉(zhuǎn)換。

  • 轉(zhuǎn)換過程中可能導致溢出或損失精度,例如:

    int i =128;   
    byte b = (byte)i;
    

    因為 byte 類型是 8 位,最大值為127,所以當 int 強制轉(zhuǎn)換為 byte 類型時,值 128 時候就會導致溢出。

  • 浮點數(shù)到整數(shù)的轉(zhuǎn)換是通過舍棄小數(shù)得到,而不是四舍五入,例如:

    (int)23.7 == 23;        
    (int)-45.89f == -45;
    

3.1 具體示例

int 和 long 互轉(zhuǎn)、int和double互轉(zhuǎn)、int和byte互轉(zhuǎn)、int和char互轉(zhuǎn)、int和String互轉(zhuǎn)

public static void main(String[] args) {
    int aInt = 20;
    long bLong = 50L;
    double cDouble = 4.8;

    //低優(yōu)先級類型數(shù)據(jù) + 高優(yōu)先級類型數(shù)據(jù) ——> 結(jié)果會自動轉(zhuǎn)換為高優(yōu)先級數(shù)據(jù)
    long sum = aInt + bLong;

    //long -> int 需要強制類型轉(zhuǎn)換
    int d = (int) bLong;
    //double -> int 需要強制類型轉(zhuǎn)換
    int e = (int) cDouble;

    System.out.println("自動類型轉(zhuǎn)換 int—>long:  " + sum);
    System.out.println("強制類型轉(zhuǎn)換 long—>int:  " + d);
    System.out.println("強制類型轉(zhuǎn)換 double—>int:  " + e);
    System.out.println();


    //int 和 byte 轉(zhuǎn)換
    byte fByte = (byte) aInt;  //高轉(zhuǎn)低,強轉(zhuǎn)
    int gInt = fByte;          //低轉(zhuǎn)高,自動
    System.out.println("高轉(zhuǎn)低-強轉(zhuǎn),int->byte:  " + fByte);
    System.out.println("低轉(zhuǎn)高-自動,byte->int:  " + gInt);
    System.out.println();

    //int 和 char 轉(zhuǎn)換
    char hChar = 'a';
    int iInt = hChar;
    char j = (char) iInt;
    System.out.println("低轉(zhuǎn)高-自動,char->int:  " + iInt);
    System.out.println("高轉(zhuǎn)低-強轉(zhuǎn),int->char:  " + j);
    System.out.println();

    //int 和 String 轉(zhuǎn)換
    //int轉(zhuǎn)String: 1)使用String的ValueOf方法   2)直接使用 String類+ (即字符串拼接),任意字符串和其他類型"+" 都會把其他類型轉(zhuǎn)為字符串
    String str1 = String.valueOf(aInt);
    String str2 = "" + aInt;
    System.out.println("int轉(zhuǎn)String: " + str1 + ",  " + str2);
    //String轉(zhuǎn)int:調(diào)用包裝類的Integer.parseInt方法,當字符串中包含非數(shù)字時會出錯
    String str3 = "18";
    int k = Integer.parseInt(str3);
    System.out.println("String轉(zhuǎn)int: " + k);
    System.out.println();

    //byte 和 char 互轉(zhuǎn)
    byte m = (byte) hChar;
    char n = (char) m;
    System.out.println("char->byte,強轉(zhuǎn):  " + m);
    System.out.println("byte->char,強轉(zhuǎn):  " + n);
}

輸出:

自動類型轉(zhuǎn)換 int—>long:  70
強制類型轉(zhuǎn)換 long—>int:  50
強制類型轉(zhuǎn)換 double—>int:  4

高轉(zhuǎn)低-強轉(zhuǎn),int->byte:  20
低轉(zhuǎn)高-自動,byte->int:  20

低轉(zhuǎn)高-自動,char->int:  97
高轉(zhuǎn)低-強轉(zhuǎn),int->char:  a

int轉(zhuǎn)String: 20,  20
String轉(zhuǎn)int: 18

char->byte,強轉(zhuǎn):  97
byte->char,強轉(zhuǎn):  a

總結(jié)

到此這篇關(guān)于Java數(shù)據(jù)類型(八種基本數(shù)據(jù)類型+四種引用類型)以及數(shù)據(jù)類型轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot項目集成日志的實現(xiàn)方法

    SpringBoot項目集成日志的實現(xiàn)方法

    這篇文章主要介紹了SpringBoot項目集成日志的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Java操作XML轉(zhuǎn)JSON數(shù)據(jù)格式詳細代碼實例

    Java操作XML轉(zhuǎn)JSON數(shù)據(jù)格式詳細代碼實例

    在Java中我們可以使用一些現(xiàn)成的庫來實現(xiàn)XML到JSON的轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Java操作XML轉(zhuǎn)JSON數(shù)據(jù)格式的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • Java HttpClient-Restful工具各種請求高度封裝提煉及總結(jié)

    Java HttpClient-Restful工具各種請求高度封裝提煉及總結(jié)

    這篇文章主要介紹了Java HttpClient-Restful工具各種請求高度封裝提煉及總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java將時間按月份分段的實現(xiàn)思路與方法

    Java將時間按月份分段的實現(xiàn)思路與方法

    這篇文章主要給大家介紹了關(guān)于Java將時間按月份分段的實現(xiàn)思路與方法,通過文中介紹的方法可以將時間分成我們想要的時間段,文中給出了詳細的實例代碼,需要的朋友可以參考下
    2021-07-07
  • java8 filter方法、Predicate接口的使用方式

    java8 filter方法、Predicate接口的使用方式

    這篇文章主要介紹了java8 filter方法、Predicate接口的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • JavaWeb BeanUtils信息類原理詳解

    JavaWeb BeanUtils信息類原理詳解

    這篇文章主要介紹了JavaWeb BeanUtils信息類原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java中while語句的簡單知識及應(yīng)用

    Java中while語句的簡單知識及應(yīng)用

    這篇文章主要給大家介紹了關(guān)于Java中while語句的簡單知識及應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Jmeter多臺機器并發(fā)請求實現(xiàn)壓力性能測試

    Jmeter多臺機器并發(fā)請求實現(xiàn)壓力性能測試

    這篇文章主要介紹了Jmeter多臺機器并發(fā)請求實現(xiàn)壓力性能測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • apache zookeeper使用方法實例詳解

    apache zookeeper使用方法實例詳解

    這篇文章主要介紹了Apache Zookeeper使用方法的有關(guān)實例及詳解,包含了其簡介和程序設(shè)計的一些思想,內(nèi)容豐富,需要的朋友可以參考下。
    2017-09-09
  • Java?注解@PostConstruct的原理及最佳使用場景分析

    Java?注解@PostConstruct的原理及最佳使用場景分析

    @PostConstruct?是?Java?中非常實用的注解,尤其是在?Spring?等框架中,它使得開發(fā)者可以方便地在?Bean?初始化后執(zhí)行額外的操作,本文給大家介紹@PostConstruct?的原理、使用場景及最佳實踐,感興趣的朋友一起看看吧
    2025-04-04

最新評論