比如class A{
int a=1;
Sysem.out.println("hello");
void funa()
{
……
}}这对吗,这算什么:【类定义中,成员变量和成员方法之间,单独放一个println语句输出语句,能执行吗,这算什么?】
int a=1;
Sysem.out.println("hello");
void funa()
{
……
}}这对吗,这算什么:【类定义中,成员变量和成员方法之间,单独放一个println语句输出语句,能执行吗,这算什么?】
调试欢乐多
你可以这样试一下public class A{
static {
System.out.println("hello");
}
}这可以编译执行 (只是报个警告!)
发现虽然不对,但是直接加上一个{}就对了,没有用static关键字
请问这算什么?多谢
应该算是非静态语句块吧,那这种非静态语句块充当的是什么角色,什么时候运行????渐渐明白了,还是请大侠核准
但有一个问题,我发现子类mian中若new子类本身,则会调用子类非静态域,就是你说的那种在构造函数之前运行(此时还有一个问题【问题1】,类的成员变量是不是最先初始化,也就是说顺序是:类的成员变量的默认初始化和显式初始化,然后非静态域,然后构造函数?)【问题2】但若不new本身而运行,则不会调用非静态域~!
请指点只是怎么回事?
【问题3】子类main中new不new自己的区别在哪里,不是都能运行吗?
总共3个问题,请赐教,多谢
对于【问题2】,Java里面的规定是
非静态块,每次new一个新对象的时候,调用一次;没有new新对象时,不调用
静态块,当类被调用的时候,仅仅此时调用一次,以后不再调用
对照上面,所以不new本身而运行,非静态的不会被调用