不行的,因为final int f;已经赋了默认得值0了,final 的变量当然不能赋值两次。
所以方法级的final变量是可以先定义后赋值的。但是全类final变量就不可以了。
所以方法级的final变量是可以先定义后赋值的。但是全类final变量就不可以了。
解决方案 »
- java.io.StreamCorruptedException: invalid stream header
- java 处理字符唯一的方法
- java字符串问题
- 如何解析 牛津词典 mdx文件
- JAVA中怎么实现javascript的setTimeout功能
- 请问Eclipse3.1的中文包哪里有下,我在官方网站找不到。
- 关于java中方法的大写和小写问题(问题很简单,这分很容易得)
- 请问局部变量的生存期??
- 求将"d:\file.txt"转成"d:/file.txt"最好的方法!
- JAVABAEN或MVC中,多数据库问题怎么样解决呀?
- 接口
- !!!!!200分悬赏一道非常困难的算法题,菜鸟最好不要进来,因为自信心会受到打击的!!!!
{
x=a;
y=b;
}
并没有对f进行初始化,所以会报错,
把 f=1; 加到里面,就能过了。
point(int a,int b)
{
this();
x=a;
y=b;
}
不过你这样肯定不行,我手头上没编译器,你试试这样如何class point
{
int x,y;
final int f;
point()
{
f=60;
System.out.println("LOADing");
}
public static void main(String [] args)
{
point pt = new point();
System.out.println(pt.f);
}
}如果没错误的话,我再帮你分析原因:>
class point
{
int x,y;
final int f;
point(int a,int b)
{
x=a;
y=b;
}
point()
{
this(10,20);
f=60;
System.out.println("LOADing");
}
public static void main(String [] args)
{
point pt = new point();
System.out.println(pt.f);
}
}
方法中没有给f赋初值,在程序编译的时候系统会进行检查的,所以即使没有
调用这个构造方法,也通过不了编译。point(int a,int b)
{
x=a;
y=b;
}
int x,y;
final int f;
point(int a,int b){ // A处
x=a;
y=b;
f=1.0F;
}
point(){ /// B处
f=60F;
System.out.println("LOADing");
} //... 其他重载的构造方法 public static void main(String [] args)
{
point pt1 = new point(); // 仅调用 B处 的构造方法
point pt2 = new point(1,2); // 仅调用 A处 的构造方法,所以不为 变量f 赋初值则编译时会报错
System.out.println(pt.f);
}
}
int x,y;
final int f;
point(int a,int b){ // A处
x=a;
y=b;
f=1.0F;
}
point(){ /// B处
f=60F;
System.out.println("LOADing");
} //... 其他重载的构造方法 public static void main(String [] args)
{
point pt1 = new point(); // 仅调用 B处 的构造方法
point pt2 = new point(1,2); // 仅调用 A处 的构造方法,所以不为 变量f 赋初值则编译时会报错
System.out.println(pt1.f);
}
}