數據類型-Java基礎一-初學者筆記

初學者筆記java

1.Java中的兩種類型

  在java源代碼中,每一個變量都必須聲明一種類型(type)。
有兩種類型:primitive type和reference type。引用類型引用對象(reference to object),基本類型直接包含值(directly contain value)。數組

primitive types(基本類型)

  包括boolean類型以及數值類型(numeric types)共8種。
numeric types又分爲整型(integer types)和浮點型(floating-point type)。
整型有5種:byte short int long char(char本質上是一種特殊的int)。
浮點類型有:float和double。編碼

reference to object(引用類型飲用對象)

包括四種code

  1. class type類類型;
  2. interface type接口類型;
  3. array type數組類型;
  4. null type;

  Java是強類型語言,全部的變量必須先聲明後使用,定義變量須要顯示的聲明一個在編譯時就能肯定的類型。
Java中的數據類型有兩種,基本類型(Primitive Type)和引用類型(Reference Type)。對象

2.基本數據類型

Java提供了八種基本數據類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。接口

通常把基本類型分爲4類,以下表:unicode

分類 類型 長度
整數型 int 32位
--- long 64位
--- short 16位
--- byte 8位
字符型 char 16位
浮點型 double 64位
--- float 32位
布爾型 boolean 1位

整型:

int爲最經常使用的整型變量。系統中的整數常量會被看做int處理。但有如下兩個例外:字符串

  1. 若是一個整數很小(在byte或short)的範圍內,當這個整數常量被付給一個byte或short變量時,整數常量會被看成byte或short類型。
  2. 若是一個巨大的整數常量(超出了Int的存儲範圍)時,系統不會把這個整數看成long類型處理,除非用戶在常量後加上一個字母"L"。

示例:get

1.  publicclass IntegerValTest{
2.  publicstaticvoidmain(String\[\]args){
3.  //下面代碼是正確的,系統會自動把56當成byte類型處理
4.  bytea=56;
5.  /*
6.  下面代碼是錯的,系統不會把9999999999999當成long類型處理,
7.  因此超出int的表數範圍,從而引發錯誤
8.  */
9.  //longbigValue=9999999999999;
10.  //下面代碼是正確的,在巨大的整數常量後使用L後綴,強制使用long類型
11.  longbigValue2=9223372036854775807L;

13.  //以0開頭的整數常量是8進制的整數
14.  intoctalValue=013;
15.  System.out.println(octalValue);
16.  //以0x或0X開頭的整數常量是16進制的整數
17.  inthexValue1=0x13;
18.  inthexValue2=0XaF;

21.  System.out.println(hexValue1);
22.  System.out.println(hexValue2);

25.  //定義二個8位的二進制數
26.  intbinVal1=0b11010100;
27.  bytebinVal2=0b01101001;
28.  //定義一個32位的二進制數,最高位是符號位。
29.  intbinVal3=0B10000000000000000000000000000011;
30.  System.out.println(binVal1);//輸出212
31.  System.out.println(binVal2);//輸出105
32.  System.out.println(binVal3);//輸出-2147483645
33.  /*
34.  定義一個8位的二進制,該數值默認佔32位,所以它是一個正數。
35.  只是強制類型轉換成byte時產生了溢出,最終致使binVal4變成了-23
36.  */
37.  bytebinVal4=(byte)0b11101001;
38.  /*
39.  定義一個32位的二進制數,最好位是符號位。
40.  但因爲數值後添加了L後綴,所以該整數的實際佔64位,第32位的1不是符號位。
41.  所以binVal5的值等於2的31次方+2+1
42.  */
43.  longbinVal5=0B10000000000000000000000000000011L;
44.  System.out.println(binVal4);//輸出-23
45.  System.out.println(binVal5);//輸出2147483651
46.  }
47.  }

