static在java中表示静态,如果在类中搞了一个static int i;表示用类名就可以访问i,同时,用对象名也可以访问i
补充一个知识:在一个类中,对象可以当做属性来定义。举个例子:
class A
{
public int i = 1;//A类就一个属性i
}
class B
{
public int j = 2;//B类有两个属性,一个是i,一个是aa
public A aa = new A(); //这个aa同时作为B的属性和A的对象
}
class C
{
public static void main(String[] args)
{
B bb = new B();
System.out.printf("%d",bb.aa.i);//bb.aa表示aa这个引用的对象,bb.aa.i表示最上面的i
}
}
结果是:1
同时在java中,一个类内部可以定义一个他自己本身的对象,例子如下:
class A
{
public int i = 1;
public A aa = new A();//比较难理解,用的也少,有他的特殊用途
}
根据一个类内部可以定义一个他自己本身的对象可以编一个程序,这个程序要求只能生成1个对象,不能生成多个对象,如一个国家只能有一个总统:
程序如下:
class A
{
public int i = 1;
private static A aa = new A();
private A()
{
}
public static A getA()
{
return aa;
}
}
class B
{
public static void main(String[] args)
{
A aa1 = A.getA();
A aa2 = A.getA();
aa2.i = 10;
System.out.printf("%d",aa1.i);
}
}
结果是10,也就是说此时我构造的aa1与aa2是同一个东西,同一个A类的对象,有且仅有这一个对象。是完全相等的,那么这个程序为了只生成1个对象需要用到static。如果没有static,在访问get函数时候必然要新建一个对象,用到了new,这样就不满足要求了



