在Java編程中嗦明,我們會(huì)使用到數(shù)據(jù)類型去定義一個(gè)變量笼沥。那么什么是數(shù)據(jù)類型呢?接下來這篇博客將為大家詳細(xì)介紹Java中的數(shù)據(jù)類型娶牌。
Java數(shù)據(jù)類型概念
數(shù)據(jù)類型在計(jì)算機(jī)語言里面奔浅,是對(duì)內(nèi)存位置的一個(gè)抽象表達(dá)方式,可以理解為針對(duì)內(nèi)存的一種抽象的表達(dá)方式诗良。接觸每種語言的時(shí)候汹桦,都會(huì)存在數(shù)據(jù)類型的認(rèn)識(shí),有復(fù)雜的鉴裹、簡單的舞骆,各種數(shù)據(jù)類型都需要在學(xué)習(xí)初期去了解,Java是強(qiáng)類型語言径荔,所以Java對(duì)于數(shù)據(jù)類型的規(guī)范會(huì)相對(duì)嚴(yán)格督禽。數(shù)據(jù)類型是語言的抽象原子概念,可以說是語言中最基本的單元定義总处,在Java里面狈惫,本質(zhì)上講將數(shù)據(jù)類型分為兩種:基本類型和引用數(shù)據(jù)類型。
數(shù)據(jù)類型分類
數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用型數(shù)據(jù)類型鹦马。
基本類型:簡單數(shù)據(jù)類型是不能簡化的胧谈、內(nèi)置的數(shù)據(jù)類型玖院、由編程語言本身定義,它表示了真實(shí)的數(shù)字第岖、字符和整數(shù)难菌。
引用數(shù)據(jù)類型:Java語言本身不支持C++中的結(jié)構(gòu)(struct)或聯(lián)合(union)數(shù)據(jù)類型,它的復(fù)合數(shù)據(jù)類型一般都是通過類或接口進(jìn)行構(gòu)造蔑滓,類提供了捆綁數(shù)據(jù)和方法的方式郊酒,同時(shí)可以針對(duì)程序外部進(jìn)行信息隱藏。
Java基本數(shù)據(jù)類型
byte:Java中最小的數(shù)據(jù)類型键袱,在內(nèi)存中占8位(bit)燎窘,即1個(gè)字節(jié),取值范圍-128~127蹄咖,默認(rèn)值0褐健;
short:短整型,在內(nèi)存中占16位澜汤,即2個(gè)字節(jié)蚜迅,取值范圍-32768~32717,默認(rèn)值0俊抵;
int:整型谁不,用于存儲(chǔ)整數(shù),在內(nèi)在中占32位徽诲,即4個(gè)字節(jié)刹帕,取值范圍-2147483648~2147483647,默認(rèn)值0谎替;
long:長整型偷溺,在內(nèi)存中占64位,即8個(gè)字節(jié)-263~263-1钱贯,默認(rèn)值0挫掏;
float:浮點(diǎn)型,在內(nèi)存中占32位喷舀,即4個(gè)字節(jié)砍濒,用于存儲(chǔ)帶小數(shù)點(diǎn)的數(shù)字(與double的區(qū)別在于float類型有效小數(shù)點(diǎn)只有6~7位),默認(rèn)值0硫麻;
double:雙精度浮點(diǎn)型爸邢,用于存儲(chǔ)帶有小數(shù)點(diǎn)的數(shù)字,在內(nèi)存中占64位拿愧,即8個(gè)字節(jié)杠河,默認(rèn)值0;
char:字符型,用于存儲(chǔ)單個(gè)字符券敌,占16位唾戚,即2個(gè)字節(jié),取值范圍0~65535待诅,默認(rèn)值為空叹坦;
boolean:布爾類型,占1個(gè)字節(jié)卑雁,用于判斷真或假(僅有兩個(gè)值募书,即true、false)测蹲,默認(rèn)值false莹捡;
基本數(shù)據(jù)類型詳解
byte
1.byte 數(shù)據(jù)類型是8位、有符號(hào)的扣甲,以二進(jìn)制補(bǔ)碼表示的整數(shù)篮赢;
2.最小值是 -128(-2^7);
3.最大值是 127(2^7-1)琉挖;
4.默認(rèn)值是 0启泣;
5.byte 類型用在大型數(shù)組中節(jié)約空間,主要代替整數(shù)粹排,因?yàn)?byte 變量占用的空間只有 int 類型的四分之一种远;
6.例子:byte a = 100涩澡,byte b = -50顽耳。
short
1.short 數(shù)據(jù)類型是 16 位、有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù)妙同;
2.最小值是 -32768(-2^15)射富;
3.最大值是 32767(2^15 - 1);
4.Short 數(shù)據(jù)類型也可以像 byte 那樣節(jié)省空間粥帚。一個(gè)short變量是int型變量所占空間的二分之一胰耗;
5.默認(rèn)值是 0;
6.例子:short s=1000芒涡,short r =-20000柴灯。
int
1.int數(shù)據(jù)類型是32位、有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù)费尽;
2.最小值是-2,147,483,684(-2^31);
3.最大值是2,147,483,647(2^31 - 1)赠群;
4.一般的整形變量默認(rèn)為int類型;
5.默認(rèn)值是0旱幼;
6.例子:int a=100000查描,int b=-200000;
long
1.long數(shù)據(jù)類型是64位,有符號(hào)的以二進(jìn)制補(bǔ)碼表示的整數(shù)冬三;
2.最小值是-9,223,372,036,854,775,808(-2^63)匀油;
3.最大值是9,223,372,036,854,775,807(2^63 -1);
4.這種類型主要使用在需要比較大的整數(shù)系統(tǒng)上勾笆;
5.默認(rèn)值為0敌蚜;
6.例子: long a = 100000L,Long b = -200000L窝爪。
"L"理論上不分大小寫钝侠,但是若寫成"l"容易與數(shù)字"1"混淆,不容易分辯酸舍。所以最好大寫帅韧。
float
1.float數(shù)據(jù)類型是單精度、32位啃勉、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)忽舟;
2.float在儲(chǔ)存大型浮點(diǎn)數(shù)組的時(shí)候可節(jié)省內(nèi)存空間;
3.默認(rèn)值是0.0f淮阐;
4.浮點(diǎn)數(shù)不能用來表示精確的值叮阅,如貨幣;
5.例子:float f1=234.5f泣特。
double
1.double數(shù)據(jù)類型雙精度浩姥、64位、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù)状您;
2.浮點(diǎn)數(shù)的默認(rèn)類型為double類型勒叠;
3.double類型同樣不能表示精確的值,如貨幣膏孟;
4.默認(rèn)值是0.0d眯分;
5.例子:double d1 = 123.4。
boolean
1.boolean數(shù)據(jù)類型表示一位的信息柒桑;
2.只有兩個(gè)取值:true 和 false弊决;
3.這種類型只作為一種標(biāo)志來記錄 true/false 情況;
4.默認(rèn)值是 false魁淳;
5.例子:boolean one = true飘诗。
char
1.char類型是一個(gè)單一的 16 位 Unicode 字符;
2.最小值是 \u0000(即為0)界逛;
3.最大值是 \uffff(即為65,535)昆稿;
4.char 數(shù)據(jù)類型可以儲(chǔ)存任何字符;
5.例子:char letter = 'A';
數(shù)據(jù)類型代碼實(shí)例
這個(gè)實(shí)例是我在網(wǎng)上找的仇奶,可能在其他的地方看到一樣貌嫡,各位看官不要介意氨茸ぁ(/尷尬)
貼代碼
public class MyTypeTest {
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輸出到控制臺(tái)
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以數(shù)值形式而不是字符形式將Character.MAX_VALUE輸出到控制臺(tái)
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
運(yùn)行結(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
代碼實(shí)例總結(jié)
Float和Double的最小值和最大值都是以科學(xué)記數(shù)法的形式輸出的,結(jié)尾的"E+數(shù)字"表示E之前的數(shù)字要乘以10的多少次方岛抄。比如3.14E^3就是3.14 × 10^3 =3140别惦,3.14E^-3 就是 3.14 x 10^-3 =0.00314。