Java 基本數(shù)據(jù)類型

2022-01-25 11:00 更新

變量就是申請內(nèi)存來存儲(chǔ)值。也就是說,當(dāng)創(chuàng)建變量的時(shí)候,需要在內(nèi)存中申請空間。

內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲(chǔ)空間,分配的空間只能用來儲(chǔ)存該類型數(shù)據(jù)。

因此,通過定義不同類型的變量,可以在內(nèi)存中儲(chǔ)存整數(shù)、小數(shù)或者字符。

Java的兩大數(shù)據(jù)類型:

  • 內(nèi)置數(shù)據(jù)類型
  • 引用數(shù)據(jù)類型

內(nèi)置數(shù)據(jù)類型

Java語言提供了八種基本類型。六種數(shù)字類型(四個(gè)整數(shù)型,兩個(gè)浮點(diǎn)型),一種字符類型,還有一種布爾型。

byte型:

  • byte數(shù)據(jù)類型是8位、有符號的,以二進(jìn)制補(bǔ)碼表示的整數(shù);
  • 最小值是-128(-2^7);
  • 最大值是127(2^7-1);
  • 默認(rèn)值是0;
  • byte類型用在大型數(shù)組中節(jié)約空間,主要代替整數(shù),因?yàn)閎yte變量占用的空間只有int類型的四分之一;
  • 例子:byte a = 100,byte b = -50。

short型(短整型):

  • short數(shù)據(jù)類型是16位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù)
  • 最小值是-32768(-2^15);
  • 最大值是32767(2^15 - 1);
  • Short數(shù)據(jù)類型也可以像byte那樣節(jié)省空間。一個(gè)short變量是int型變量所占空間的二分之一;
  • 默認(rèn)值是0;
  • 例子:short s = 1000,short r = -20000。

int型(整型):

  • int數(shù)據(jù)類型是32位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù);
  • 最小值是-2,147,483,648(-2^31);
  • 最大值是2,147,483,647(2^31 - 1);
  • 一般地整型變量默認(rèn)為int類型;
  • 默認(rèn)值是0;
  • 例子:int a = 100000, int b = -200000。

long(長整型):

  • long數(shù)據(jù)類型是64位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù);
  • 最小值是-9,223,372,036,854,775,808(-2^63);
  • 最大值是9,223,372,036,854,775,807(2^63 -1);
  • 這種類型主要使用在需要比較大整數(shù)的系統(tǒng)上;
  • 默認(rèn)值是0L;
  • 例子: long a = 100000L,long b = -200000L。

float(單精度浮點(diǎn)型):

  • float數(shù)據(jù)類型是單精度、32位、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù);
  • float在儲(chǔ)存大型浮點(diǎn)數(shù)組的時(shí)候可節(jié)省內(nèi)存空間;
  • 默認(rèn)值是0.0f;
  • 浮點(diǎn)數(shù)不能用來表示精確的值,如貨幣;
  • 例子:float f1 = 234.5f。

double(雙精度浮點(diǎn)型):

  • double數(shù)據(jù)類型是雙精度、64位、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù);
  • 浮點(diǎn)數(shù)的默認(rèn)類型為double類型;
  • double類型同樣不能表示精確的值,如貨幣;
  • 默認(rèn)值是0.0d;
  • 例子:double d1 = 123.4。

boolean(布爾型):

  • boolean數(shù)據(jù)類型表示一位的信息;
  • 只有兩個(gè)取值:true和false;
  • 這種類型只作為一種標(biāo)志來記錄true/false情況;
  • 默認(rèn)值是false;
  • 例子:boolean one = true。

char(字符型):

  • char類型是一個(gè)單一的16位Unicode字符;
  • 最小值是’\u0000’(即為0);
  • 最大值是’\uffff’(即為65,535);
  • char數(shù)據(jù)類型可以儲(chǔ)存任何字符;
  • 例子:char letter = ‘A’。

實(shí)例

對于數(shù)值類型的基本類型的取值范圍,我們無需強(qiáng)制去記憶,因?yàn)樗鼈兊闹刀家呀?jīng)以常量的形式定義在對應(yīng)的包裝類中了。請看下面的例子:

