黑马程序员技术交流社区
标题:
final的问题?
[打印本页]
作者:
董志超
时间:
2012-9-30 06:27
标题:
final的问题?
本帖最后由 董志超 于 2012-10-1 08:06 编辑
class Test {
int a;
public void show() {
System.out.println("a= " + a);
}
}
//输出结果为0.
class Test1 {
final int a;
public void show() {
System.out.println("a = " + a);
}
}
//失败
//为什么成员变量用final修饰后会失败
作者:
郑世光
时间:
2012-9-30 07:10
因为final修饰的变量需要显示的初始化。
而一般的系统会进行默认的初始化。基本数据类型全部为0,引用类型为null
作者:
尤洋
时间:
2012-9-30 07:32
成员变量没有赋值的情况下 本身会进行默认初始化,
加final后会使该变量变为终态无法再进行任何初始化,所以
在加final前必须先给该变量赋值 使其在加final后成为一个常量
作者:
胡斌
时间:
2012-9-30 08:16
1.final的意义是最终的,用于修饰类,方法,和变量,其意思是不能改变。
2.用final修饰变量,声明该变量的值不能被改变,相当于一个常量。
3.常量一班必须的初始化,可以在个别局部暂时不初始化,但是随后也要进行初始化。
作者:
翁鹏
时间:
2012-9-30 08:26
final常量必须初始化后才能使用
作者:
崔朋朋
时间:
2012-9-30 10:02
final常量,用final修饰的变量不能被修改,且在声明时必须显示的初始化,否则编译不通过。
对于没用final修饰的变量,基础数据类型的初始值与数据类型有关,引用类型的初始值为null
测试代码如下:
public class InitTest {
//引用数据类型
private static String str;
//基础数据类型
private static int i;
private static float f;
private static double d;
private static boolean flag;
//private static final int i1; 此处i1若不初始化,则编译不通过
public static void main(String[] args) {
System.out.println("str= "+str);
System.out.println("i= "+i);
System.out.println("f= "+f);
System.out.println("d= "+d);
System.out.println("flag= "+flag);
}
}
复制代码
作者:
黑马-王燚
时间:
2012-9-30 13:22
final int a; 代表这个变量a 已经变成常量了,常量在定义的时候就是要被初始化的,而且只能被赋值一次,
例如: final int a=10;
你不定义时赋值 也行,那你就得在构造函数中赋值(其实也叫初始化),如:
final int a;
Test1(int x)
{
this.a=x ;
}
其实归根到底 就是一个道理!!!!!!!常量一定要被初始化!!!!!
作者:
李铁
时间:
2012-9-30 13:58
final 用于声明属性,方法和类,变量;分别表示属性不可变,方法不可覆盖,类不可继承,变量不能被改变.
用final修饰的常量可以当作一个常量使用,必有初化,否则将编译失败;初始化后就不能被改变。
作者:
徐-星星
时间:
2012-9-30 17:29
用final修饰的变量相当于常量,常量必须显示的初始化,不然编译时不会通过。
而系统默认的情况下,变量会有默认值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2