5. Java 中的變量 【連載 5】

5. Java 中的變量 【連載 5】

1. 理解 Java 中的變量

程序中需要處理數據,Java 中的變量是用來裝載數據。變量類似一個盒子,我們通過這個盒子,就可以操作盒子裏面的數據。

Java 中每個變量都有名稱和數值。名稱不會變化,但是裏面的數值可以變化,像一個盒子裏面可以去裝不同的東西。

Java 變量中的值不一定總是數值,還可以是文本內容或者字母,還可以是其他類型的數據。

5. Java 中的變量 【連載 5】

Java 中變量定義需要顯示的指定存放數據類型,一旦指定,只能存儲指定類型數據。當創建變量的時候,需要在內存中申請空間。內存管理系統根據變量的類型爲變量分配存儲空間,分配的空間只能用來儲存該類型數據。

5. Java 中的變量 【連載 5】

Java 中變量是這樣定義的:

data_type variable_name = value;

比如用變量 passengers 記錄公交車每個站乘客的數量。

int passengers;//聲明一個名字爲 passengers的變量,指定存放數據類型爲整數
passengers = 0;//爲 passengers 變量初始化一個整數值 0

//也可以聲明變量時,就初始化值。
int passenger1 = 10;//定義變量paasenger1,並初始化值爲整數10

注意:這裏的 “=” 不是數學裏面等於的意思,是把右邊的數據,賦值給左邊變量。

5. Java 中的變量 【連載 5】

定義變量後,可以對變量更新爲不同的值。變量只保留最後一次更新的值。

4

2. Java 中變量的命名約定

Java中變量的名字命名需要遵循一些規則:

1)變量名稱中不可以有空格。比如 int pas senger = 0;是不合法的, 因爲passengers中存在空格

2)變量名稱可以以特殊字符開頭,例如$和像和_ 像int $num = 10;是有效的定義。

3)根據Java編碼標準,變量名應以小寫字母開頭;對於具有多個單詞的冗長變量名稱,可以這樣做:int smallNumber; int bigNumber; (用大寫字母開始第二個單詞,也稱爲駝峯命名規則)。

4)Java 中的變量名稱區分大小寫,也就是int Num;int num;定義了兩個不同的變量。

3. Java 變量中的類型

Java 變量中的類型分爲三種:

1)靜態變量(或者類變量)

2)實例變量

3)局部變量

3.1 靜態變量

靜態變量也被稱爲類變量,因爲它們與類相關聯,並且對於類的所有實例對象都是通用的。例如,A類中定義了一個靜態變量 a,對於從 A 類的創建的任何實例對象都能夠訪問靜態變量 a。如果通過一個實例對象改變了靜態變量 a 的值,那麼靜態變量的改變會應用到其他所有的對象。實例說明一下:

public class StaticVariableExample {
    //定義一個靜態變量
    public static String myClassVar = "class or static variable";

    public static void main(String[] args) {
        // 創建三個實例對象
        StaticVariableExample obj1 = new StaticVariableExample();
        StaticVariableExample obj2 = new StaticVariableExample();
        StaticVariableExample obj3 = new StaticVariableExample();

        //三個對象都可以訪問 myClassVar ,輸出 “class or static variable”
        System.out.println(obj1.myClassVar);
        System.out.println(obj2.myClassVar);
        System.out.println(obj3.myClassVar);

        //通過實例對象 obj2 改變靜態變量 myClassVar的值
        obj2.myClassVar = "Change value for myClassVar";

        // 三個都會輸出:"Change value for myClassVar"
        System.out.println(obj1.myClassVar);
        System.out.println(obj2.myClassVar);
        System.out.println(obj3.myClassVar);

    }
}

控制檯輸出:

class or static variable
class or static variable
class or static variable
Change value for myClassVar
Change value for myClassVar
Change value for myClassVar

靜態變量可以理解爲屬於類(Class)模板的變量,不屬於實例對象,但是對象可以訪問。因爲屬於類模板,所有也可以直接訪問靜態變量,例如在上面實例的 main方法中可以直接這樣打印輸出:

System.out.println(myClassVar);

注意:只有靜態變量可以這樣直接訪問。局部變量和實例變量不可以直接訪問

3.2 實例變量

類的每個實例(對象)都有自己的實例變量副本。與靜態變量不同,實例變量具有自己獨立的實例變量副本。在下面的程序中使用obj2對象更改了實例變量值,並且當使用所有三個對象顯示變量時,只有obj2值被更改,其他值保持不變。這表明三個對象都有自己的副本實例變量。

實例變量示例:

public class InstanceVariableExample {
    //定義實例變量
    String myInstanceVar = "instance variable";

    public static void main(String[] args) {
        //創建三個實例對象
        InstanceVariableExample obj1 = new InstanceVariableExample();
        InstanceVariableExample obj2 = new InstanceVariableExample();
        InstanceVariableExample obj3 = new InstanceVariableExample();

        //每個對象擁有實例變量副本,都輸出:“instance variable”
        System.out.println(obj1.myInstanceVar);
        System.out.println(obj2.myInstanceVar);
        System.out.println(obj3.myInstanceVar);

        //obj2改變的只是自己的實例變量副本,不改變其他實例對象的實例變量
        obj2.myInstanceVar = "Change Text";

        System.out.println(obj1.myInstanceVar);
        System.out.println(obj2.myInstanceVar);
        System.out.println(obj3.myInstanceVar);

    }
}

