程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java學習整理筆記(三)數據類型,java數據類型

Java學習整理筆記(三)數據類型,java數據類型

編輯:JAVA綜合教程

Java學習整理筆記(三)數據類型,java數據類型


數據類型:

數據類型確定了數據在內存中占用的存儲空間以及存儲方式。每個數據類型都有它的取值范圍,編譯器根據每個變量或常量的數據類型為其分配內存空間。

Java語言的數據類型可以分為兩類:一類是簡單數據類型(或基本數據類型),例如整數類型、浮點數類型、字符型類型和布爾類型等;另一種是引用類型,例如數組類型、類、接口等。

一、基本數據類型

8種基本數據類型,分別是字節型(byte)、短整型(short)、整型(int)、長整型(long)、字符型(char)、浮點型(float)、雙精度型(double)、布爾型(boolean)。

1.整數類型:

Java使用4種類型的整數:byet、short、int 和 long,都是有符號的整數。

(與有符號整數對應的是無符號整數,兩者的區別在於把二進制數轉換為十進制數的方式不一樣。有符號數把二進制的首位作為符號位,當首位數是0時,對應十進制的正整數;當首位是1時,對應十進制的負整數。無符號整數在進行進制轉換時,把二進制的所有位轉化為正整數。)

注意:Java不支持僅僅是正的無符號的整數。

(1)字節型(byte):最小的整數類型。有符號的8位類型,數的范圍是 -128~127。當從網絡或文件處理數據流的時候,字節類型的變量特別有用。

聲明字節變量: byte 變量名;

(2)短整型(short):有符號的16位類型,數的范圍是 -32768~32767。因為它被定義為高字節優先(稱為 big-endian格式),它可能是Java中使用的最好的類型。

聲明短整型變量: short 變量名;

(3)整型(int):最常用的整數類型。有符號的32位類型,數的范圍是 -2147 483 648~2147 483 647。int類型的變量通常被用來控制循環及作為數組的下標。

任何時候,如果整數表達式包含 byte、short、int及整型常量。在進行計算以前,所有表達式的類型被提升(自動轉換)到整型。

聲明整型變量: int 變量名;

(4)長整型(long):有符號的64位類型,它對於那些整型不足以保存所要求的數值時是有用的。長整型數的范圍是相當大的。

聲明長整型變量: long 變量名;

2.浮點型:

Java使用兩種類型的浮點數:float和double。double型的存儲空間是float型的兩倍,所以double型又稱為雙精度,而float型又稱為單精度。當數據或表達式的值有精度要求時,需要使用浮點型數據。

(1)單精度浮點型(float):專指占用32位存儲空間的單精度值(Single-Precision)。單精度在一些處理器上比雙精度更快而且只占用雙精度一般的空間,但是當值很大或很小的時候,它將變得不精確。當需要小數部分並且對精度的要求不高時,單精度浮點型的變量是有用的。

聲明單精度浮點型變量: float 變量名;

(2)雙精度浮點型(double):占用64位的存儲空間。所有超出人類經驗的數學函數,如sin()、cos()和sqrt()均返回雙精度的值。當需要保持多次返回迭代的計算的精確時,或在操作值很大的數字時,雙精度型是最好的選擇。

聲明雙精度浮點型變量: double 變量名;

3.字符型(char):

在計算機中,所有的數據在存儲和運算時都要使用二進制數表示(因為計算機用高電平和低電平表示1和0)。將字符映射為它的二進制形式的過程稱為編碼(Encoding)。

為了能夠實現互相通信而不造成混亂,就必須使用相同的編碼規則或編碼方式。當前使用最廣泛的兩種編碼方式是 統一碼(Unicode)和美國標准信息交換代碼(ASCII)碼。

在Java中,字符型數據用 char 關鍵字進行定義,采用Unicode碼代表字符,使用16位數據表示字符集。

4.布爾型(boolean):

Java中表示邏輯值的簡單類型。它的值只能是 true(真)或 false(假)這兩個值中的一個。它是所有的諸如 a<b 這樣的關系運算的返回類型。布爾類型對管理像 if、for這樣的控制語句的條件表達式也是必需的。

 

二、定義常量

在程序運行過程中,其值不能改變的量稱為常量。常量必須在同一條語句中聲明和賦值,final是聲明常量的Java關鍵字

