代码快照图中各种变量的表示

原链接
Kinds of variables in snapshot diagrams

画快照图时,要区分好这三种不同类型的变量

  • 局部变量 (local variable)
    在一个方法被调用时产生,调用返回时消失
    如果对同一个方法有多次调用,那么每一次调用都会有相互独立的局部变量

  • 实例变量 (instance variable)
    当使用new创建一个新的对象时,这个对象里的实例变量被随之创建,当对象被回收时,它也随之消失。
    不同的对象直接的实例变量是相互独立的

  • 静态变量 (static variable)
    静态变量在程序启动时出现,更准确地说,在包含该变量的第一次加载时出现,并在程序的剩余生命周期中一直存在

class Payment {
    public double value;
    public static double taxRate = 0.05;
    public static void main(String[] args) {
        Payment p = new Payment();
        p.value = 100;
        taxRate = 0.05;
        System.out.println(p.value * (1 + taxRate));
    }
}

在这段代码中,Payment类有一个静态变量taxRate,也就是说,无论程序创建了几个Payment类型的对象,都只有一个taxRate

value则是实例变量,每一个Payment类型对象都会有自己的value

对于方法来说(这里是main),Payment p = new Payment();创建了一个局部变量p,它将在方法结束的时候消失

局部变量通常画在方法的栈结构(stack frame)里;对象则用一个圆圈表示,里面包含着它自己的实例变量;静态变量和对象没有关系,一个类只有一个,因此要画在对象外
代码快照图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值