作用域
- 在java中,主要变量就是成员变量和局部变量
- 一般局部变量指的是成员方法中定义的变量
- 作用域的分为全局变量和局部变量,全局变量的作用域在整个类体 ;除了属性之外的都是局部变量,作用域只能用于某块
-
全局变量可以不赋值,直接使用,有默认值,但局部变量没有默认值所以必须赋值, 才能使用
public class text{
public static void main(String[] args) {
}
}
class Cat{
int age=10;//全局变量,作用整个类体
public void cry() {
//n 和 name 都是局部变量
//n 和 name的作用域都在cry方法中
int n =10;
String name= "jack";
}
public void eat() {
System.out.println("猫的年龄"+age); //此时可以用,age是类中的全局变量
System.out.println("猫的名字"+name); //不可以访问到,因为name是其他方法的局部变量
}
}
细节
-
属性和局部变量可以重名,访问时遵循就近访问
- 在同一个作用域中,比如在同一个方法中,定义的局部变量不能重名,比如说类中的变量和方法中的变量可以重名,同类中不同的方法也可以重名
- 属性生命周期长,伴随对象的创建而创建,伴随对象死亡而死亡,局部变量生命周期短,伴随它的代码块的执行而创建,伴随它的代码块的结束而死亡,比如方法调用时及结束
public class text{
public static void main(String[] args) {
}
}
class Cat{
int age=10;
String name;
public void cry() {
String name= "jack";
}
public void eat() {
String name = "liLing"
//name=liLing,对于cry和eat不同的作用域方法中,可以重名, 对于类和方法相同的变量,采取就近原则
System.out.println("猫的年龄"+age); //age=10
}
}
注意
- 全局变量/属性可以被本类使用,或者其他类使用(通过对象调用)
- 局部变量只能在本类中对应的方法使用
- 全局变量/属性可以加修饰符,局部变量不可以加修饰符