Java Basics Part 6/20 - Variable Types

Java Basics Part 6/20 - Variable Types

目錄


變量就是存儲數據的。每個變量都有一個特定的類型,這個類型決定了變量在內存中的大小以及分佈情況、決定了變量的取值範圍、決定了有哪些可以操作變量的方法。

使用變量之前,必須先聲明:

data type variable [ = value][, variable [= value] ...] ;

聲明和初始化舉例:

int a, b, c;         // Declares three ints, a, b, and c.
int a = 10, b = 10;  // Example of initialization
byte B = 22;         // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a';        // the char variable a iis initialized with value 'a'

三種變量類型:

  • 局部變量
  • 實例變量
  • 類/靜態變量

局部變量

  • 在方法、構造器和塊中聲明的變量是局部變量
  • 進入方法、構造器或者塊中時,局部變量被創建,離開就銷燬
  • 訪問控制修飾符不能用於局部變量
  • 僅在聲明的方法、構造器或者塊中可見
  • 局部變量存儲在棧中
  • 局部變量沒有默認的初值

舉例:
如下, 局部變量 age,定義在 pupAge() 方法中,作用於僅限這個方法中。

public class Test{ 
   public void pupAge(){
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

// output
Puppy age is: 7

舉例:
如下,沒有初始化局部變量 age,這會帶來編譯錯誤。

public class Test{ 
   public void pupAge(){
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

// output
Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

實例變量

  • 實例變量在類中,方法、構造器或者塊的外面聲明
  • 當堆中爲對象分配一片空間的時候,每個實例變量的存儲空間也都自動創建了
  • 當對象被 new 出來的時候,實例變量就創建了。對象銷燬的時候,實例變量也就銷燬了
  • 實例變量持有的值會被方法、構造器或者塊引用到
  • 實例變量可以用訪問控制修飾符修飾
  • 實例變量對類中的所有方法、構造器和塊均可見
  • 實例變量都有默認值
  • 在類中,直接使用變量名即可訪問實例變量

舉例:

import java.io.*;

public class Employee{
   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor. 
   public Employee (String empName){
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal){
      salary = empSal;
   }

   // This method prints the employee details.
   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();
   }
}

// ooutput
name  : Ransika
salary :1000.0

類/靜態變量

  • 變量通過 static 關鍵字來修飾,在類中,但是在方法、構造器或者塊之外聲明
  • 一個類只有一份,所有對象共享一個
  • 除了用來做常量聲明之外,靜態變量很少用
  • 靜態變量存儲在靜態內存區
  • 程序啓動時,靜態變量被創建;程序結束後,靜態變量被銷燬
  • 可見性與實例變量一樣,但是多數都是聲明成 public 的
  • 都有默認值
  • 變量被聲明爲 public static final 時,名稱都要是大寫的。如果不是定義成 public static final 的,那麼命名規則與實力變量和局部變量相同

舉例:

import java.io.*;

public class Employee{
   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]){
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}

// output
Development average salary:1000

如果外部想要訪問靜態變量,那麼用這種方式:Employee.DEPARTMENT

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