## :-: Java變量類型
*文件名和類名相同,一個文件僅存在一個public 類*
在Java中,所有變量在使用前必須聲明
```
int a ,b ,c;//聲明三個int型整數:a,b,c;
int d = 3, e = 4, f = 5; // 聲明三個整數并賦予初值
byte z = 22; // 聲明并初始化 z
String s = "runoob"; // 聲明并初始化字符串 s
double pi = 3.14159; // 聲明了雙精度浮點型變量 pi
char x = 'x'; // 聲明變量 x 的值是字符 'x'。
```
java 支持的變量類型:
* 類變量:獨立方法之外的變量,,用static修飾
* 實例變量:獨立方法之外的變量,不用static修飾
* 局部變量:類的方法中的變量
```
public class Variable{
static int allClicks=0; // 類變量
String str="hello world"; // 實例變量
public void method(){
int i =0; // 局部變量
}
}
```
**java局部變量:**
* 局部變量聲明在方法,構造方法或者語句塊中;
* 局部變量在執行時創建,執行完后銷毀
* 訪問修飾符不能用于局部變量
* 局部變量只在聲明他的方法,構造方法或者語句塊中可見
* 局部變量是在棧上分配的
* 局部變量沒有默認值,所以必須初始化后才可以使用
**實例變量**
* 聲明在一個類中,但在方法,構造方法,語句塊之外
* 一個類被實例化后,每個變量的值就跟著確定了
* 實例變量在對象創建的時候創建,在對象銷毀的時候銷毀
* 實例變量應該至少被一個方法,構造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變量信息。
* 實例變量可以聲明在使用前,使用后
* 訪問修飾符可以修飾實例比變量
* 實例變量對于類中的方法,構造方法和語句塊是可見的,一般情況下 應該吧實例變量私有化。通過使用訪問修飾符可以是實例變量對子類可見
* 實例變量有默認值。數值類型默認為0,布爾類型默認為false,引用類型默認為null.變量的值可以在聲明時指定。也可也在構造方法中指定
* 實例變量可以直接通過變量名訪問,但是在靜態方法及其他類中,就應該使用完全限定名:ObjectReference.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 );
System.out.println("薪水 : " + salary);
}
public static void main(String[] args){
Employee empOne = new Employee("RUNOOB");
empOne.setSalary(1000);
empOne.printEmp();
}
}
```