成员变量和局部变量
一、成员变量和局部变量
变量声明的位置决定变量作用域
变量作用域确定可在程序中按变量名访问该变量的区域
public class Var {
//属性:成员变量(全局变量)
//系统默认为成员变量赋初始默认值
int num;
String s;
//方法
public void test1() {
//在方法中定义的为局部变量,只能在这个方法中使用
//局部变量的作用域为一个方法或者一个语句块
//局部超出作用域不可使用
//局部变量必须初始化赋值使用
int n = 9;
System.out.println(n);
}
public static void main(String[] args) {
int i = 0;//只能在main方法中使用
//如果在for循环中定义那作用范围只能在for循环中
for (; i < 9; i++) {
System.out.println("Hello");
}
System.out.println(i);
}
}
二、成员变量和局部变量的区别
作用域不同
-
局部变量的作用域仅限于定义它的方法
-
成员变量的作用域在整个类内部都是可见的
初始值不同
-
Java会给成员变量一个初始值
-
Java不会给局部变量赋予初始值
注意:
-
在同一个方法中,不允许有同名局部变量
-
在不同方法中,可以有同名的局部变量
-
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级
public class Example {
private int number = 10; // 成员变量
public void display() {
int number = 20; // 局部变量,同名但优先级更高
System.out.println(number); // 这里输出的是20,因为局部变量遮蔽了成员变量
}
}
方法的参数也是局部变量 只能在对应方法中使用
public class Example {
public void printMessage(String message) {
// message 是一个局部变量,作为方法的参数传递进来
System.out.println(message);
}
public static void main(String[] args) {
Example example = new Example();
// "Hello, World!" 是传递给 printMessage 方法的参数
example.printMessage("Hello, World!");
// 在这里,"Hello, World!" 已经不再可见,因为它是 printMessage 方法的局部变量
}
}