1. 程式人生 > >java基礎——1——資料型別

java基礎——1——資料型別

Java語言支援的資料型別分為兩類:基本資料型別引用型別
1、基本資料型別共8種,分為布林型別(boolean)和數值型別,數值型別又分為整數型別和浮點型別。整數型別包括byte、short、int、long、char,浮點型別包括float(單精度浮點)和double(雙精度浮點)。
2、引用型別包括類、介面和陣列型別,還有一種特殊null型別。引用資料型別就是對一個物件的引用,物件包括例項和陣列兩種。空型別(null)就是null值型別,這種型別沒有名稱,所以不能宣告一個null型別的變數或者轉換到null型別。
數值分常量和變數。
常量:在程式執行中,不會改變的量。字元常量,字串常量,整數常量,布林值常量。
基本資料型別


一.整型:
1.byte:byte(1位元組長度)型別的整數在記憶體裡佔8位,表示的範圍是:-128(-2的7次方) ~ 127 (2的7次方-1)
位元組:計算機的處理資訊的最小單位。1位元組=8位二進位制數。
2.short:short(2個位元組長度)型別整數在記憶體裡佔16位,表示範圍-32768 ~ 32767
3.int:int(4個位元組長度)型別在記憶體中32位,表示範圍-2147483648 ~ 2147483647
4.long:long(8個位元組長度)型別在記憶體中64位,表示範圍-9223372036854775808 ~ 9223372036854775807
int型別是常用的整數型別,Java整數常量預設的就是int型別。byte,short定義時,他們接收的其實是一個int型別的值 。使用byte或者short型別時,整數的範圍不能超過型別的範圍,超出範圍就會報錯。
但是使用幾個巨大的整數常量時,Java不會自動把整個整數常量當成long型別,所以需要在整數常量後面加上L作為字尾,例如:long a = 99999999999999999L;
java中整數常量有4種表示方式:十進位制,二進位制(0b或者0B開頭,0,1組成),八進位制(以0開頭,0-7組成),十六進位制(以0x或者0X開頭,0-9,a,b,c,d,e,f表示(大小寫都可以))。
舉例:int octalValue = 013; //八進位制轉換成十進位制表示11
int hexValue1 = 0X13; //十六進位制轉換成十進位制表示19
int hexValue2 = 0XAF; //十六進位制轉換成十進位制表示175
int binValue1 = 0B11011; //二進位制轉換成十進位制表示27(JDK1.7中新增特性)
二.字元型:
字元型常用於表示單個字元,字元常量必須使用單引號括起來,例如:char a = ‘a’;char型別的值也可以直接作為整數型別的值來使用,是一個16位的無符號整數,範圍是0 ~ 65535。
補充內容:
1、ASCII碼:一個英文字母(不分大小寫)佔一個位元組的空間,一箇中文漢字佔兩個位元組的空間。一個二進位制數字序列,在計算機中作為一個數字單元,一般為8位二進位制數,換算為十進位制。最小值0,最大值255。如一個ASCII碼就是一個位元組。
2、UTF-8編碼:一個英文字元等於一個位元組,一箇中文(含繁體)等於三個位元組。
3、Unicode編碼:一個英文等於兩個位元組,一箇中文(含繁體)等於兩個位元組。
4、符號:英文標點佔一個位元組,中文標點佔兩個位元組。舉例:英文句號“.”佔1個位元組的大小,中文句號“。”佔2個位元組的大小。
三.浮點型:
Java浮點型別:float和double。預設的是double型別。float佔4個位元組(byte)32位,double佔8個位元組(byte)64個長度。
float型別的常量後面必須以f或者F結尾,例如:float a = 12.55f; double型別的常量後面可以d或者D結尾,但是不強制追加,不寫也沒有問題。
特殊情況:正無窮大、負無窮大、非數分別用基本資料型別對應的封裝類來表示。
float c = Float.NaN; //不是一個數
float d = Float.NEGATIVE_INFINITY; //負無窮大
int e = Integer.MIN_VALUE; //最小值
五.布林型
布林型只有一個boolean型別,用於表示邏輯上的“真”或者“假”,數值只能是true或者false

基本資料型別轉換
Java程式中,不同的基本型別的值經常需要進行相互轉換,Java提供了兩種型別轉換方式:自動型別轉換和強制型別轉換。
將一種基本資料型別的值直接賦給另一種基本資料型別,則這種方式被稱為自動型別轉換。前提是把一個範圍小的數值或變數直接賦值給另一個數據範圍大的變數時,系統可以進行自動型別轉換。
自動轉換順序:byte->short->int->long->float->double—>char
這裡byte,short,char他們參與運算時首先會自動轉換成大範圍型別再參加運算。有int型別就轉換成int型別,有long型別的就轉換成long型別再參加運算。
將大範圍的資料向小範圍的資料進行轉換則需要進行強制轉換.

  1. byte b1=3,b2=4,b; b=b1+b2; b=3+4;什麼問題,如何解決?
    b=b1+b2;錯誤:這個是型別提升,所以出錯;
    b1和b2是byte型在計算的時候先升級到int型,
    再轉換成byte型出錯*
    b=3+4;//正確:常量,先將結果計算出來,
    再看結果是否在byte型別內,如果在就不報錯