今天遇到一个奇怪的问题,代码如下:
public class Test {
static {
name="bsd";
}
static String name="asd"; public static void main(String[] args) {
new Test();
}
}
代码可以正常编译通过。但如果变成如下所示:
public class Test {
static {
name="bsd";
System.out.println(name);
}
static String name="asd"; public static void main(String[] args) {
new Test();
}
}
程序就编译不通过了,在name打印处报错,如果把静态变量和静态代码块调换顺序,如下所示:
public class Test {
static String name="asd";
static {
name="bsd";
System.out.println(name); }
public static void main(String[] args) {
new Test();
}
}
程序就可以编译通过了。想了好久,搞不清这里面的门道,求大牛解释!
public class Test {
static {
name="bsd";
}
static String name="asd"; public static void main(String[] args) {
new Test();
}
}
代码可以正常编译通过。但如果变成如下所示:
public class Test {
static {
name="bsd";
System.out.println(name);
}
static String name="asd"; public static void main(String[] args) {
new Test();
}
}
程序就编译不通过了,在name打印处报错,如果把静态变量和静态代码块调换顺序,如下所示:
public class Test {
static String name="asd";
static {
name="bsd";
System.out.println(name); }
public static void main(String[] args) {
new Test();
}
}
程序就可以编译通过了。想了好久,搞不清这里面的门道,求大牛解释!
解决方案 »
- 关于Java输入流的问题
- SWT的GUI为什么读多线程时会卡死(使用了log4j,需加配置文件)
- 请问如何将一个double或float转换成int?(转换成比自己稍少的一个int,比自己稍大的int,根据四舍五入转换成int?)
- 本地方法的UnsatisfiedLinkError问题
- 学java如何开始?
- ms_sql2000的jdbc读不出中文
- 哪位先生会作tomcat和apache的整合?
- 谁能帮忙解答一下这个问题?
- 在使用in.readObject()时出现如下错误:java.io.OptionalDataException
- 请教:如何查找List一条记录比删除它
- JDK安装过程中莫名中断,怎么解决
- 多个线程池的管理
敬佩楼主对技术的钻研,我用了好多年Java,几乎从不考虑这样的东西,都是遇到了再说。。