下面程序为什么没有main方法也能运行! public class Test { static{System.out.println("Hello World!"); System.exit(0);} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 嗯,少写了个“}”但是这个程序在cmd下是可以编译运行出“hello world”的,我试过了! static{ System.out.println("Hello World!"); System.exit(0);}这段是静态代码块,当主动使用到Test时,会执行静态代码块的。无论这个类里有无main方法。楼主可以看下书中关于静态代码块的说明。 在cmd下通过javac命令编译然后java命令运行。 d:\myjava\csdn\oop>javac -d . Test.javad:\myjava\csdn\oop>java Test错误: 在类 Test 中找不到主方法, 请将主方法定义为: public static void main(String[] args)我一运行就提示上面的信息啊? D:\>javac Test.javaD:\>java Test 我运行的时候还是出上面的错误啊! 用jdk1.7 和1.6编译,运行都这样,奇怪! 我不知道楼主能不能看到。但是好多人都回答的不怎么具体。我来吧:java管理的内存划分:堆区:存放所有new出来的对象 栈:存放所有调用的方法,以及方法中的局部变量,产生pop、push等,也存放对象的应用方法区:存放类加载器加载的类信息:包括所有的方法,常量,静态变量,静态代码块等等方法区的内容是在类加载的时候执行的,而你的静态代码块就是在类加载时候执行的,所以可以输出东西。并且我没有运行你代码。 这个问题跟类加载运行时有关。当类加载时会先执行静态语句块,所以先打印输出结果,然后你就直接exit了,这样就没有问题了 当执行的时候,首先加载时静态语句块,所以虽然没有main方法但是类加载的时候,就可以输出结果。 楼主 那个是静态块是在加载类的时候就加载的就像是 静态方法在加载类的时候加载 被称作类方法 似的所以这个静态块是可以在不被创建类实例的情况下加载运行的所以可以在此类加载时还没调用main方法时就可以被加载实现的 怪!编译时不检查数组下标越界? 高手帮帮忙 想问一个关于 FileReader 的问题 如何使用数组实现阿拉伯数字转换成大写中文,比如1340转换成 壹仟叁佰肆拾 ,希望有高手帮忙解决下,急!!! 问个String的问题,大家帮我解答一下 java读入文件之后打印输出,怎么输出源文件的行号??? 广州或深圳的编程高手可以帮帮忙吗??? 有一个问题请教大家。 applet中可以操作数据库服务器中的数据吗? 我想判断一个字符串是否被另一个包含 跪求C语言转JAVA 关于ECLIPSE中的user library.
System.out.println("Hello World!");
System.exit(0);
}
这段是静态代码块,当主动使用到Test时,会执行静态代码块的。无论这个类里有无main方法。
楼主可以看下书中关于静态代码块的说明。
d:\myjava\csdn\oop>javac -d . Test.javad:\myjava\csdn\oop>java Test
错误: 在类 Test 中找不到主方法, 请将主方法定义为:
public static void main(String[] args)我一运行就提示上面的信息啊?
D:\>java Test
但是好多人都回答的不怎么具体。
我来吧:
java管理的内存划分:
堆区:存放所有new出来的对象
栈:存放所有调用的方法,以及方法中的局部变量,产生pop、push等,也存放对象的应用
方法区:存放类加载器加载的类信息:包括所有的方法,常量,静态变量,静态代码块等等方法区的内容是在类加载的时候执行的,而你的静态代码块就是在类加载时候执行的,所以可以输出东西。并且我没有运行你代码。
是在加载类的时候就加载的
就像是 静态方法在加载类的时候加载 被称作类方法 似的
所以这个静态块是可以在不被创建类实例的情况下加载运行的
所以可以在此类加载时
还没调用main方法时就可以被加载实现的