静态

      Math是一个类,但是我们在使用Math的一些函数,比如random()时,不可以通过创建一个对象,再调用对象的方法这种形式,会提示错误信息。因为Math的方法都是静态的,所以无须Math实例,你会用到的是Math类本身,如Math.random()。
      java是面向对象编程的,但是也有一些特殊的情况下不需要类实例变量的实用的方法,static就是标记出不需要类实例的静态方法。

      以类的名称调用静态的方法:Math.random()
      以引用变量的名称调用非静态的方法:song t2=new song(“my way”);t2.play()

静态方法:静态的方法及变量由static标记,并且有main()的类都算有静态的方法
                  带有静态方法的类通常是不想被初始化的(即无实例变量)
                  静态的方法(如main())不能使用非静态的变量和方法。
                  静态变量的值对所有的实例来说都相同,是共享的
                  防止初始化:将类标记为abstract(为多态创建)
                                        将构造函数进行私有可限制非抽象类被初始化

静态变量只会在类第一次载入的时候初始化:
实例变量:每个实例一个
静态变量:每个类一个

静态变量的初始化有两个保证:
1、在类的任何对象创建之前被初始化(如count,只会有1次初始化)
2、在类的任何静态方法执行之前初始化

java虚拟机加载某个类:
1、有人试图创建该类的新实例、或使用该类的静态方法和变量
2、强制java机去加载(不是很好,可让java机自己选择)

//静态变量初始化的例子
class player{
    static int playcount=0;//只会在第一次载入的时候被初始化为0
    private String name;

    public player(String n){//此为构造函数,每次创建新的实例时被调用
        name=n;
        playcount++;
    }
}

public class playertest{
    public static void main(String[] args){
        System.out.println(player.playcount);//playcount是静态的,可以用类名调用
        player one=new player();
        System.out.println(player.playcount);//构造函数调用1次后,playercount值变为1
    }
}

final
一个被标记为final的东西,代表它一旦被初始化就不能改变:
final的变量:不能改变它的值
final的方法:不能被覆盖掉
final的类:不能被继承,即不能创建子类
static+final,代表这个变量为常量,常量变量的名称一般用大写字母。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值