【Java】JAVA 基本數據類型|變量類型

變量就是申請內存來存儲值嘱支。也就是說勤婚,當創(chuàng)建變量的時候贮乳,需要在內存中申請空間屠升。
內存管理系統(tǒng)根據變量的類型為變量分配存儲空間,分配的空間只能用來儲存該類型數據誉尖。
Java的兩大數據類型:

  • 內置數據類型
  • 引用數據類型

內置數據類型

Java語言提供了八種基本類型罪既。六種數字類型(四個整數型,兩個浮點型)铡恕,一種字符類型琢感,還有一種布爾型。

byte

byte數據類型是8位探熔、有符號的以二進制補碼表示的整數驹针;
-128(-27)~127(27-1);
默認值是0诀艰;
例子:byte a = 100

short

short數據類型是16位柬甥、有符號的以二進制補碼表示的整數;
-32768(-215)~32767(215 - 1)涡驮;
一個short變量是int型變量所占空間的二分之一暗甥;
默認值是0;
例子:short s = 1000

int

int數據類型是32位捉捅、有符號的以二進制補碼表示的整數撤防;
-2,147,483,648(-231)~2,147,483,647(231 - 1);
一般地整型變量默認為int類型棒口;
默認值是0寄月;

long

long數據類型是64位、有符號的以二進制補碼表示的整數无牵;
-(263)~(263 -1)漾肮;
默認值是0L;
例子: long a = 100000L

float

float數據類型是單精度茎毁、32位的浮點數克懊;
默認值是0.0f;
浮點數不能用來表示精確的值七蜘;
例子:float f1 = 234.5f谭溉。

double

double數據類型是雙精度、64位浮點數橡卤;
浮點數的默認類型為double類型扮念;
double類型同樣不能表示精確的值;
默認值是0.0d碧库;
例子:double d1 = 123.4柜与。

boolean

boolean數據類型表示一位的信息巧勤;
只有兩個取值:true和false;
默認值是false弄匕;
例子:boolean one = true颅悉。

char

char類型是一個單一的16位Unicode字符;
’\u0000’(即為0)~’\uffff’(即為65,535)迁匠;
char數據類型可以儲存任何字符签舞;
例子:char letter = ‘A’。

例子

public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        // byte  
        System.out.println("基本類型:byte 二進制位數:" + 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 二進制位數:" + 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 二進制位數:" + 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 二進制位數:" + 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 二進制位數:" + 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 二進制位數:" + 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 二進制位數:" + Character.SIZE);  
        System.out.println("包裝類:java.lang.Character");  
        // 以數值形式而不是字符形式將Character.MIN_VALUE輸出到控制臺  
        System.out.println("最小值:Character.MIN_VALUE="  
                + (int) Character.MIN_VALUE);  
        // 以數值形式而不是字符形式將Character.MAX_VALUE輸出到控制臺  
        System.out.println("最大值:Character.MAX_VALUE="  
                + (int) Character.MAX_VALUE);  
    }  
}

運行

基本類型:byte 二進制位數:8
包裝類:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本類型:short 二進制位數:16
包裝類:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767

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

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

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

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

基本類型:char 二進制位數:16
包裝類:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

引用類型

  • 在Java中柒瓣,引用類型的變量非常類似于C/C++的指針。引用類型指向一個對象吠架,指向對象的變量是引用變量芙贫。這些變量在聲明時被指定為一個特定的類型,變量一旦聲明后傍药,類型就不能被改變了磺平。
  • 對象、數組都是引用數據類型拐辽。
  • 所有引用類型的默認值都是null拣挪。
  • 一個引用變量可以用來引用與任何與之兼容的類型。

Java常量

整形和浮點型常量

使用 final 關鍵字來修飾常量俱诸,聲明方式如下(常量通常使用大寫字母):

final double PI = 3.1415927;

byte菠劝、int、long睁搭、和short都可以用十進制赶诊、16進制以及8進制的方式來表示。
當使用常量的時候园骆,前綴0?表示8進制舔痪,而前綴0x代表16進制:

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

Java字符串常量

Java字符串常量也是包含在兩個引號之間的字符序列。

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

字符串常量和字符常量都可以包含任何Unicode字符锌唾。

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

Java轉義字符

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

Java 變量類型

Java支持的變量類型有:
局部變量
成員變量
類變量

Java局部變量

局部變量聲明在方法锄码、構造方法或者語句塊中;
局部變量在方法晌涕、構造方法滋捶、或者語句塊被執(zhí)行的時候創(chuàng)建,當它們執(zhí)行完成后渐排,變量將會被銷毀炬太;
訪問修飾符不能用于局部變量;
局部變量只在聲明它的方法驯耻、構造方法或者語句塊中可見亲族;
局部變量是在棧上分配的炒考。
局部變量沒有默認值,所以局部變量被聲明后霎迫,必須經過初始化斋枢,才可以使用。

實例1
在以下實例中age是一個局部變量知给。定義在pubAge()方法中瓤帚,它的作用域就限制在這個方法中。

package com.runoob.test;

