class Test{
private String name;
private final int age;
public final double grade;
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public double getGrade()
{
return grade;
}
public static void main(String[] args)
{
Test t=new Test();
t.name="zpcand";//可以
t.age=23;//不可以,为什么?final修饰的变量不可以被重新 //赋值,但这里是程序中第一次对其赋值啊。。而且final修 //饰的变量不会被系统默认初始化的啊???
t.grade=77.3;//不可以,为什么?
System.out.println("个人信息:"+t.getName +t.getAge+ t.getGrade);
}
}final修饰的变量不可以被重新赋值,但这里是程序中第一次对age,grade这两个变量赋值啊,为什么不可以?而且final修饰的变量不会被系统默认初始化的啊.
private String name;
private final int age;
public final double grade;
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public double getGrade()
{
return grade;
}
public static void main(String[] args)
{
Test t=new Test();
t.name="zpcand";//可以
t.age=23;//不可以,为什么?final修饰的变量不可以被重新 //赋值,但这里是程序中第一次对其赋值啊。。而且final修 //饰的变量不会被系统默认初始化的啊???
t.grade=77.3;//不可以,为什么?
System.out.println("个人信息:"+t.getName +t.getAge+ t.getGrade);
}
}final修饰的变量不可以被重新赋值,但这里是程序中第一次对age,grade这两个变量赋值啊,为什么不可以?而且final修饰的变量不会被系统默认初始化的啊.
public static void main(String[] args) {
Test t=new Test();
/*
t.name = "zpcand";//可以
t.age = 23;//不可以,为什么?final修饰的变量不可以被重新
//赋值,但这里是程序中第一次对其赋值啊。。而且final修 //饰的变量不会被系统默认初始化的啊???
t.grade = 77.3;//不可以,为什么?
System.out.println("个人信息:" + t.getName() + t.getAge() + t.getGrade());
*/
}
//编译期一次只能报有限个错误,按照上面的注释掉,再编译一下看看
你做的操作其实是修改final修饰的值,所以肯定会出错。
你的应该也会提示你的final变量没有赋初始值。
常量是不能改变的
private final int age = 20;
public final double grade = 90.5;
只能在初始化的时候赋值
提示应该会给你很多启发的。
不一定要来csdn上面问的
当你通过提示修改代码后运行成功
你就能想明白了。。
final修饰变量开始直接赋值,以后取值就行,不能修改了