一个初学者的问题

cgk1000 2007-10-28 05:35:33
class B {

C c = new C();

B() {
System.out.println("class b ");
}

}

public class A {
C cc=new C();
public static void main(String[] args) {


}

}
这个程序,没有输出class b
我是这样看这个程序,首先运行class A,初始化成员变量,这时候就运行C cc=new C(); 然后输出结果 class A。
但是没有输出,为什么?为什么把C cc=new C(); 修改成static C cc=new C();之后就可以输出class A了呢?
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldabc 2007-10-28
  • 打赏
  • 举报
回复
package bullshit;


class C{
static void B() {
System.out.println("class b ");
}

}
public class A {

public static void main(String[] args) {

C.B();

}
}
你的代码有问题。 全发写 看看。
我估计你C类中的B方法是这么写的吧。static C cc=new C();这么写我不太明白什么意思。static这个关键字,可以将字段和方法设定成这个样。如果你给方法定义成类方法,你不用创建对象,用类直接就可以使用这个方法。


oldabc 2007-10-28
  • 打赏
  • 举报
回复
你这程序是你自己写的,还是别人写的。你要表达什么?看到回帖 在问问
你是不是就想输出class b??
class C{
static void B() {
System.out.println("class b ");
}

}
public class A {

public static void main(String[] args) {
C cc=new C();
cc.B();

}
}
xianyu2008 2007-10-28
  • 打赏
  • 举报
回复
楼主没把代码全贴出来,应该还定义了一个class C.

原因就在于static,因为静态变量(类变量)是预先分配空间的,即不管是否实例化类都是要分配空间,所以当加上static后,就会输出。如果没有加上static只有在实例化这个类的时候才会有输出。
mail1239 2007-10-28
  • 打赏
  • 举报
回复
楼主怎么没有c类的定义呢?暂且不管它.
这个程序首先由static void main进入A运行A的构造函数构造对象,然后初始化成员变量.由于static是类变量,若有static变量则在类加载时执行拉而不是在构造对象时执行.

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