public class Test{ 
   public void pupAge(){
      int age = 0;
      age = age + 7;
      System.out.println("小狗的年齡是: " + age);
   }
   
   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

運行結果:
小狗的年齡是: 7

實例2
在下面的例子中age變量沒有初始化涩赢,所以在編譯時會出錯:

public class Test{ 
   public void pupAge(){
      int age;
      age = age + 7;
      System.out.println("小狗的年齡是 : " + age);
   }
   
   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

運行結果:
Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

實例變量

實例變量聲明在一個類中戈次,但在方法、構造方法和語句塊之外筒扒;
當一個對象被實例化之后怯邪,每個實例變量的值就跟著確定;
實例變量在對象創(chuàng)建的時候創(chuàng)建花墩,在對象被銷毀的時候銷毀悬秉;
實例變量的值應該至少被一個方法、構造方法或者語句塊引用冰蘑,使得外部能夠通過這些方式獲取實例變量信息和泌;
實例變量可以聲明在使用前或者使用后;
訪問修飾符可以修飾實例變量祠肥;
實例變量對于類中的方法武氓、構造方法或者語句塊是可見的。一般情況下應該把實例變量設為私有仇箱。通過使用訪問修飾符可以使實例變量對子類可見聋丝;
實例變量具有默認值。數值型變量的默認值是0工碾,布爾型變量的默認值是false弱睦,引用類型變量的默認值是null。變量的值可以在聲明時指定渊额,也可以在構造方法中指定况木;
實例變量可以直接通過變量名訪問。但在靜態(tài)方法以及其他類中旬迹,就應該使用完全限定名:ObejectReference.VariableName火惊。

實例:

import java.io.*;
public class Employee{
   // 這個成員變量對子類可見
   public String name;
   // 私有變量,僅在該類可見
   private double salary;
   //在構造器中對name賦值
   public Employee (String empName){
      name = empName;
   }
   //設定salary的值
   public void setSalary(double empSal){
      salary = empSal;
   }  
   // 打印信息
   public void printEmp(){
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]){
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

運行結果:
name  : Ransika
salary :1000.0

類變量(靜態(tài)變量)

類變量也稱為靜態(tài)變量奔垦,在類中以static關鍵字聲明屹耐,但必須在方法構造方法和語句塊之外。
無論一個類創(chuàng)建了多少個對象椿猎,類只擁有類變量的一份拷貝惶岭。
靜態(tài)變量除了被聲明為常量外很少使用寿弱。常量是指聲明為public/private,final和static類型的變量按灶。常量初始化后不可改變症革。
靜態(tài)變量儲存在靜態(tài)存儲區(qū)。經常被聲明為常量鸯旁,很少單獨使用static聲明變量噪矛。
靜態(tài)變量在程序開始時創(chuàng)建,在程序結束時銷毀铺罢。
與實例變量具有相似的可見性艇挨。但為了對類的使用者可見,大多數靜態(tài)變量聲明為public類型韭赘。
默認值和實例變量相似雷袋。數值型變量默認值是0,布爾型默認值是false辞居,引用類型默認值是null。變量的值可以在聲明的時候指定蛋勺,也可以在構造方法中指定瓦灶。此外,靜態(tài)變量還可以在靜態(tài)語句塊中初始化抱完。
靜態(tài)變量可以通過:ClassName.VariableName的方式訪問贼陶。
類變量被聲明為public static final類型時,類變量名稱必須使用大寫字母巧娱。如果靜態(tài)變量不是public和final類型碉怔,其命名方式與實例變量以及局部變量的命名方式一致。

實例:

import java.io.*;
public class Employee {
    //salary是靜態(tài)的私有變量
    private static double salary;
    // DEPARTMENT是一個常量
    public static final String DEPARTMENT = "開發(fā)人員";
    public static void main(String args[]){
    salary = 10000;
        System.out.println(DEPARTMENT+"平均工資:"+salary);
    }
}
以上實例編譯運行結果如下:
開發(fā)人員平均工資:10000.0import java.io.*;
public class Employee {
    //salary是靜態(tài)的私有變量
    private static double salary;
    // DEPARTMENT是一個常量
    public static final String DEPARTMENT = "開發(fā)人員";
    public static void main(String args[]){
    salary = 10000;
        System.out.println(DEPARTMENT+"平均工資:"+salary);
    }
}
以上實例編譯運行結果如下:
開發(fā)人員平均工資:10000.0

注意:如果其他類想要訪問該變量禁添,可以這樣訪問:Employee.DEPARTMENT撮胧。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市老翘,隨后出現(xiàn)的幾起案子芹啥,更是在濱河造成了極大的恐慌,老刑警劉巖铺峭,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墓怀,死亡現(xiàn)場離奇詭異,居然都是意外死亡卫键,警方通過查閱死者的電腦和手機傀履,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莉炉,“玉大人钓账,你說我怎么就攤上這事碴犬。” “怎么了官扣?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵翅敌,是天一觀的道長。 經常有香客問我惕蹄,道長蚯涮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任卖陵,我火速辦了婚禮遭顶,結果婚禮上,老公的妹妹穿的比我還像新娘泪蔫。我一直安慰自己棒旗,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布撩荣。 她就那樣靜靜地躺著铣揉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪餐曹。 梳的紋絲不亂的頭發(fā)上逛拱,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音台猴,去河邊找鬼朽合。 笑死,一個胖子當著我的面吹牛饱狂,可吹牛的內容都是我干的曹步。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼休讳,長吁一口氣:“原來是場噩夢啊……” “哼讲婚!你這毒婦竟也來了?” 一聲冷哼從身側響起俊柔,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤磺樱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后婆咸,有當地人在樹林里發(fā)現(xiàn)了一具尸體竹捉,經...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年尚骄,在試婚紗的時候發(fā)現(xiàn)自己被綠了块差。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖憨闰,靈堂內的尸體忽然破棺而出状蜗,到底是詐尸還是另有隱情,我是刑警寧澤鹉动,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布轧坎,位于F島的核電站,受9級特大地震影響泽示,放射性物質發(fā)生泄漏缸血。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一械筛、第九天 我趴在偏房一處隱蔽的房頂上張望捎泻。 院中可真熱鬧,春花似錦埋哟、人聲如沸笆豁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闯狱。三九已至,卻和暖如春抛计,著一層夾襖步出監(jiān)牢的瞬間哄孤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工爷辱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朦肘。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓饭弓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親媒抠。 傳聞我的和親對象是個殘疾皇子弟断,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容