Java基础突击第四天0008(static关键字)

21 篇文章 0 订阅

static主要应用于修饰被很多对象共享的属性,比如所属城市属性,国家属性。

某城市更名后为了不至于所有的对象一个个修改城市属性,所以把该属性设置为全局属性(静态属性)。

不过作为大家共享的公共属性由一个对象来修改很明显是不合理的,一般情况下直接用类名对其调用。(static声明的属性又称作类属性)

这类全局属性和全局方法用static进行修饰。


Java中主要分为4块内存空间,栈内存保存所有对象的名称,堆内存保存对象的具体属性内容,全局数据区保存static类型的属性,全局代码区保存所有的方法定义。


在前面经常会用到在主类中,main方法中会调用的方法前面都有static修饰。这是因为static方法是不能调用非static声明的属性和方法。而非static声明的方法可以调用static声明的属性和方法。

这样考虑:程序中类的属性和方法需要在对象开辟堆内存之后才能调用,而static类型的方法在对象未被实例化时就可以被调用了。

因此,能够被主方法调用的方法必须用static进行修饰。毕竟静态方法是不能调用非静态方法的。

由于static属性是所有对象共享的,则可以应用static属性统计一个类到底生成了多少个对象。也可以对自动生成的对象自动编号命名。

class Demo{
    private String name;
    public static int countUnnaming = 0;
    public static int count = 0;
    public Demo(){
        count++;
        countUnnaming++;
        this.name = "Unnaming-No."+countUnnaming;
    }
    public Demo(String name){
        count++;
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    
}
public class HelloWorld{
    public static void main(String []args){
        System.out.println(new Demo().getName());
        System.out.println(new Demo("FangXy").getName());
        System.out.println(new Demo().getName());
        System.out.println(new Demo("FuXs").getName());
        System.out.println(new Demo().getName());
        System.out.println("There are "+Demo.count+" objects has been generated!");
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值