基本使用
在面向对象中,变量作用域是一个非常重要的知识点。
- 在Java编程中,主要的变量就是属性(成员变量)和局部变量。
- 我们说的局部变量一般是指在成员方法中定义的变量。
- Java作用于的分类:
- 全局变量:也就是属性,作用域为整个类体
- 局部变量:也就是除了属性之外的其他变量,作用域为定义它的代码块中!
4.全局变量(属性)可以不用赋值,直接使用,若没有赋值,则会之默认值,局部变量必须赋值后才能 使用,没有默认值。
举例代码如下:
局部变量没有赋值直接报错:
注意事项和使用细节
- 属性和局部变量可以重名,访问时遵循就近原则。
- 在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名。
- 属性生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡;局部变量生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而死亡,即在一次方法调用过程中。
- 作用于范围不同
- 全局变量/属性:可以在本类使用,或其他类使用(通过对象调用)
- 局部变量:只能在本类中对应的方法中使用
5.修饰符不同
- 全局变量可以加修饰符
- 局部变量不可以加修饰符
举例说明:
public class VarScopeDetail {
public static void main(String[] args) {
Person person = new Person();
/*
属性生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡;
局部变量生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而死亡,即在一次方法调用过程中。
*/
person.say();
/*
当执行say方法时,say方法的局部变量(比如name)会创建,当say执行完毕后,
name局部变量会销毁,但是属性(局部变量)仍然可以使用
*/
}
}
class Person{
String name = "张三";
public void say(){
//属性和局部变量可以重名,访问时遵循就近原则。
String name = "jack";
System.out.println("name=" + name);
}
}
class Student{
//全局变量/属性:可以在本类使用,或其他类使用(通过对象调用)
public void test1(){
Person person = new Person();
System.out.println(person.name);
}
public void test2(Person person){
System.out.println(person.name);
}