java空白final的问题
答案:3 悬赏:20 手机版
解决时间 2021-12-03 09:20
- 提问者网友:爱了却不能说
- 2021-12-02 11:31
java空白final的问题
最佳答案
- 五星知识达人网友:英雄的欲望
- 2021-12-02 11:39
空白final可以不用定义时赋值,楼主类中定义的变量a与f都没有问题。
问题在于构造函数,两个构造函数中,实例化时只会有一个被调用,导致会有一个变量未初始化。
比如,FinalTest x=new FinalTest(2);时,这时候a有值了,可是f是没有初始化的。
问题在于构造函数,两个构造函数中,实例化时只会有一个被调用,导致会有一个变量未初始化。
比如,FinalTest x=new FinalTest(2);时,这时候a有值了,可是f是没有初始化的。
全部回答
- 1楼网友:罪歌
- 2021-12-02 12:43
final修饰符 表示常量
要在定义的时候赋值
例如
private final int a= 3;追问可是《java编程思想》里说 “java允许生成空白final...... 必须在域的定义处或者每个构造器中用表达式对final赋值"
而且也给出了一个例子 编译通过了 = =
奇了怪了
要在定义的时候赋值
例如
private final int a= 3;追问可是《java编程思想》里说 “java允许生成空白final...... 必须在域的定义处或者每个构造器中用表达式对final赋值"
而且也给出了一个例子 编译通过了 = =
奇了怪了
- 2楼网友:归鹤鸣
- 2021-12-02 12:36
class Final{
Final(){
System.out.println("Final constructor");
}
}
public class FinalTest{
private int a;
private Final f;
public FinalTest(int i){
a=i;
System.out.println(a);
}
public void FinalTest(Final f){
this.f=f;
}
public static void main(String[] args){
FinalTest x=new FinalTest(2);
Final p=new Final();
}
}
-------------------------------------------------------------------------------------------------
改成这样就好了,你的程序中private final int a;表示定义一个final型变量,表示a是常数,就不能修改了,你在FinalTest的构造器中又改变a的值肯定要报错了。还有最后一句话我不知道你是要实例化FinalTest类还是Final类。自己看看,有不明白的请追问,祝你学习进步。
Final(){
System.out.println("Final constructor");
}
}
public class FinalTest{
private int a;
private Final f;
public FinalTest(int i){
a=i;
System.out.println(a);
}
public void FinalTest(Final f){
this.f=f;
}
public static void main(String[] args){
FinalTest x=new FinalTest(2);
Final p=new Final();
}
}
-------------------------------------------------------------------------------------------------
改成这样就好了,你的程序中private final int a;表示定义一个final型变量,表示a是常数,就不能修改了,你在FinalTest的构造器中又改变a的值肯定要报错了。还有最后一句话我不知道你是要实例化FinalTest类还是Final类。自己看看,有不明白的请追问,祝你学习进步。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