当前位置: 技术问答>java相关
请问下面的java语段编译情况
来源: 互联网 发布时间:2015-05-13
本文导语: public class A { { System.out.println("test 1"); } public A() { System.out.println("test 2"); } } 请问一下,上面的程序怎么可以编译通过呢,而且可以输出结果。 语句 System...
public class A
{
{
System.out.println("test 1");
}
public A()
{
System.out.println("test 2");
}
}
请问一下,上面的程序怎么可以编译通过呢,而且可以输出结果。
语句 System.out.println("test 1");为什么可以在方法之外定义呢?谢谢
{
{
System.out.println("test 1");
}
public A()
{
System.out.println("test 2");
}
}
请问一下,上面的程序怎么可以编译通过呢,而且可以输出结果。
语句 System.out.println("test 1");为什么可以在方法之外定义呢?谢谢
|
注意{System.out.println("test 1");}
在{}里面
public class A
{
{
System.out.println("test 1");
}
public A()
{
System.out.println("test 2");
}
// add
public static void main(String arg[]){
new A();
}
}
试一下吧,我现在没有jdk。
在{}里面
public class A
{
{
System.out.println("test 1");
}
public A()
{
System.out.println("test 2");
}
// add
public static void main(String arg[]){
new A();
}
}
试一下吧,我现在没有jdk。
|
这个方法同static方法是不同的,论坛里应该有这方面的回答,很详细的。
这再里再说一次。
static{}块中的内容是在编译的时候就加载的,不论类创建了几个实例,只会执行一次。
而{}块的内容则是在类创建的实例的时候就会执行,每创建一个实例就会执行一次。看下面的代码对你会有帮助。
class A {
public A() {
System.out.println("AAA");
}
{
System.out.println("456");
}
}
public class B extends A {
B() {
this(12);
System.out.println("BBB");
}
B(int x) {
System.out.println("CCC");
}
{
System.out.println("123");
}
public static void main(String[] args) {
new B();
}
}
The output is:
456
AAA
123
CCC
BBB
这再里再说一次。
static{}块中的内容是在编译的时候就加载的,不论类创建了几个实例,只会执行一次。
而{}块的内容则是在类创建的实例的时候就会执行,每创建一个实例就会执行一次。看下面的代码对你会有帮助。
class A {
public A() {
System.out.println("AAA");
}
{
System.out.println("456");
}
}
public class B extends A {
B() {
this(12);
System.out.println("BBB");
}
B(int x) {
System.out.println("CCC");
}
{
System.out.println("123");
}
public static void main(String[] args) {
new B();
}
}
The output is:
456
AAA
123
CCC
BBB
|
能通过
因为语法无错误
字符界面下运行应该没有输出
因为没有MAIN()
用别的调用应该输出:
test 1
test 2
因为语法无错误
字符界面下运行应该没有输出
因为没有MAIN()
用别的调用应该输出:
test 1
test 2