一个问题(0分)

  • 主题发起人 主题发起人 ztka
  • 开始时间 开始时间
Z

ztka

Unregistered / Unconfirmed
GUEST, unregistred user!
public class HelloWorld
{
static
{
System.out.println("Hello World");
}
}
这样对不对?为什么?
 
[:)]我知道这样是对的,但我不知道这是为什么?
 
没有人知道吗?不是java论坛吗?咳。。。。只是讨论一些无关紧要的问题。
 
这样没有什么问题!
是一个静态块,
也就是说这个类不需要NEW,即可运行用该静态块,
就象运行一个不带参数的main method 一样。
 
为什么没有main函数,可以运行呢?运行的时候,它还是报错没有main函数啊???
 
ztka是在出一个迷语
 
我看到一个解释,不知道能不能算证确:
public class HelloWorld
{
static //这是类的静态初始化代码。
{
System.out.println("Hello World");
}
{ //这是类的实例初始化代码。
System.out.println("Class Init!");
}
}
运行顺序是先静态初始化代码,再实例初始化代码,再构造函数。
 
我的意思并不是要你使用java把她当App去执行!
静态 意味着共享!
正如静态变量,
这个类可以在内存中产生多份实例,但静态块中的代码,只会运行一次。
 
我认为不戒和尚的解释也许是对的,zhuny,你能够再详细一些吗?不用做app,为什么
可以运行?这个不太清楚
 
在static block中,类可以包含方法程序中不存在的代码,我们叫她静态初始化程序。
这是完全有效的。
当类被装载时,静态块代码就会执行,只执行一次。
类中不同的静态块按它们在类中出现的顺序被执行。
 
这很容易解释:
当你调用java *** 的时候, 首先创建一个虚拟机,然后初始化要执行的类,
然后调用该类中的一个静态的main函数,这个函数的名字main是在java.exe中写死的,
你可以改掉它,那样的话你的java.exe就可以执行任何函数来开始你的java程序。
有兴趣看看java.exe的源代码就一目了然了。
 
各位,有用delphi的吗,
不戒和尚说的前面很对,后面两句就不用了。
public class HelloWorld
{
static //这是类的静态初始化代码。
{
System.out.println("Hello World");
}
{ //这是类的实例初始化代码。
System.out.println("Class Init!");
}
}
运行顺序是先静态初始化代码。

其实这个Delphi的单元代码的Initialization节代码相似,工作机制也很相似。
 
楼上的xiangya说得是对的。
to: ztka:
没错儿,这里是java的论坛,并非“只是讨论一些无关紧要的问题”。你的这类问题早就有人提过了。
参见:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1696963
 
后退
顶部