static {
System.out.println("static block");
}
{
System.out.println("initializer block : " + message);
}那双括号是什么意思啊?
System.out.println("static block");
}
{
System.out.println("initializer block : " + message);
}那双括号是什么意思啊?
解决方案 »
- Swing JTabbedPane 布局问题
- 如何将Object转为int?
- C#改java,应该不难吧,帮个忙,谢谢
- 这句看不懂?
- 如果作了如下定义:ServerSocket serverSocket,那么serverSocket的值是null吗?
- 怎么样在java中去控制Microsoft的office..
- !!!一个非常奇怪的问题!!!!!!!!!!!!!!!!
- 讨论:如何实现在线编辑公式(讨论者有分)
- VG FOR JAVA如何统计代码新增修改量?
- 关于JTable的单元格闪动的问题。
- 在windows中如何java代码实现解压tar的文件?
- 遇到一个类的对象给方法值传递时的出现的问题,求教?
2、加this,告诉jvm编译器,这message是当前类的属性字段,所以不会报错。
{ } 叫构造代码块或者叫非static初始化块 他的 初始化执行顺序与成员函数的执行顺序是按照先后关系来的也就是说 此例子初始化先执行 1:
static {
println("static block");
}再执行 2:
{
println("initializer block : " + message);
}最后执行 3:
private String message;如果楼主把2的this去掉编译器无法识别message变量 所以报错最好的就是把2 3 顺序交换
其次对于 对于 '非静态'的普通方法,访问'非静态'变量的时候 可以不用加this关键字
比如说
public StaticBlock(String message) {
this.message = message;
}
把this去掉也是可以的 但是此处若是去掉this编译器会认为你把行参变量的值自己复制给自己(形参名和成员数据名字相同了) 就达不到你自己的要求了~
就好像方法里面写个
i=0;
int i;这样肯定是报错的啊