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