1. 程式人生 > >Java初學者的精神食糧——語言基礎之識別符號、資料型別、變數和常量

Java初學者的精神食糧——語言基礎之識別符號、資料型別、變數和常量

一、Java識別符號

1、識別符號(identifier)

java程式設計中識別符號是賦予變數、物件、類和方法的名稱

  1. 識別符號可以由字母,數字,下劃線_,和"$"組成
  2. 識別符號必須以字母、下劃線_或$開頭,之後可以跟其他字元
  3. 識別符號嚴格區分大小寫,無長度限制
  4. 在自定義識別符號的時候,應該使其能夠反映表示的變數、物件或類的意義 例如: 2mail (不能以數字開頭) room# 為非法標識別符號

2、關鍵字(keyword)

關鍵字是一種特定專用的識別符號,不允許重新定義其含義。

關鍵字都用小寫字母表示

常用的關鍵字有: 在這裡插入圖片描述

Java中沒有goto和const

二、資料型別

資料型別基本型別
引用型別數值型別字元型別布林型Boolean類/介面/陣列String列舉整數型浮點型charbyte/short/int/longfloat/double

1.基本資料型別

基本資料型別的變數在堆疊中直接包含其資料,每個變數都有自己的資料副本。

①取值範圍

資料型別 位元組 取值範圍 預設值
byte 1 -27~(27-1) 0
char 2 \u000~\ufff \u0000
short 2 -215~(215-1) 0
int 4 -231~(231-1) 0
long 8 -263~(263-1) 0
float 4 3.4E-38~3.4E38 0.0F
double 8 1.7E-308~1.7E308 0.0D
boolean 1 true/false false

1Byte(位元組)=8bit(位)

128 64 32 16 8 4 2 1
27 26 25 24 23 22 21 20

②型別轉換(可能會導致資料的溢位或者精度的下降)

  • 自動型別轉換(隱式轉換):小範圍型別到大範圍型別
 byte b = 20;
 int a = b; //大型別可以容納小型別
  • 強制型別轉換(顯示轉換):大範圍型別到小範圍型別
int a;
byte b = (byte)a;  //強制讓小型別容納大型別
  • 運算過程中轉換:
short sh1=(short)(sh+3)  

圖中的虛線表示可能會降低精度

圖中的虛線表示可能會降低精度

2.引用資料型別

引用資料型別的變數在堆疊中儲存對資料的引用地址,資料儲存在堆中。

三、變數與常量

1.變數

變數是程式中的基本儲存單元,在程式執行的時候得到其資料,可以修改。

①變數的作用域(變數的可被訪問範圍)

  • 成員變數 (在類內部宣告的變數)即類的欄位
  • 方法體區域性變數(花括號之內宣告的變數)必須初始化才可以使用
  • 語句塊區域性變數(在控制結構塊中宣告的變數,例如for、if語句中宣告的變數)

切記:java中沒有全域性變數!

2.常量

常量是指在程式執行過程中值不變的量

  • 整型常量 整型常量在機器中佔32位。 ①十進位制整數 (以10為基數): 123,-345,0 ②八進位制整數 (以8為基數):以0開頭,如0123表示十進位制數83,-011表示十進位制數-9 ③十六進位制整數(以16為基數):0x或0X開頭,0x123表示十進位制數291,-0x12表示十進位制數-18
  • 浮點數型別常量 ①十進位制數形式,由數字和小數點組成:0.23 .23 23. 23.0 ②科學計數法形式: 123e3或123E3
  • 布林型常量 ①true ②false
  • 字元型別常量 在單引號‘’之內的字元,常用有很多轉義字元 在這裡插入圖片描述
  • 字串型別常量 在雙引號“”之內的一串字元,在java中字串常量作為String類的一個物件來處理。
  • null型常量(空引用) 引用型別的唯一文字常量,可以為任何引用型別,賦值給任何引用型別的變數。
  • 使用者宣告常量
 final int  A = 1;

四、必懂拓展

1.裝箱(包)和拆箱(包)

裝箱和拆箱可以實現簡單型別和引用型別之間的轉換

8種簡單型別 對應的包裝類
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double

①裝箱:(自動裝包)將簡單型別包裝成對應的包裝類(呼叫valueOf方法

程式碼:Integer a = 100;    //  Integer.valueOf

反編譯

在這裡插入圖片描述

檢視原始碼

由反編譯得出的結果看到呼叫了Integer.valueOf方法 在這裡插入圖片描述

例:

public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        Integer a1 = 200;
        Integer a2 = 200;
        Integer b1 = 100;
        Integer b2 = 100;

        System.out.println( a == b);
        System.out.println( a1 == a2);
        System.out.println( b1 == b2);
    }
}

執行結果: 在這裡插入圖片描述

如果是簡單型別,比較的是數值是否相等 (a == b)

如果是引用型別:比較地址

如果在範圍[-127 ~ 128]之內則放進快取,不在int範圍[-127~128]以內要建立一個新的物件

integer a1=new integer(200)
integer a2=new integer(200) 
system.out.printLn(a1  == a2)    //打印出true

②拆箱:(自動拆包)將包裝類轉化為基本型別(呼叫intvalue方法

程式碼:
Integer a=10;
int a1=a;
double d=a.doubleValue;  //將a強轉為double型賦給double

反編譯

在這裡插入圖片描述

檢視原始碼

在這裡插入圖片描述