public class PrimitiveTypeTest {
    public static void main(String[] args) {
    // byte
    System.out.println("基本類型:byte 二進(jìn)制位數(shù):" + Byte.SIZE);
    System.out.println("包裝類:java.lang.Byte");
    System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
    System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
    System.out.println();
    
    // short
    System.out.println("基本類型:short 二進(jìn)制位數(shù):" + Short.SIZE);
    System.out.println("包裝類:java.lang.Short");
    System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
    System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
    System.out.println();

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

    // long
    System.out.println("基本類型:long 二進(jìn)制位數(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();

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

    // double
    System.out.println("基本類型:double 二進(jìn)制位數(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();

    // char
    System.out.println("基本類型:char 二進(jìn)制位數(shù):" + Character.SIZE);
    System.out.println("包裝類:java.lang.Character");
    // 以數(shù)值形式而不是字符形式將Character.MIN_VALUE輸出到控制臺
    System.out.println("最小值:Character.MIN_VALUE="
            + (int) Character.MIN_VALUE);
    // 以數(shù)值形式而不是字符形式將Character.MAX_VALUE輸出到控制臺
    System.out.println("最大值:Character.MAX_VALUE="
            + (int) Character.MAX_VALUE);
}
}  

編譯以上代碼輸出結(jié)果如下所示:

基本類型:byte 二進(jìn)制位數(shù):8
包裝類:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
基本類型:short 二進(jìn)制位數(shù):16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767


基本類型:int 二進(jìn)制位數(shù):32
包裝類:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647


基本類型:long 二進(jìn)制位數(shù):64
包裝類:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807


基本類型:float 二進(jìn)制位數(shù):32
包裝類:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38


基本類型:double 二進(jìn)制位數(shù):64
包裝類:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308


基本類型:char 二進(jìn)制位數(shù):16
包裝類:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科學(xué)記數(shù)法的形式輸出的,結(jié)尾的"E+數(shù)字"表示E之前的數(shù)字要乘以10的“數(shù)字”次冪。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

實(shí)際上,JAVA中還存在另外一種基本類型void,它也有對應(yīng)的包裝類 java.lang.Void,不過我們無法直接對它們進(jìn)行操作。


引用類型

  • 引用類型變量由類的構(gòu)造函數(shù)創(chuàng)建,可以使用它們訪問所引用的對象。這些變量在聲明時(shí)被指定為一個(gè)特定的類型,比如Employee、Pubby等。變量一旦聲明后,類型就不能被改變了。
  • 對象、數(shù)組都是引用數(shù)據(jù)類型。
  • 所有引用類型的默認(rèn)值都是null。
  • 一個(gè)引用變量可以用來引用與任何與之兼容的類型。
  • 例子:Animal animal = new Animal(“giraffe”)。

Java常量

常量就是一個(gè)固定值。它們不需要計(jì)算,直接代表相應(yīng)的值。

常量指不能改變的量。 在Java中用final標(biāo)志,聲明方式和變量類似:

final double PI = 3.1415927;

雖然常量名也可以用小寫,但為了便于識別,通常使用大寫字母表示常量。

字面量可以賦給任何內(nèi)置類型的變量。例如:

byte a = 68;
char a = 'A'

byte、int、long、和short都可以用十進(jìn)制、16進(jìn)制以及8進(jìn)制的方式來表示。

當(dāng)使用常量的時(shí)候,前綴0表明是8進(jìn)制,而前綴0x代表16進(jìn)制。例如:

int decimal = 100;
int octal = 0144;
int hexa =  0x64;

和其他語言一樣,Java的字符串常量也是包含在兩個(gè)引號之間的字符序列。下面是字符串型字面量的例子:

"Hello World"
"two\nlines"
"\"This is in quotes\""

字符串常量和字符常量都可以包含任何Unicode字符。例如:

char a = '\u0001';
String a = "\u0001";

Java語言支持一些特殊的轉(zhuǎn)義字符序列。

符號 字符含義
\n 換行 (0x0a)
\r 回車 (0x0d)
\f 換頁符(0x0c)
\b 退格 (0x08)
\0 空字符(0x0)
\s 字符串
\t 制表符
\" 雙引號
\' 單引號
\\ 反斜杠
\ddd 八進(jìn)制字符 (ddd)
\uxxxx 16進(jìn)制Unicode字符 (xxxx)

這一節(jié)講解了Java的基本數(shù)據(jù)類型。下一節(jié)將探討不同的變量類型以及它們的用法。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號