关于没有main的Hello,World!

小小阿狸 2012-04-05 11:09:36
最近在java核心技术 基础知识 上看到一个程序说是不用main方法就可以打印出Hello,World!
public class Hello

staitc
{
System.out.println("Hello,World!");
System.exit(0);
}

}可是自己运行的时候硬是不出来 后来网上查了一下也说可以,说是程序运行时先执行静态块的内容,main方法不是入口么,各种凌乱。。。。。还请个位大牛解释一二,谢谢那
...全文
3221 89 打赏 收藏 转发到动态 举报
写回复
用AI写文章
89 条回复
切换为时间正序
请发表友善的回复…
发表回复
七神之光 2012-12-14
  • 打赏
  • 举报
回复
难道没用过JDBC么?JDBC的class.forname用的和这个差不多,这个是静态代码块,JDBC用的是构造代码块,反射一下就行了,还不会报错。
  • 打赏
  • 举报
回复
楼主该结贴了
gloomyfish 2012-12-14
  • 打赏
  • 举报
回复
Applet是不是也可以的
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class HelloApplet extends Applet {
	public void init() {
	      setBackground( Color.black );
	   }

	   public void paint( Graphics g ) {
	      g.setColor( Color.green );
	      g.drawString("Hello World", 40, 80);
	   }
}
呼啸 2012-12-14
  • 打赏
  • 举报
回复
虽然说类在加载时会先执行全局代码区和静态代码区,但这个类不会被JVM主动加载的。除非你在别的类中实例化这个类.
qqid88147418 2012-12-14
  • 打赏
  • 举报
回复
呵呵 各种切糕!
TUBER727 2012-12-12
  • 打赏
  • 举报
回复
引用 73 楼 longyaxx258 的回复:
Java code?1234567public class Test{ static { System.out.println("I will not use the 'Hello World'!"); System.exit(0); }}
我也试了,不行,和JDK版本有关?
xxzblog 2012-12-12
  • 打赏
  • 举报
回复
我测试过了 用的1.7不可以,但是1.6可以 正确的理解确实是 在程序运行时 先加载static 块
xingfuzhuzi1314 2012-12-11
  • 打赏
  • 举报
回复
JDK,我这1.6正常,static可以输出!
yongger520 2012-12-11
  • 打赏
  • 举报
回复
引用 78 楼 duxingzhe0311 的回复:
引用 7 楼 ldh911 的回复: 引用 6 楼 的回复:试了一下,可是虽然没有报错。但得不到输出啊 Java code?12345public class Hello{ static { System.out.println("Hello,World!"); }} C:\>java Hello HelloWorld Exception in thread "mai……
顶一个
gxg0619 2012-12-09
  • 打赏
  • 举报
回复
还可以这样啊 受教了!
猿来是妳 2012-12-09
  • 打赏
  • 举报
回复
引用 7 楼 ldh911 的回复:
引用 6 楼 的回复: 试了一下,可是虽然没有报错。但得不到输出啊 Java code ? 123456 public class Hello{ static { System.out.println("Hello,World!"); } } C:\>java Hello HelloWorld Exception in thread……
System.exit(0);这句话是强制终止找寻main方法的命令吗?应该是System类中的一个特性吧!
wikidemoon 2012-12-09
  • 打赏
  • 举报
回复
引用 74 楼 qinhualiu 的回复:
这是静态初始化语句块,类加载是可以执行的,它是在main之前执行的
+10086
shiyonghu 2012-12-09
  • 打赏
  • 举报
回复
在Eclipse和通过CMD都可以运行。
rockets311 2012-12-09
  • 打赏
  • 举报
回复
引用 7 楼 ldh911 的回复:
引用 6 楼 的回复:试了一下,可是虽然没有报错。但得不到输出啊 Java code?12345public class Hello{ static { System.out.println("Hello,World!"); }} C:\>java Hello HelloWorld Exception in thread "main" java……
试了一下,JDK1.6可以,JDK1.7就不行。
qinhualiu 2012-12-08
  • 打赏
  • 举报
回复
这是静态初始化语句块,类加载是可以执行的,它是在main之前执行的
Mojitoming 2012-04-18
  • 打赏
  • 举报
回复
public class  Test
{
static {
System.out.println("I will not use the 'Hello World'!");
System.exit(0);
}
}
Mojitoming 2012-04-18
  • 打赏
  • 举报
回复
public class  Test
{
static {
System.out.println("I will not use the 'Hello World'!");
System.exit(0);
}
}


我的也不行。。。不会跟jdk有关吧。。
悠悠-我心 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 的回复:]

静态代码块可以执行!!执行一次!!

下面这种没有main方法也可以执行hello world

import org.junit.Test;

public class NoMain {

@Test
public void noMain()
{
System.out.println("hello,world");
}
}
[/Quote]



在哪里 运行的???
logic_well 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 的回复:]
还是不可以啊 用不用设置什么东西啊 ??我就是自己敲的cmd啊 ....高手快指导一下吧
[/Quote]
别放在eclipse的工程下试试
这个东西叫静态块 它里边的东西只在类被加载的时候执行一次 然后再也看不到了
这里例子其实程序并没有运行起来 只是在加载类的时候把静态块加进去了
拿static{}括起来是因为类里面只能有方法和成员变量 想在加载类的时候执行的东西只能靠放在静态块里实现
kevinwangxiyu 2012-04-11
  • 打赏
  • 举报
回复
新手来逛逛,受教了,static
加载更多回复(65)

62,615

社区成员

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

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