static 静态成员变量与非静态的区别 Java


public class TransferProperty {
    int i=47;                                        //定义成员变量
    public void call() {                 //定义成员方法call()
        System.out.println("调用call()方法");
        for (i=0;i<3;i++){
            System.out.println(i+" ");
            if (i==2){                    //输出1 2
                System.out.println("\n");
            }

            }
        }
        //构造函数的定义
        public TransferProperty(){

        }

 public static void main(String[] args){
        TransferProperty t1=new TransferProperty();//创建一个TransferProperty的对象
        TransferProperty t2=new TransferProperty();//同上
        t2.i=60;               //将类成员变量赋值
        System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
        t1.call();//调用第一个对象调用类方法
        System.out.println("第二个实例对象调用变量i的结果:"+t2.i);
        t2.call();//使用第二个对象调用类成员方法
        }
    }

虽然使用两个对象调用同一个成员变量,但是结果不同
在输出之前将该值重新赋值为60,但是赋值时使用的是第二个对象t2调用成员变量,所以在第一个对象调用成员变量的时候依然是成员变量的初始值

package com.FaceObject;

public class AccessProperty {
    static int i=47;                                        //定义成员变量
    public void call() {                 //定义成员方法call()
        System.out.println("调用call()方法");
        for (i=0;i<3;i++){
            System.out.println(i+" ");
            if (i==2){                    //输出1 2
                System.out.println("\n");
            }

        }
    }
    //构造函数的定义
    public AccessProperty(){

    }

    public static void main(String[] args){
       AccessProperty t1=new AccessProperty();//创建一个TransferProperty的对象
        AccessProperty t2=new AccessProperty();//同上
        t2.i=60;               //将类成员变量赋值
        System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
        t1.call();//调用第一个对象调用类方法
        System.out.println("第二个实例对象调用变量i的结果:"+t2.i);
        t2.call();//使用第二个对象调用类成员方法
    }
}

由于使用t2.i=60语句改变了静态成员变量的值, 使用t1调用时静态成员变量的值也为60,这就是i被定义为static的效果

**即使使用两个对象对同个静态成员变量进行操作,依然可以改变静态成员变量的值**

*因为内存中两个对象指向的都是同块内存区域* 当t1.i++执行完毕之后,i值变成3.、 当再次调用时call()方法又被重新赋值为0,做循环打印操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值