Java【第一篇】基本語法之--關鍵字、標識符、變量及分類、數據類型及轉換


關鍵字

定義:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞)
特點:關鍵字中所有字母都為小寫 

標識符

Java 對各種變量、方法和類等要素命名時使用的字符序列稱為標識符
凡是自己可以起名字的地方都叫標識符。
定義合法標識符規則:
  由26個英文字母大小寫,數字:0-9 ,_或 $ 組成
  數字不可以開頭。
  不可以使用關鍵字和保留字,但能包含關鍵字和保留字。
  Java中嚴格區分大小寫,長度無限制。
  標識符不能包含空格。
注意:在起名字的時,為了提高閱讀性,要盡量有意義,“見名知意”。 

Java中的名稱命名規范

包名:多單詞組成時所有字母都小寫:xxxyyyzzz
類名接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz(帕斯卡式命名法)
變量名和函數名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz(駱駝式命名法/駝峰式命名法)
常量名:所有字母都大寫。多單詞時每個單詞用下划線連接:XXX_YYY_ZZZ

變量

概念:
  內存中的一個存儲區域
  該區域有自己的名稱(變量名)和類型(數據類型)
  Java中每個變量必須先聲明,后使用
  該區域的數據可以在同一類型范圍內不斷變化,用來存儲程序運行時的數據
變量的三要素:
  變量名、變量類型、變量值
定義變量的格式:
  數據類型 變量名 = 初始化值;   同時定義多個變量 int a = 5, b = 8, c;  // 以逗號隔開

變量是通過使用變量名來訪問這塊區域的
Java是強類型語言,每個變量必須先聲明類型,后使用.
使用變量注意:變量的作用域:一對{ }之間有效

變量的分類

按被聲明的位置划分:

  成員變量:方法外部、類的內部定義的變量
  局部變量:方法或語句塊內部定義的變量【語句塊,比如某個函數內一個{}內的變量】
  注意:類外面(類對應的大括號外面)不能有變量的聲明

按所屬的數據類型(或者是存儲方式)划分:

  基本數據類型變量
  引用數據類型變量

基本數據類型的值存儲在棧內存中
引用數據類型的名稱存儲在棧內存中、值存儲在堆內存中

 

語句塊(變量只在定義它的{}內有效,且是包裹變量定義最近的{})

package com.uncleyong;

public class Test {
    //成員變量
    int c = 12;

    public static void main(String[] args) {
        int a = 12;
        System.out.println(a);
        // 語句塊
        {
            int b = 15;
            System.out.println(b);
        }
//        System.out.println(b);  // 報錯,Error:(15, 28) java: 找不到符號:   變量 b
//        System.out.println(c);  // Error:(16, 28) java: 無法從靜態上下文中引用非靜態 變量 c
    }
}

  

按數據類型划分

對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間。

Java中的基本數據類型有八種:byte、short、int、long、float、double、char、boolean

字符串也是引用類型

基本數據類型的值直接放在棧里

引用數據類型的值放在堆中,棧里存的堆內存中存放數據的首地址(引用)

數據類型及轉換

整數類型:byte、short、int、long 

Java各整數類型有固定的表數范圍和字段長度,不受具體 OS 的影響,以保證 java 程序的可移植性。
Java 的整型常量默認為 int 型(大部分情況下,用int就可以了),聲明 long 型常量須后加 ‘l’ 或 ‘L’

浮點類型:float、double

與整數類型類似,Java 浮點類型也有固定的表數范圍和字段長度,不受具體OS的影響
Java 的浮點型常量默認為 double 型,聲明 float 型常量,須后加 ‘f’ 或 ‘F’,float i5 = 12.34F;
浮點型常量有兩種表示形式:
  十進制數形式:如:5.12 512.0f .512 (必須有小數點)
  科學計數法形式:如:5.12e2 512E2 100E-2

package com.uncleyong;
// 注意: 直接給 byte 類型的變量賦值為一個合法范圍內的數值, 可以通過編譯;但是,不能把int型變量賦值給byte變量,比如int a = 1; byte b = c;
// 而直接給 float 類型的變量賦值為一個合法范圍內的浮點型, 則不能通過編譯,數值后面需要加F或者f
// 但是可以把一個整數賦值給float
public class Test {
    public static void main(String[] args) {
        byte a = 15;
        int b = 1;
//        byte c = b;
        float d = 3.14F;
        float e = 2;
        System.out.println(b + ", " + e);
        System.out.println("b = "+ b +", e = "+ e);

    }
}

1, 2.0
b = 1, e = 2.0

字符類型:char

 

