Java中变量的作用域

一、全局变量和局部变量

简单理解:全局变量就是定义在类中的变量,它可以用在该类中的任何地方。局部变量就是定义在方法里面的变量,只能在该方法内使用。(不是很准确,但是可以这样简单理解)

class var{
    //这里的age就是全局变量,作用域是整个var类
    int age;
    
    public void say(){
        //1.这里的n和name就是局部变量
        //2.局部变量的作用域只限于say方法里面
        int n = 10;
        String name = "jack";
        sout("n=" + n + "name=" +jack);
    }

    public void eat(){
        sout("age=" + age);
    }
}

Tips:

  1. 全局变量定义的时候可以不赋值,因为有系统默认的初始值,但是局部变量不可以,定义的时候必须要赋值!
  2. 全局变量(属性)和局部变量可以重名,访问时遵循就近原则。(this关键字那篇涉及到)
  3. 在同一个作用域中,例如在同一个成员方法中,两个局部变量不能重名。
  4. 全局变量(属性)的生命周期较长,伴随着对象的创建而创建,伴随着对象的销毁而销毁。
  5. 局部变量的生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而死亡。

下面用一段代码来解释上面的Tips:

class Person{
    String name = "jack";

    Person p1 = new Person();
    p1.say();
    //当执行say方法时,say方法里面的局部变量name会被创建。当say方法执行完毕后,局部变量name就会被销毁,但是全局变量(属性)仍然可以使用。
    
    public void say(){
        //全局变量(属性)和局部变量可以重名,访问时遵循就近原则。
        String name = "king";
    }

    public void hi(){
        String name = "mu";
    }
}

二、二者的区别

作用域范围不同:

  • 全局变量:可以被本类使用,也可以被其他类使用(通过对象调用)。
  • 局部变量:只能在本类中对应的方法里使用。

修饰符不同:

  • 全局变量(属性):可以加修饰符。(private, public, protected......)
  • 局部变量:不可以加修饰符。

三、两种跨类访问属性的方式

  • 通过实例化对象访问属性
public class Scope{
    public static void main(String[] args){

        T t1 = new T();
        t1.test1();        //第一种跨类访问属性的方式

        t1.test2(p2)       //第二种跨类访问属性的方式,把对象当参数传进去
    }
}

class T{
    public void test1(){
        Person p1 = new Person();
        sout(p1.name);
    }
    public void test2(Person p){
        sout(p.name);
    }
}

class Person{
    String name = "jack";
    
    public void say(){
        String name = "king";
    }

    public void hi(){
        String name = "mu";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m1m-FG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值