通常来说,在创建类的时候,就是在描述那个类的对象的外观和行为。除非用new创建了类的对象。否则实际上并未获得任何对象,只有new来创建对象时,数据存储空间才被分配,其方法才被外界调用。
以上的方法有两种情况是无法解决的。
1、只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本不就不创建任何对象。
2、希望某一个类的方法不用创建对象就能调用。
以上两种无法解决的情况就得引入static关键字来实现
class StaticTest {
//来定义一个静态的变量,在程序运行时就被初始化
static int i = 47;
}
public class Test {
//这里创建两个对象
StaticTest s1 = new StaticTest();
StaticTest s2 = new StaticTest();
System.out.println("s1.i:"+s1.i+" s2.i"+s2.i);
}
//这里输出两个值都是 47
以上的情况是因为在程序在运行开始的时候i就被初始化了,而且也只有一份存储空间,这两个i共用一个i所以输出的值都是一样的.
//当然以上的变量也可以用一下的方式调用
StaticTest.i++;