print:
A
1
但是我完全搞不懂为什么啊,B的静态代码块为什么不执行呢?
解决方案 »
- oracle中not in可以这样用不?
- 关于list的难题 大家帮忙在线等
- 请问如何用JAVA 在access中新建表
- 请问为什么用jsp下载邮件附件时,文件显示乱码,或者显示,网页名称?
- 请帮忙 关与串口
- 【求助】各位大神!小弟新学java,第一个程序就老编译报错
- 构造方法VS getInstance()?
- 求jniregistry的例子!!!!!
- 菜鸟请教:我下了一个freeJava,怎么编译程序(程序没问题)没反应,它的JDk目录我也设了d:\jdk.3(JDK1.3不是安装的,是从JBuilder5直接里复制放在d:\jdk1.3里),用别的工具都可以编译成功!
- 为什么?这是为什么?
- java 父类可以调用子类方法?
- 求解答?
首先,我调用的是B类。
其次,我会在B类的静态代码块中修改A类中变量的值。(没有语法规定不容许修改吧。)但是,JVM都不关心我会不会修改,直接只加载A类了事,为什么呢?
public static void main(String[] args) throws ClassNotFoundException {
System.out.println(B.b);
}
}
class A{
static int a=1;
static{
System.out.println("A");
}
}
class B extends A{
static int b=2;
static{
System.out.println("B");
}
}print:
A
B
2这个和上面那个类似,只是调的是b。但是为什么加载了A呢。
那是因为A是B的父类,又因为静态块要先于构造方法执行,所以先执行了静态块,但也是执行一次而已。这个没有为什么,很高容易理解,一个对象没有被new出来的时候,静态块(属于类级别的)就已经存在了,所以在先执行。找一本java入门的书看一看吧