字符型

  字符型用於表示耽擱的字符。字符常量一般用單引號(')括起來。Java使用unicode編碼方式,因此字符型變量可以表示大部分國家的文字字符。it

字符表示有如下幾種方式:

  1. 直接使用字符常量:如 ‘a’、'我'等。
  2. 使用轉移字符:如'\n'、'\t'等。
  3. 使用unicode表示字符:如'\uxxxx',其中x表示一個十六進制整數。

若是把一個整數(0~65535之間)常量賦給字符類型變量,系統會把整數看成char處理。

示例:

1.  publicclassCharTest{
2.  publicstaticvoidmain(String\[\]args){
3.  //直接指定單個字符做爲字符常量
4.  charaChar='a';
5.  //使用轉義字符來做爲字符常量
6.  charenterChar='\\r';
7.  //使用Unicode編碼值來指定字符常量
8.  charch='\\u9999';
9.  //將輸出一個'香'字符
10.  System.out.println(ch);
11.  //定義一個'瘋'字符常量
12.  charzhong='瘋';
13.  //直接將一個char變量當成int類型變量使用
14.  intzhongValue=zhong;
15.  System.out.println(zhongValue);
16.  //直接把一個0~65535範圍內的int整數賦給一個char變量
17.  charc=97;
18.  System.out.println(c);
19.  }
20.  }

浮點型

  Java中浮點型有兩種:double和float,兩個浮點型的長度分別爲64位和32位,且長度不因環境的改變而改變。浮點數的特色是不可以精確的表示一個小數位數較多的小數。

浮點數有兩種表示方式:

  1. 十進制表示:3.十一、5.二、4等
  2. 科學計數法表示:4.12E三、5.12E2;

java中一個浮點數常量默認爲double類型,若是要系統把一個小數常量看成float處理,須要在小數後加上f字母。
示例:

1.  publicclassFloatTest{
2.  publicstaticvoidmain(String\[\]args){
3.  floataf=5.2345556f;
4.  //下面將看到af的值已經發生了改變
5.  System.out.println(af);
6.  doublea=0.0;
7.  doublec=Double.NEGATIVE_INFINITY;
8.  floatd=Float.NEGATIVE_INFINITY;
9.  //看到float和double的負無窮大是相等的。
10.  System.out.println(c==d);
11.  //0.0除以0.0將出現非數
12.  System.out.println(a/a);
13.  //兩個非數之間是不相等的
14.  System.out.println(a/a==Float.NaN);
15.  //全部正無窮大都是相等的
16.  System.out.println(6.0/0==555.0/0);
17.  //負數除以0.0獲得負無窮大
18.  System.out.println(-8/a);
19.  //下面代碼將拋出除以0的異常
20.  //System.out.println(0/0);
21.  }
22.  }

布爾型

  布爾型只有一個boolean類型,用於表示邏輯真或者邏輯假。boolean的值只能爲true或者是false,其餘基本類型不能轉換到boolean類型。

示例:

1.  publicclassBooleanTest{
2.  publicstaticvoidmain(String\[\]args){
3.  booleanb1=true;
4.  booleanb2=false;
5.  //下面代碼將出現錯誤:字符串不能直接變成boolean型的值
6.  //booleanb3="true";
7.  //使用boolean和字符串進行鏈接運算,boolean會自動轉換成字符串
8.  Stringstr=true+"";
9.  //下面將輸出true
10.  System.out.println(str);
11.  }
12.  }

3.基本類型之間的轉換

  Java中基本類型有兩種轉換方式自動轉換和強制轉換。講一個表數範圍小的變量賦給一個表數範圍大的變量,系統將進行自動轉換,將小便量轉換爲大變量在進行賦值操做。

示例:

1.  publicclassAutoPromote{
2.  publicstaticvoidmain(String\[\]args){
3.  //定義一個short類型變量
4.  shortsValue=5;
5.  //下面代碼將出錯:表達式中的sValue將自動提高到int類型,
6.  //則右邊的表達式類型爲int,將一個int類型賦給short類型的變量將發生錯誤。
7.  //sValue=sValue-2;
8.  byteb=40;
9.  charc='a';
10.  inti=23;
11.  doubled=.314;
12.  //右邊表達式中在最高等級操做數爲d(double型)
13.  //則右邊表達式的類型爲double型,故賦給一個double型變量
14.  doubleresult=b+c+i*d;
15.  //將輸出144.222
16.  System.out.println(result);
17.  intval=3;
18.  //右邊表達式中2個操做數都是int,故右邊表達式的類型爲int
19.  //所以,雖然23/3不能除盡,依然獲得一個int整數
20.  intintResult=23/val;
21.  //將輸出7
22.  System.out.println(intResult);
23.  //輸出字符串Hello!a7
24.  System.out.println("Hello!"+'a'+7);
25.  //輸出字符串104Hello!
26.  System.out.println('a'+7+"Hello!");

29.  }
30.  }

  若是系統把大範圍變量轉換爲小範圍變量就須要強制轉換,強制轉換的語法格式是(type)value,可將valae強制轉換爲type類型的變量。當強制轉換可能會致使數據精度的丟失,請看示例:

1.  publicclassNarrowConversion{
2.  publicstaticvoidmain(String\[\]args){
3.  intiValue=233;
4.  //強制把一個int類型的值轉換爲byte類型的值
5.  bytebValue=(byte)iValue;
6.  //將輸出-23
7.  System.out.println(bValue);
8.  doubledValue=3.98;
9.  //強制把一個double類型的值轉換爲int
10.  inttol=(int)dValue;
11.  //將輸出3
12.  System.out.println(tol);
13.  }
14.  }

4.表達式類型的自動提高

當一個算術表達式中包含多個基本類型時,整個表達式的類型會發生自動提高,Java定義了以下的提高規則:

  • 全部的byte類型,short類型和char經提高到int類型。
  • 怎個算術表達式的數據類型提高到最高等級操做時的類型。

示例:

1.  publicclassAutoPromote{
2.  publicstaticvoidmain(String\[\]args){
3.  //定義一個short類型變量
4.  shortsValue=5;
5.  //下面代碼將出錯:表達式中的sValue將自動提高到int類型,
6.  //則右邊的表達式類型爲int,將一個int類型賦給short類型的變量將發生錯誤。
7.  //sValue=sValue-2;
8.  byteb=40;
9.  charc='a';
10.  inti=23;
11.  doubled=.314;
12.  //右邊表達式中在最高等級操做數爲d(double型)
13.  //則右邊表達式的類型爲double型,故賦給一個double型變量
14.  doubleresult=b+c+i*d;
15.  //將輸出144.222
16.  System.out.println(result);
17.  intval=3;
18.  //右邊表達式中2個操做數都是int,故右邊表達式的類型爲int
19.  //所以,雖然23/3不能除盡,依然獲得一個int整數
20.  intintResult=23/val;
21.  //將輸出7
22.  System.out.println(intResult);
23.  //輸出字符串Hello!a7
24.  System.out.println("Hello!"+'a'+7);
25.  //輸出字符串104Hello!
26.  System.out.println('a'+7+"Hello!");
27.  }
28.  }

5.Java中的引用數據類型

  1. 引用類型指向一個對象,指向對象的變量是引用變量。這些變量在聲明時候被指定爲一個特定的類型,聲明以後不能改變。
  2. 引用數據類型包括:類(對象)、接口、數組。
  3. 全部引用類型默認值都是null.
  4. 一個引用變量能夠用於引用任何與之兼容的類型。
相關文章
相關標籤/搜索