程序中常量名所有字母最好用大寫形式,詞與詞之間可以用下劃線隔開。

Java中常用的常量有布爾型常量、整型常量、浮點型常量、字符常量和字符串常量。

1.布爾型常量:

布爾型常量用於表示兩個邏輯狀態之一的值:true(真)或false(假)。不同於C/C++語言,Java語言中規定不可將布爾型看成整型值。

注意:在Java語言中,true常量的值不等於1,false常量的值不等於0,它們僅僅能被賦給已定義的布爾變量,或在布爾運算符表達式中使用。

2.整型常量:

任何一個整數的值就是一個整數常量。整型常量可以用來給整型變量賦值。整型常量有3種表示形式:

(1)十進制整型常量:如 1,25,-37等。

(2)八進制整型常量:在Java語言中,以0開頭的整型量表示八進制整型常量,如 010 表示十進制的 8 ,-015 表示十進制的 -13。

(3)十六進制整型常量:在Java語言中,以 0x 或 0X 開頭的整型常量表示十六進制整型常量,如 0x10 表示十進制的 16 , -0X15 表示十進制的 -21 。

在Java語言中,整形常量的默認類型為int值,用4個字節表示。當一個整型常量的值被賦給一個 byte 或 short 型的變量時,如果常量的值沒有超過對應類型的范圍時不會產生錯誤。所以,整型常量總是可以被賦給一個long型變量。但是,如果要表示一個long類型的常量,則要特別指明,即通過在常量的後面加一個大寫或小寫的 L 來做到,如 1234567L 等。

3.浮點型常量:

浮點型常量是可以帶有小數點的數值型常量。根據占用內存長度的不同,可以分為一般浮點常量和雙精度常量。如果要表示一般浮點常量,可以在數值後面加上f或F;如果要表示雙精度常量,可以在數值後面加上d和D。

注意:Java中的浮點型常量默認是雙精度。

默認的雙精度類型要占用64位存儲空間,而精確低些的浮點類型僅僅需要32位。

4.字符常量:

Java用 Unicode字符集來表示字符。Java的字符是16位值,可以被轉換為整數並可進行像加(+)或減(-)這樣的整數運算。

在Java語言中,有以下兩種形式的字符常量:

(1)普通字符:用單引號括起來的一個字符,如 'A'、'0'、'$'等。不能寫成'AB'或'12'。

注意:單引號只是界限符,字符常量只能是一個字符,不包括單引號。'a'和'A'表示不同的字符常量。

(2)轉義字符:以字符\ 開頭的字符序列。這是一種在屏幕上無法顯示的“控制字符”,在程序中也無法用一個一般形式的字符來表示,只能采用這樣的特殊形式表示。

轉義字符及其作用 轉義字符 名稱 Unicode 輸出結果 \b 退格鍵 \u0008   將當前位置後退一個字符 \t  Tab鍵 \u0009   將當前位置移動到下一個Tab位置 \n 換行符號   \u0009A 將當前位置移動到下一行的開頭  \f 換頁  \u000C   將當前位置移動到下一頁的開頭  \r 回車鍵   \u000D  將當前位置移動到本行的開頭  \\ 反斜槓   \u005C  輸出此字符  \' 單引號   \u0027  輸出此字符  \" 雙引號   \u0022  輸出此字符 

 

 

5.字符串常量:

Java語言中用雙引號("")括起來的字符序列表示字符串。字符串可以包含轉義字符,標志字符串開始和結束的雙引號必須在同一行。

可以使用連接操作符(+)將兩個或多個字符串常量連接在一起組成一個新的字符串,例如 "Welcome"+"to China"的結果相當於"Welcome to China"。

注意:不能將 "ABC"錯寫為 'ABC'。單引號內只能包含一個字符,而雙引號內可以包含一個字符串。另外,'A'和"A"表示兩個不同的量,前者是一個字符常量,而後者是一個字符串常量。

在C/C++等大多數計算機語言中,字符串作為字符的數組被實現。然而,在Java中,字符串實際上是對象類型。

 

三、定義變量及其作用域

變量是Java程序的一個基本存儲單元,表示內存中的一小塊空間,用來存儲將在程序中用到的數據。在內存中可以有很多個這樣的小塊空間,為了加以區分,為它們起不同的名字,這個名字就叫變量名,通常簡稱為變量。被稱為變量是因為它們的值在程序執行中可以被改變。

