## :-: 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();
}
}
```