你所谓的访问方法是针对类当中的方法而言的,对于变量,static仅仅是在修改的时候与别的变量不同。但是如果是方法,这样肯定行不通,要不你看看d.i=8;
这句话还行么!

解决方案 »

  1.   

    其实用类名也可以调用方法的(非静态方法),只要这个方法中没有使用非静态变量就可以。
    我在c++中试过,不知道java中会是什么表现?希望各位大侠执教
      

  2.   

    to: fishstudio(火热的心) d.i=8为什么不行,是可以的!你试试吧!
    用类和实例都可以访问的!
      

  3.   

    static 成员也是成员
    所以可以当做普通成员引用
    但是 static 是类(Class)相关, 而不是实例(instance)相关
    所以推荐引用方法为
    Data.i
    虽然 d.i 也可以引用,但是不推荐,同时也不会引起编译或执行错误
    方法(Method, 或叫函数)亦然
      

  4.   

    静态变量和类变量的区别就是是否需要类实例才能访问.Data.i 和 d.i 在使用上是一样的都可以赋值
      Data.i = 1;  
      d.i = 8;区别: 
     d.i容易参数歧异, 影响程序的可读性; 
     Data.i在编译期就已经编译进入了Tmd类中, 而d.i在运行期才通过对象d调用i, 效率会低一些.
      

  5.   

    当然可以访问啦!
    原因是:static是在类编译时就在内存中分配空间,
    一旦生成类的实例后,并不为static属性分配空间,但是却有对static属性的引用啊,所以你用对象名还是类名都是可以的,一定要记住,类的每个对象都可以对static属性操作,它们指向的是同一个内存区域!
      

  6.   

    类名和实例名都是可以的,static型的在内存里面只分配一个地址
      

  7.   

    看看这段代码,应该可以理解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
      

  8.   

    楼上说的都是对的,原因是:1、static是在类编译时就在内存中分配空间,
    一旦生成类的实例后,并不为static属性分配空间,但是却有对static属性的引用啊,2、表面上你用对象实例访问,事实上在内部,还是通过类访问的。3、编程时,如果是静态变量最好用类访问,这是一个良好的编程习惯。