static关键字

static关键字

public class Circle {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }
    
    public double findArea(){
        return Math.PI*radius*radius;
    }
}

创建两个Circle对象

Circle circle1=new Circle(2.0);
Circle circle2=new Circle(3.0);

Circle类中的变量radius是一个实例变量,它属于类的每一个对象,c1中的radius变化不会影响c2的radius

如果想让一个成员变量被类的所有实例共享,就用static修饰即可,称为类变量(或类属性)

1.1类属性、类方法的设计思想

当我们编写一个类时,其实就是在描述其对象的属性和行为,而且没有产生实质的对象,只有通过new关键字才会产出对象,这时候系统才会分配内存空间给对象,其方法可以供外部调用。我们有时候希望无论是否产生了对象或者无论产生多少对象的情况下,某些特定的数据在内存空间里面都只有一份。

在类中申明的实例方法,在类的外面必须要先创建对象,才能调用。但是某些方法的调用和当前类的对象无关,这样的方法通常称为类方法,由于不需要创建对象就可以调用方法,从而简化了方法调用。

这里的类变量、类方法,只需要使用static修饰即可。所以也称为静态方法、静态变量。

静态变量和实例变量的对比:
①个数
静态变量:在内存空间中只有一份,被类的多个对象共享
实例变量:类的每一个实例(或对象)都保存一份实例变量
②内存位置
静态变量:jdk6以及以前,放在方法区。jdk7以及以后,放在堆空间
实例变量:存放在堆空间的对象实体汇总
③加载实际
静态变量:随着类的加载而加载,由于类只能加载一次,所以静态变量也只有一份
实例变量:随着对象创建而加载每个对象拥有一份实例变量
④调用者
静态变量:可以被类调用,也可以使用对象调用
实例变量:只能使用对象调用
⑤消亡时间
静态变量:随着类的卸载而消亡
实例变量:随着对象消亡而消亡

static修饰的方法内,不能使用this和super

思考:在开发中,什么时候需要将属性声明为静态的?
判断当前类的多个实例是否能共享此成员变量,且此成员变量的值是相同的。
开发中,常将一些常量声明为静态的

思考2:什么时候需要将方法声明为静态的?
方法内操作的变量如果都是静态变量的话,则此方法声明为静态方法。开发中,常常将工具类中的方法,声明为静态方法,比如Array,Math类

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值