黑马程序员技术交流社区
标题:
关键字final
[打印本页]
作者:
梧桐树上的男人
时间:
2016-3-27 00:15
标题:
关键字final
final修饰成员变量有什么特点?
作者:
Laopozini123
时间:
2016-3-27 08:30
很简单,final修饰的变量变为常量.
int i= 1;
final int j = 2;
i里面存储的值现在是1,但是可以通过后面的方法对i的值进行修改
但是j里面的值就变成了常量,只能调用这个值,而不能去修改j里面存贮的值
作者:
lennycxy
时间:
2016-3-27 09:23
final的如果是地址可以改值的final int []arr = new int[5]
作者:
徐选伟Shirwee
时间:
2016-3-27 10:20
被修饰的成员变量变成了常量,不能被改变
作者:
ipursue
时间:
2016-3-27 10:31
这个成员变量只能被赋值一次,并且赋值时机还有限制:必须在对象构造完成之前完成赋值。
作者:
zhoubinjian
时间:
2016-3-27 12:56
被final修饰的变量是一个常量,只能被赋值一次,既可以修饰成员变量,也可以修饰局部变量。
作者:
zxw
时间:
2016-3-27 13:37
final修饰的成员变量:
总体来说:只能被赋值一次;其次赋值时可以在声明变量时赋值,也可以在代码块中赋值,还可以在构造函数中赋值。
细分:如果该变量同时还被static修饰,则该变量只能在1、声明时赋值;2、静态代码块中赋值。
如果该变量没有被static修饰,则该变量只能在1、声明时赋值;2、非静态代码块中赋值;3、构造函数中赋值。
作者:
向北_
时间:
2016-3-27 15:27
直接上代码.........
public class TestFinal {
// 可以在构造代码块和构造器中赋值,
final int a;
static final int b;
// 定义时赋值 合法
final int c = 3;
final int d;
final char ch;
// 没有赋值 不合法
// final int d;
{
a = 1;
}
static {
// 只能在静态代码块
b = 2;
}
public TestFinal() {
// 构造代码块优先于构造器执行 之前已经被赋值 不合法
// a = 4;
d = 8;
ch = 'c';
}
public void test() {
// 普通方法不能为final修饰的成员变量赋值或初始化
// d=6;
// ch='a';
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2