一、成员变量
1.成员变量是在类的范围里定义的变量
public class Dog {
//这两个变量就是成员变量(或称为实例变量)
private String name; // 定义一个私有的字符串类型的成员变量,用于存储狗的名字
protected int age; // 定义一个受保护的整型成员变量,用于存储狗的年龄
}
2.成员变量有默认初始值
// 默认初始值为null
System.out.println(Dog.name)//输出为null
3.被static修饰的变量叫类变量,未被static修饰的变量叫实例变量,类变量随着类消失,实例变量随着对象消失。
二、局部变量
1.局部变量是在方法中定义的变量
public void calculateSum(int a, int b) {
int result; // 这是一个局部变量,在calculateSum方法内部定义
result = a + b; // 给局部变量result赋值
System.out.println("The sum is: " + result);
}
2.局部变量没有默认初始值
public class Example {
public void testLocalVar() {
int localVar; // 局部变量localVar没有初始化
System.out.println(localVar); // 这将抛出编译错误,因为局部变量在使用前没有初始化
}
public static void main(String[] args) {
Example example = new Example();
// 即便不调用testLocalVar方法,编译器仍然会报错,因为局部变量localVar在其声明后立即尝试使用,但没有被初始化
}
}
3.局部变量随着方法消失
public class Example {
public void doSomething() {
String temporaryVariable = "This is a local variable"; // 局部变量声明和初始化
System.out.println(temporaryVariable);
}
public static void main(String[] args) {
Example example = new Example();
example.doSomething(); // 方法调用,此时临时变量存在
// 方法调用结束后,temporaryVariable不再可用
// 试图在此处访问或使用temporaryVariable将会导致编译错误,因为它仅在doSomething方法内部有效
}
}