java 成员变量

Java的变量分为成员变量和局部变量

成员变量:成员变量指的是在类范围里定义的变量(Field)

局部变量:局部变量指的是在方法里定义的变量

成员变量又被分为类Field(以static修饰)和实例Field(不以static修饰)

类Field从这个类的准备阶段起就开始存在了,知道系统完全销毁这个类。它的作用域和它的生存范围相同,它作为类本身的一个成员,跟类本身共存亡,而实例的Field则从该类的实例被创建起开始存在,直到系统完全销毁这个实例。

类Field的访问方法:1,类.类Field,2,实例.类Field(不建议使用这种方式访问类Field)

实例Field的访问方法:实例.实例Field

下面通过代码来熟悉一下上面的概念:

类Tiger

public class Tiger {
    public static int eye;
    public  String name;
}

//进行测试

public class TestActivity extends AppCompatActivity {
    private static final String TAG = "TestActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        membership();
    }

    /**
     * 成员变量
     */
    private void membership() {
        Log.d(TAG, "membership() called获取老虎眼睛:"+Tiger.eye);
        Tiger tiger=new Tiger();
        Log.d(TAG, "membership() called获取老虎的信息:眼睛的数量="+tiger.eye+"老虎的名字:="+tiger.name);
        tiger.name="东北虎";
        tiger.eye=3;
        实例并不拥有这个类的Field,所以这里tiger.eye=3依然访问的是类的Field,所以它改变的是Tiger.eye的值,访问的是同一块内存,这也是为什么代码没        有给Tiger.eye赋值,但是下面打印出Tiger.eye的值为3
        Log.d(TAG, "membership() called老虎的名字="+tiger.name+"老虎的眼睛="+Tiger.eye);
        Tiger tiger1=new Tiger();
        tiger1.name="华北虎";
这里并未给实例tiger1.eye赋值,但是tiger1.eye的值仍为3,这也说明了tiger1.eye取的类Tiger.eye的值
        Log.d(TAG, "membership() called老虎的名字="+tiger1.name+"老虎的眼睛="+tiger1.eye);
        tiger=null;
        Log.d(TAG, "membership() called老虎的名字="+tiger1.name+"老虎的眼睛="+tiger1.eye+"@@@@@@@@@@@"+Tiger.eye);
        Tiger tiger2=new Tiger();
        tiger2.eye=2;
        这里我明明是设置了tiger2.eye=2,并未修改tiger1.eye的值和Tiger.eye的值,但是tiger1.eye和Tiger.eye的值都发生了改变。,因为其实他们都是访问和操作的Tiger.eye,操作的是同一块内存。
        Log.d(TAG, "membership: 老虎的名字="+tiger1.name+"老虎的眼睛="+tiger1.eye+"###########"+Tiger.eye);
    }
}

//输出结果:

2019-07-27 09:41:53.380 9477-9477/com.example.hasee.water D/TestActivity: membership() called获取老虎眼睛:0
2019-07-27 09:41:53.380 9477-9477/com.example.hasee.water D/TestActivity: membership() called获取老虎的信息:眼睛的数量=0老虎的名字:=null
2019-07-27 09:41:53.380 9477-9477/com.example.hasee.water D/TestActivity: membership() called老虎的名字=东北虎老虎的眼睛=3
2019-07-27 09:41:53.380 9477-9477/com.example.hasee.water D/TestActivity: membership() called老虎的名字=华北虎老虎的眼睛=3
2019-07-27 09:41:53.380 9477-9477/com.example.hasee.water D/TestActivity: membership() called老虎的名字=华北虎老虎的眼睛=3@@@@@@@@@@@3

2019-07-27 10:07:25.835 11705-11705/com.example.hasee.water D/TestActivity: membership: 老虎的名字=华北虎老虎的眼睛=2###########2

 

写本文意在巩固自己的理解,如果有错的地方还望斧正。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值