char 型數據用來表示通常意義上"字符"。
字符型常量的三種表現形式:
  字符常量是用單引號(‘ ’)括起來的單個字符,涵蓋世界上所有書面語的字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
  Java中還允許使用轉義字符‘\’來將其后的字符轉變為特殊字符型常量。例如:char c3 = '\n'; -- '\n'表示換行符,另外,\" 表示雙引號,\t 表示制表符Tab,\\ 表示反斜杠
  直接使用 Unicode 值來表示字符型常量:‘\uXXXX’。其中,XXXX代表一個十六進制整數。如:\u000a 表示 \n。
char 類型是可以進行運算的。因為它都對應有 Unicode 值。

public class Test2 {
    public static void main(String[] args) {
        //字符型
        char c1 = '我';
        System.out.print(c1);

        //轉義字符,換行
        char c2 = '\n';
        System.out.print(c2);

        //System.out.println() 打印后換行, System.out.print() 打印后不換行
        System.out.println(c1);


        //使用 unicode 編碼來標示字符
        char c3 = '\u0061';
        System.out.println(c3);  // a
        System.out.println(c3 + 1);  // 98,要輸出b,就要用強制類型轉換,char 類型是可以進行運算的。因為它都對應有 Unicode 值。
        //使用強制類型轉換
        System.out.println((char)(c3 + 1));  // b

        char c4 = 'd';
//        c4 = c4 + 1;  // 報錯,Error:(23, 17) java: 不兼容的類型: 從int轉換到char可能會有損失
        c4 += 1;
        System.out.println(c4);  // e
    }
}

布爾類型:boolean

 

 

boolean 類型適於邏輯運算,一般用於程序流程控制:
  if條件控制語句;
  while循環控制語句;
  do-while循環控制語句;
  for循環控制語句;
boolean類型數據只允許取值true和false,不可以0或非 0 的整數替代true和false,這點和C語言不同。

基本數據類型轉換

自動類型轉換(隱式轉換)

條件:
  1.數據類型要兼容,比如都是數字
  2.目標類型要大於源類型,如int——>long

容量小的類型自動轉換為容量大的數據類型。數據類型按容量大小排序為:

 

 

有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然后再進行計算。
byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int類型。
當把任何基本類型的值和字符串值進行連接運算時(+),基本類型的值將自動轉化為字符串類型。

強制類型轉換(顯示轉換)

語法: (目標數據類型)數據
可能會導致數據丟失,損失精度

自動類型轉換的逆過程,將容量大的數據類型轉換為容量小的數據類型。使用時要加上強制轉換符(()),但可能造成精度降低或溢出,格外要注意。
通常,字符串不能直接轉換為基本類型,但通過基本類型對應的包裝類則可以實現把字符串轉換成基本類型。如: String a = “43”; int i = Integer.parseInt(a);
boolean類型不可以轉換為其它的數據類型。 

 

//關於基本數據類型的轉換. 
//1. 自動類型轉換
int i9 = 123;
float i10 = i9;

//2. 強制類型轉換. 
//使用時要加上強制轉換符 ()
float i11 = 12F;
int i12 = (int)i11;

//注意: 不兼容的類型之間不能轉換
//1. 字符串不能直接轉換為基本類型
//2. boolean類型不可以轉換為其它的數據類型


//3. 有多種類型的數據混合運算時,
//系統首先自動將所有數據轉換成容量最大的那種數據類型,然后再進行計算
//兩個 int 類型相除的結果仍是一個 int 類型
//以下代碼編譯出錯,i13需要是float型
//int i13 = 12 / 5.0F;
//System.out.println(i13);

//4. byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int類型。因為jvm認為byte,short,char進行運算,結果很可能是int型
byte i14 = 12;
byte i15 = 13;

//以下代碼編譯出錯,i16需要是int型
//byte i16 = i14 + i15;
char和int之間的轉換
        //將char轉換為int
        int x='a'; //隱式轉換
        System.out.println(x);  // 97

        //將int轉換為char
        char y=(char)x; //必須進行強制類型轉換
        System.out.println(y);  // a
        char z=97; //不會報錯
        System.out.println(z);  // a

  

如果是給char類型賦值數字,會去ascii中找

char z=97; //不會報錯,97被當作常數來處理,而非整型int(整數和整型是有所不同的)

將一個字符常量放到一個字符變量中,實際是將該字符的相應的ASCII代碼放到存儲單元中。如‘a’的ASCII代碼為十進制數97,c1='a',在內存中是以97的二進制01100001存儲的。字符數據以ASCII碼存儲,它的存儲形式就與整數的存儲形式類似。這樣使字符型數據和整型數據之間可以通用。字符數據只占一個字節,它只能存放0~255范圍內的整數。 注意:java中的char范圍是0-65535  這個可能隨着電腦不同和操作系統不同而不同  

練習題(參考答案已放在Q群文件中)

1、結果是?

int a = 97;
char b = a;
System.out.println(b);

char c = 97;
System.out.println(c);

 

2、交換兩個變量的值(至少兩種方法)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM