看看这段代码,应该可以理解static的用法。 public class test { static int i=3; public test() { } public static void main(String[] args) { test test1 = new test(); test test2 = new test(); System.out.println("test.i="+test.i); System.out.println("test1.i="+test1.i); System.out.println("test2.i="+test2.i); test1.i=4; System.out.println("test.i="+test.i); System.out.println("test1.i="+test1.i); System.out.println("test2.i="+test2.i); test2.i=5; System.out.println("test.i="+test.i); System.out.println("test1.i="+test1.i); System.out.println("test2.i="+test2.i);
我在c++中试过,不知道java中会是什么表现?希望各位大侠执教
用类和实例都可以访问的!
所以可以当做普通成员引用
但是 static 是类(Class)相关, 而不是实例(instance)相关
所以推荐引用方法为
Data.i
虽然 d.i 也可以引用,但是不推荐,同时也不会引起编译或执行错误
方法(Method, 或叫函数)亦然
Data.i = 1;
d.i = 8;区别:
d.i容易参数歧异, 影响程序的可读性;
Data.i在编译期就已经编译进入了Tmd类中, 而d.i在运行期才通过对象d调用i, 效率会低一些.
原因是:static是在类编译时就在内存中分配空间,
一旦生成类的实例后,并不为static属性分配空间,但是却有对static属性的引用啊,所以你用对象名还是类名都是可以的,一定要记住,类的每个对象都可以对static属性操作,它们指向的是同一个内存区域!
public class test {
static int i=3;
public test() {
}
public static void main(String[] args) {
test test1 = new test();
test test2 = new test();
System.out.println("test.i="+test.i);
System.out.println("test1.i="+test1.i);
System.out.println("test2.i="+test2.i);
test1.i=4;
System.out.println("test.i="+test.i);
System.out.println("test1.i="+test1.i);
System.out.println("test2.i="+test2.i);
test2.i=5;
System.out.println("test.i="+test.i);
System.out.println("test1.i="+test1.i);
System.out.println("test2.i="+test2.i);
}}执行结果是:
test.i=3
test1.i=3
test2.i=3
test.i=4
test1.i=4
test2.i=4
test.i=5
test1.i=5
test2.i=5
一旦生成类的实例后,并不为static属性分配空间,但是却有对static属性的引用啊,2、表面上你用对象实例访问,事实上在内部,还是通过类访问的。3、编程时,如果是静态变量最好用类访问,这是一个良好的编程习惯。