Java 变量类型
变量为我们的程序提供了可以操作的命名存储空间。Java中的每个变量都有特定的类型,该类型决定了变量内存的大小和布局;可以存储在该内存中的值的范围;以及可以对该变量应用的操作集。
在使用变量之前,必须声明所有变量。以下是变量声明的基本形式:
data type variable [ = value][, variable [ = value] ...] ;
这里的数据类型是Java的数据类型之一,变量是变量的名称。要声明多个指定类型的变量,可以使用逗号分隔的列表。
以下是Java中变量声明和初始化的有效示例:
示例
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'
本章将解释Java语言中可用的各种变量类型。Java有三种变量类型,分别是:
- 局部变量
- 实例变量
- 类/静态变量
局部变量
- 局部变量声明在方法、构造函数或块中。
-
局部变量在进入方法、构造函数或块时被创建,并在退出方法、构造函数或块时被销毁。
-
局部变量不能使用访问修饰符。
-
局部变量仅在声明的方法、构造函数或块中可见。
-
局部变量在内部实现时位于堆栈级别。
-
局部变量没有默认值,因此在第一次使用前必须声明并赋予初始值。
示例
这里, 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();
}
}
这将产生以下结果 −
输出
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();
}
}
编译时会产生以下错误:
输出
Test.java:4:variable number might not have been initialized
age = age + 7;
^
1 error
实例变量
- 实例变量是在类中声明的,但是在方法、构造函数或任何块之外。
-
当在堆中为对象分配空间时,会为每个实例变量值创建一个插槽。
-
实例变量在使用关键字’new’创建对象时创建,并在对象销毁时销毁。
-
实例变量保存必须由多个方法、构造函数或块引用的值,或者对象状态的基本部分,必须在整个类中存在。
-
实例变量可以在使用之前或之后在类级别中声明。
-
可以为实例变量提供访问修饰符。
-
实例变量对于类中的所有方法、构造函数和块都是可见的。通常,建议将这些变量设置为私有(访问级别)。然而,可以使用访问修饰符为这些变量提供给子类的可见性。
-
实例变量具有默认值。对于数字,默认值是0;对于布尔值,默认值是false;对于对象引用,默认值是null。可以在声明时或构造函数内部分配值。
-
可以直接通过在类内部调用变量名来访问实例变量。然而,在静态方法中(当实例变量被给予可访问性时),应使用完全限定名称调用它们。ObjectReference.VariableName
示例
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();
}
}
这样将会产生以下结果 −
输出
name : Ransika
salary :1000.0
类/静态变量
- 类变量也被称为静态变量,在一个类中使用static关键字声明,但在方法、构造函数或块之外声明。
-
每个类变量在类中只有一个副本,无论创建了多少个对象。
-
静态变量很少用于除了声明为常量之外的其他情况。常量是以public/private、final和static声明的变量。常量变量的初始值不会改变。
-
静态变量存储在静态内存中。除了声明为最终常量并用作公共或私有常量之外,很少使用静态变量。
-
静态变量在程序启动时创建,在程序停止时销毁。
-
可见性与实例变量相似。但是,大多数静态变量都被声明为public,因为它们必须对类的用户可用。
-
默认值与实例变量相同。对于数字,初始值为0;对于布尔值,初始值为false;对于对象引用,初始值为null。值可以在声明时或在构造函数中进行赋值。此外,值可以在特殊的静态初始化块中进行赋值。
-
可通过使用类名来访问静态变量 ClassName.VariableName 。
-
当将类变量声明为public static final时,变量名(常量)都是大写的。如果静态变量不是public和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);
}
}
这将产生以下结果 −
输出
Development average salary:1000
注意 - 如果从外部类访问变量,则应将常量作为Employee.DEPARTMENT进行访问
下一步是什么
您已经在本章中使用了访问修饰符(public和private)。下一章将详细解释访问修饰符和非访问修饰符。