控制檯輸出:

instance variable
instance variable
instance variable
instance variable
Change Text
instance variable

可以理解爲實例對象擁有各自的實例變量,類只是定義了一個實例變量的模板。產生新的實例對象時,會從類模板拷貝實例變量給實例對象。

3.3 局部變量

什麼是局部變量,顧名思義,該類型變量只在一個局部範圍內有效,超出範圍無效。外部就無法訪問該變量。

局部變量是定義在一個類的函數裏面,其作用範圍被限制在該函數內部,外部無法訪問該變量。

[認識 Java]() 文章中介紹過函數的概念

下面,我用一個例子來說明:

public class LocalVaribleExample {

    //定義一個實例變量 myVar
    public String myVar = "instance variable";

    public void myMethod() {
        // 定義一個局部變量,只作用在該方法內部
        String myVar = "Inside Method";
        String myVar2 = "Inside Method 2"
        System.out.println(myVar);
    }

    public static void main(String[] args) {
        //創建一個實例對象
        LocalVaribleExample obj = new LocalVaribleExample();
        System.out.println("調用函數");
        obj.myMethod();
        System.out.println(obj.myVar);
        //System.out.println(obj.myVar2);//會編譯出錯,外部無法訪問方法內局部變量
    }
}

控制檯輸出:

調用函數
Inside Method
instance variable

說明:局部變量的作用範圍只在方法內部

如果不聲明實例變量:

public String myVar = "instance variable";

那麼,main 方法中的直接調用:

System.out.println(obj.myVar);

會拋出編譯錯誤。因爲無法在myMethod外更改和訪問myVar局部變量。

4. 更多練習實例

4.1 Java程序來查找一個字符的ASCII值

ASCII是用於將英文字符表示爲數字的代碼,英文字母的每個字母都被分配了從0到127的數字。例如,大寫字母P的ASCII代碼是80。

在Java編程中,我們有兩種方法來查找字符的ASCII值

1)通過給int變量分配一個字符

2)通過類型轉換字符值爲int

public class Demo {

    public static void main(String[] args) {

        char ch = 'P';
        int asciiCode = ch;
        // 強制轉換char類型爲int類型
        int asciiValue = (int)ch;

        System.out.println("ASCII value of "+ch+" is: " + asciiCode);
        System.out.println("ASCII value of "+ch+" is: " + asciiValue);
    }
}

控制檯輸出:

ASCII value of P is: 80
ASCII value of P is: 80

4.2 Java 程序中兩個數字相乘

1)控制檯輸入兩個整數,並打印結果:

import java.util.Scanner;

public class Demo {

    public static void main(String[] args) {

        /* 讀取用戶的鍵盤輸入的掃描器對象
         */
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter first number: ");

        // 讀取鍵盤輸入的數字,並賦值給變量num1
        int num1 = scan.nextInt();

        System.out.print("Enter second number: ");
        int num2 = scan.nextInt();

        // 使用後關閉掃描器
        scan.close();

        // 計算兩個整數相乘的結果
        int product = num1*num2;

        //控制檯打印乘法結果
        System.out.println("Output: "+product);
    }
}

控制檯:

Enter first number: 20
Enter second number: 6
Output: 120

2)兩個小數相乘:

這裏我們使用數據類型double來表示數字,可以輸入整數以及浮點數。

import java.util.Scanner;

public class Demo {

    public static void main(String[] args) {

        //讀取用戶的鍵盤輸入的掃描器對象
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter first number: ");

        // 讀取鍵盤輸入的數值,並賦值給變量num1
        double num1 = scan.nextDouble();

        System.out.print("Enter second number: ");
        double num2 = scan.nextDouble();

        // 使用後關閉掃描器
        scan.close();

        // 計算兩個數值相乘的結果
        double product = num1*num2;

        //控制檯打印乘法結果
        System.out.println("Output: "+product);
    }
}

控制檯:

Enter first number: 1.5
Enter second number: 2.5
Output: 3.75

4.3 計算三角面積

1)用戶輸入寬和高

import java.util.Scanner;
class AreaTriangleDemo {
   public static void main(String args[]) {   
      Scanner scanner = new Scanner(System.in);

      System.out.println("Enter the width of the Triangle:");
      double base = scanner.nextDouble();

      System.out.println("Enter the height of the Triangle:");
      double height = scanner.nextDouble();

      //Area = (width*height)/2
      double area = (base* height)/2;
      System.out.println("Area of Triangle is: " + area);      
   }
}

控制檯輸出:

Enter the width of the Triangle:
2
Enter the height of the Triangle:
2
Area of Triangle is: 2.0

2)程序中定義寬和高

class AreaTriangleDemo2 {
   public static void main(String args[]) {   
      double base = 20.0;
      double height = 110.5;
      double area = (base* height)/2;
      System.out.println("Area of Triangle is: " + area);      
    }
}

控制檯輸出:

Area of Triangle is: 1105.0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章