Java变量是什么?
变量为我们提供了命名存储,我们的程序可以对其进行操作。每个Java变量都有一个特定的类型,这决定了变量内存的大小和布局、可以存储在该内存中的值的范围以及可以应用于变量的操作集。
变量声明和初始化
在使用任何变量之前,必须先声明它们。以下是变量声明的基本形式:
数据类型 变量名 [ = 值 ][, 变量名 [ = 值] ...] ;
这里的数据类型是Java的一种数据类型,变量名是你给变量起的名字。为了声明一种指定类型的一个以上的变量,你可以使用逗号分隔的列表。
合法的变量声明和初始化示例
以下是在Java中声明和初始化变量的有效示例:
int a, b, c;
int a = 10, b = 10;
byte B = 22;
double pi = 3.14159;
char a = 'a';
Java中的变量类型
Java中有三种类型的变量:
-
-
-
类/静态变量(Class/Static variables)
1. Java局部变量
局部变量在方法、构造函数或块中声明。
局部变量在进入方法、构造函数或块时创建,在退出方法、构造函数或块时销毁。
不能为局部变量使用访问修饰符。
局部变量只能在其声明的方法、构造函数或块内可见。
局部变量内部在栈上实现。
局部变量没有默认值,因此在首次使用前应声明并分配初始值。
示例1:带有初始化的局部变量的作用域
在这个例子中,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
示例2:没有初始化的局部变量的作用域
下面的例子没有初始化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: 变量age可能未被初始化
age = age + 7;
^
1 错误
2. Java实例变量
实例变量在类中声明,但在方法、构造函数或任何块之外。
当堆上为一个对象分配空间时,会为每个实例变量创建一个槽位。
实例变量在使用new关键字创建对象时创建,在对象销毁时销毁。
实例变量持有必须被一个以上的多个方法、构造函数或块引用的值,或者是必须在整个类中保持的状态的重要部分。
实例变量可以在类级别声明,无论是在使用前还是之后。
可以为实例变量提供访问修饰符。
实例变量对类中的所有方法、构造函数和块可见。通常建议将这些变量设置为私有(访问级别)。然而,可以使用访问修饰符为子类提供可见性。
实例变量有默认值。对于数字,默认值是0,对于布尔值它是false,对于对象引用它是null。值可以在声明时或在构造函数中赋值。
实例变量可以直接通过调用类内部的变量名称来访问。然而,在静态方法中(当实例变量被赋予可访问性时),它们应该使用全限定名来调用。ObjectReference.VariableName。
示例:Java实例变量
import java.io.*;
public class Employee {
public String name;
private double salary;
public Employee (String empName) {
name = empName;
}
public void setSalary(double empSal) {
salary = empSal;
}
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
3. Java类/静态变量
类变量也被称为静态变量,它们在类中声明,但在方法、构造函数或块之外声明,并带有static关键字。
不论创建了多少个对象,每个类只会有一个类变量的副本。
除了作为常量声明外,很少使用静态变量。常量是声明为public/private、final和static的变量。常量变量从未改变其初始值。
静态变量存储在静态内存中。除了声明为final并作为public或private常量使用外,很少使用静态变量。
静态变量在程序开始时创建,在程序停止时销毁。
可见性类似于实例变量。然而,大多数静态变量声明为public,因为它们必须对类的用户可用。
默认值与实例变量相同。对于数字,默认值是0;对于布尔值,它是false;对于对象引用,它是null。值可以在声明时或在构造函数中赋值。此外,值可以在特殊的静态初始化块中赋值。
静态变量可以通过使用类名称ClassName.VariableName来访问。
当声明类变量为public static final时,变量名(常量)全部为大写。如果静态变量不是public和final,则命名语法与实例变量和局部变量相同。
示例:Java类/静态变量
import java.io.*;
public class Employee {
private static double salary;
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来访问。