局部变量与成员变量

变量的分类

  • 成员变量:修饰符(publicprotectedprivatefinalstaticvolatiletransient
    • 类变量 (static修饰)存储(方法区), 该类的所有对象的类变量是共享的
      • 在当前类中类名.”(有时类名.可以省略),在其他类中类名.”对象名.”访问
    • 实例变量 (没有static修饰)存储(堆), 每一个对象的实例变量是独立的
      • ​​​​​​​在当前类中“this.”(有时this.可以缺省),在其他类中对象名.”访问
  • 局部变量:存储(栈),修饰符(final
    • ​​​​​​​局部变量与实例变量重名 : 在实例变量前面加“this.”
    • 局部变量与类变量重名 : 在类变量前面加类名.”

​​​​​​​代码块的执行

  • 非静态代码块的执行:每次创建实例对象都会执行
  • 静态代码块的执行:只执行一次,即使后面再有该类的实例化也不会再执行
public class Variate {

    /**
     * 变量的分类
     * 成员变量:修饰符(public、protected、private、final、static、volatile、transient)
     *      类变量 (有static修饰)存储(方法区), 该类的所有对象的类变量是共享的
     * ​​​​​​​      在当前类中“类名.”(有时类名.可以省略),在其他类中“类名.”或“对象名.”访问
     *      实例变量 (没有static修饰)存储(堆), 每一个对象的实例变量是独立的
     * ​​​​​​​      在当前类中“this.”(有时this.可以缺省),在其他类中“对象名.”访问
     * 局部变量:存储(栈),修饰符(final)
     * ​​​​​局部变量与实例变量重名 : 在实例变量前面加“this.”
     *      局部变量与类变量重名 : 在类变量前面加“类名.”
     * 代码块的执行
     *      非静态代码块的执行:每次创建实例对象都会执行
     *      静态代码块的执行:只执行一次,即使后面再有该类的实例化也不会再执行
     */

    //成员变量:类变量 (方法区)
    static int s;
    //成员变量:实例变量 (堆)
    int i;
    //成员变量:实例变量
    int j;
    {
        //非静态代码块中的局部变量 i
        int i = 1;
        //就近原则: 局部变量i 进行自增 (栈)
        i++;
        //以this进行调用则为成员变量i 进行自增
        //this.i++;
        j++;
        //类变量是共享的,所以每个实例对象初始化的时候,都会被加1
        s++;
    }
    public void test(int j){//形参 局部变量 j (栈)
        //就近原则: 局部变量j 进行自增
        j++;
        //以this进行调用则为成员变量j 进行自增
        //this.j++;
        i++;
        s++;
    }
    public static void main(String[] args) {//形参 局部变量 args
        //局部变量 obj1
        Variate obj1 = new Variate();
        //局部变量 obj2
        Variate obj2 = new Variate();
        obj1.test(10);
        obj1.test(20);
        obj2.test(30);
        //2,1,5  变更this之后 3,3,5
        System.out.println(obj1.i + "," + obj1.j + "," + obj1.s);
        //1,1,5  变更this之后 2,2,5
        System.out.println(obj2.i + "," + obj2.j + "," + obj2.s);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值