變量名遵循標識符的定義規則,每個變量都有自己特定的類型,編譯器可以根據變量的數據類型為變量分配合適的存儲空間。

所有的變量都有一個作用域,定義變量的可見性與生存期。

1.定義變量:

在Java中,每個變量在使用之前必須先對其進行定義,即要遵循先定義後使用的原則。

定義變量的語法:

 

    數據類型 變量名[ = 初始值][,變量名 [ = 初始值]…];

 

數據類型可以是Java的基本類型之一,也可以是類及接口類型的名字。

變量名是用於標識該變量的名字,可以指定一個等號和一個值來初始化變量。

初始化表達式必須產生與指定的變量類型一樣(或兼容)的變量。

聲明指定類型的多個變量時,使用逗號將各變量分開。

例子:

int count;                    //聲明 count為一個整型變量
double radius = 2.0;        //聲明radius為一個double型變量,並賦初值為2.0
char ch = 'A';             //聲明ch為字符類型的變量,並賦初值為字符'A'

2.變量初始化:

變量通常都有初始值。在Java中,可以在定義變量的同時對其初始化,也允許在變量聲明時使用任何有效的表達式來動態的初始化變量。

初始化表達式可以使用任何有效的元素,包括方法調用、其他變量或字面量。

3.變量的作用域和生存期:

在Java語言中,每個變量都有一定的生存周期和有效范圍。變量的作用域就是變量的有效范圍,只有在這個范圍內,程序代碼才能訪問它。

與C語言一樣,Java用大括號將若干語句組成語句塊,變量的作用域都是定義它的語句所在的語句塊,一旦程序的執行離開了這個語句塊,變量就變得沒有意義,不能再使用了。

變量的生命周期是指從一個變量被創建並為其分配內存空間開始,到這個變量並銷毀並清除所占用的內存空間的過程。變量的作用域決定了變量的生命周期。

Java允許在任何程序塊定義變量。

按照作用域的不同,變量可以分為以下類型:

(1)成員變量:在類中聲明,它的作用域是整個類。

(2)局部變量:在一個方法的內部或者方法的一個代碼塊的內部聲明。如果在一個方法內部聲明,它的作用域就是整個方法;如果在一個方法的某個代碼塊的內部聲明,它的作用域就是這個代碼塊。

(3)方法參數:方法或者構造方法的參數,它的作用域是整個方法或者構造方法。

(4)異常處理參數:異常處理參數和方法參數很相似,差別在於前者是傳遞參數給異常處理代碼塊,而後者是傳遞參數給方法或者構造方法。異常處理參數是指 catch(Exception e)語句中的異常參數“e”,它的作用域是緊跟著catch(Exception e) 語句後的代碼塊。

(作為一個通用規則,在一個作用域中定義的變量對於該作用域外的程序是不可見(即訪問)的。因此,當在一個作用域中定義一個變量時,應將該變量局部化並且保護它不被非授權訪問和/或修改。實際上,作用域規則為封裝提供了基礎。)

 作用域可以進行嵌套。例如:每次創建一個程序塊時,就創建了一個新的嵌套的作用域。這樣,外面的作用域包含內部的作用域。這意味著外部作用域定義的對象對於內部作用域中的程序是可見的。但是,反過來是錯誤的,內部作用域定義的對象對於外部是不可見的。

例子:

class Scope{
    public static void main(String[] args){
        int x;      //定義局部變量x,在整個main()方法中有效
        x = 10;
        if(x==10){     //開始一個新的作用域
            int y = 20;    //定義局部變量y,在當前語句塊中有效
            System.out.println("x and y:"+x+" "+y);    //x和y在這裡均為有效
            x = y*2;
        }
        //y=100;     //錯誤,超出了y的作用范圍
        x=15;      //正確,x在此處依然有效
        System.out.println("x is"+x);
    }
}    

 

還有,變量在其作用域被創建,離開其作用域時被撤銷意味著一個變量一旦離開它的作用域,將不再保存它的值了。因此,一個變量的生存期就被限定在它的作用域中。如果一個變量定義包括一個初始化,那麼每次進入定義它的程序塊時,該變量都要被重新初始化。

盡管程序塊能被嵌套,不能將內部作用域聲明的變量與其外部作用域聲明的變量重名。這一點,Java不同於C和C++。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved