下列程序的static,请大家帮忙把我解释下
    package com.kobe.jqs;
import com.kobe.jqs.*;
public class A {
public A() { 
    new B(this).print(); 
  } 
 public static void main(String[] args) {
print();
}
 public static void print() { 
    System.out.println("Hello from A!"); 
   } 
}
package com.kobe.jqs;public class B {
  static A a; 
  public B(A a) { 
    this.a = a; 
  } 
public static void main(String[] args) {
 B. print();
  }
  public static void print() { 
    a.print(); 
    System.out.println("Hello from B!"); 
  } 
}
上述程序构造两个类,能够运行。
我不理解B类中static A a;为什么要用static.
     public static void print() ;为什么要用static
      new B(this).print(); 这里this的作用?

解决方案 »

  1.   

    static A a;
    加static是因为在static方法里面访问了它,static方法只能访问非static变量
    public static void print() ;为了能在没有类实例时调用print方法,如B. print(); 
    new B(this).print(); 因为B的构造函数需要A的实例public B(A a);
      

  2.   

    楼主我教你怎么贴代码:
    1、将代码进行良好的格式化,以方便阅读。
    2、在发帖文本框的上方单击“#”按钮,选择 Java
    3、将代码粘贴到【code=Java】和【/code】之间。发出来的帖子就会是下面的效果:public class Hello {    // 程序入口
        public static void main(String[] args) {
            System.out.println("Hello!");
        }
    }
      

  3.   


       public class Hello {    // 程序入口
        public static void main(String[] args) {
            System.out.println("Hello!");
        }
    }
      

  4.   

    static属性类的,可以直接用类名.方法 或者类名.属性,
    如果静态方法可以调用到非常静态属性的话,在外部调用这个静态方法的时候,
    就等于不用new 实例,就可以引用非静态属性了,
    这是不可能的,
    所以在Java有规定,静态方法只能引用静态的字段属性的和静态的方法
      

  5.   

       public class Hello {    // 程序入口
        public static void main(String[] args) {
            System.out.println("Hello!");
        }
    }
      

  6.   

    新手,试验一下贴代码
    public class Hello {    // 程序入口
        public static void main(String[] args) {
            System.out.println("Hello!");
        }
    }
      

  7.   

    加static有两种作用:1,为了在静态方法中调用。因为在静态方法中只能调用静态方法。2,不用创建类就可以直接通过类名调用方法或成员变量。
    this表示当前对象。
      

  8.   

    有static修饰的成员是不需要类实例的。建议楼主看看jvm相关的书籍
      

  9.   

    static代表此对象在内存中仅有一份,并且和包涵他的类无关,你可以不实例化这个类,就能使用声明static的变量或方法。另外声明static之后将在jvm加载该类时就初始化并且将内存分配,在使用效率上要高,但如果你的设计中过多的包涵static变量或方法时,可能说明该设计不太面向对象。
    this代表当前对象,比如常见的setter方法中会有这么一句:this.name = name;代表当前对象的name属性的引用内存地址被参数中传入的name对象的引用地址覆盖。方法前声明synchronized的关键字作为排他锁特效时所参照的对象也是this,即,当前类中所有声明synchronized的方法,在该类的同一个对象中均无法并发调用。
      

  10.   

    纠正下:static方法只能访问static变量。
    当然了,a.print()也可以换成A.print().由于是在A里面,this就是类A的一个对象。
      

  11.   

    static的作用:
                1,为了在静态方法中调用。因为在静态方法中只能调用静态方法。
                 2,不用创建类就可以直接通过类名调用方法或成员变量。 
    this表示当前对象。
      

  12.   

    学习一下 非常好
    --------------------------
    http://www.pkwutai.cn
      

  13.   

    static最关键的一个用法就是:类不用初始化对象就可以直接调用
      

  14.   

    试一下public class Hello {    // 程序入口
        public static void main(String[] args) {
            System.out.println("Hello!");
        }
    }
      

  15.   

    package com.kobe.jqs;
    import com.kobe.jqs.*;
    public class A {
    public A() {
        new B(this).print();
      }
    public static void main(String[] args) {
    print();
    }
    public static void print() {
        System.out.println("Hello from A!");
      }
    }
    package com.kobe.jqs;public class B {
      static A a;
      public B(A a) {
        this.a = a;
      }
    public static void main(String[] args) {
    B. print();
      }
      public static void print() {
        a.print();
        System.out.println("Hello from B!");
      }
      

  16.   

    class Test1
    {
      public static void main(String args[])
       {
           System.out.println("你好");
      }
    }
      

  17.   

    1.static方法只能引用static成员
    public static void print() { 
        a.print(); 
        System.out.println("Hello from B!"); 

    因此a要static A a;
    2.this在类中泛指此类对象
    public B(A a) { 
        this.a = a; 
    }
    public A() { 
        new B(this).print(); 
    }
    因为B的带参构造中参数为A类对象,因此在A类传入this代指A类对象
      

  18.   

    static的用法就是:类名.成员方法
      

  19.   

    public class Hello {    // 程序入口
        public static void main(String[] args) {
            System.out.println("Hello!");
        }
    }
      

  20.   

    static是静态的,而this呢是个隐藏的该类的对象而已,所以static里当然不能用this啦