The fifth(static实例)

来源:互联网 发布:js date 函数 编辑:程序博客网 时间:2024/06/02 05:31


1.实例:静态的计数器count,静态的计数方法getBall(),调用的时候用(类名.方法)调用;下面的程序每new一个Ball类,会调用构造函数public Ball(),count自增,最后调用getBall()方法,返回count的值。

2.new出来的每一个Ball类,都共享静态数据count,和静态方法getBall(),一次改变全部改变。

class Ball {

static int count = 0;

public  Ball() {
count++;
}

public static int getBall(){
return count;
}

}


public class TestStatic1 {
public static void main(String[] v) {
for (int i = 0; i < 10000; i++) {
if ((int)(Math.random()*100) == 5) {
new Ball();
}
}
System.out.println(Ball.getBall());
}

}

3.static被声明是public时候,就是真正的全局变量了,public static void main()就是这样的声明;如果将全局变量声明为final类型,就相当于创建了全局常量,例如:

class constants{

public final static double PI=3.14;

}

用constants.PI即可以调用;

4.static定义的字段属于类,而不是具体的对象(类的实例化),可以将其简单成为类变量,非static字段属于类的实例化,因此被称为实例变量;

静态变量只在执行开始时被初始化一次;

在任何类的实例初始化前,先初始化所有的静态字段;

静态字段可以直接通过类名访问,不需要任何对象的引用;

5.一些常用到的static方法,如Math类中的log()方法,和random()方法等;

6.在静态方法中不能访问非静态属性,main函数是静态的,所以在main函数中不可以访问非静态的属性,同样也不可以调用非静态的方法,下面的实例中可以看出:

7.静态的方法不能被子类重写,如下:


8.静态方法通过类名引用调用;

特殊方法main被声明为静态的,因此在启动程序时不需要创建main方法所属的类的实例;

静态方法中不能使用this和suer关键字;

静态方法可以访问类的静态字段和方法;不能访问类的非静态字段和方法;

静态方法不能被子类重写;


































0 0