A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梧桐树上的男人 中级黑马   /  2016-3-27 00:15  /  545 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

final修饰成员变量有什么特点?

7 个回复

倒序浏览
很简单,final修饰的变量变为常量.
int i= 1;
final int j = 2;
i里面存储的值现在是1,但是可以通过后面的方法对i的值进行修改
但是j里面的值就变成了常量,只能调用这个值,而不能去修改j里面存贮的值
回复 使用道具 举报
lennycxy 来自手机 中级黑马 2016-3-27 09:23:09
藤椅
final的如果是地址可以改值的final int []arr = new int[5]
回复 使用道具 举报
被修饰的成员变量变成了常量,不能被改变
回复 使用道具 举报
这个成员变量只能被赋值一次,并且赋值时机还有限制:必须在对象构造完成之前完成赋值。
回复 使用道具 举报
被final修饰的变量是一个常量,只能被赋值一次,既可以修饰成员变量,也可以修饰局部变量。
回复 使用道具 举报
zxw 中级黑马 2016-3-27 13:37:18
7#
final修饰的成员变量:
总体来说:只能被赋值一次;其次赋值时可以在声明变量时赋值,也可以在代码块中赋值,还可以在构造函数中赋值。
细分:如果该变量同时还被static修饰,则该变量只能在1、声明时赋值;2、静态代码块中赋值。
         如果该变量没有被static修饰,则该变量只能在1、声明时赋值;2、非静态代码块中赋值;3、构造函数中赋值。
回复 使用道具 举报
直接上代码.........

  1. public class TestFinal {
  2.         // 可以在构造代码块和构造器中赋值,
  3.         final int a;
  4.         static final int b;
  5.         // 定义时赋值 合法
  6.         final int c = 3;
  7.         final int d;
  8.         final char ch;

  9.         // 没有赋值 不合法
  10.         // final int d;
  11.         {
  12.                 a = 1;

  13.         }

  14.         static {
  15.                 // 只能在静态代码块
  16.                 b = 2;
  17.         }

  18.         public TestFinal() {
  19.                 // 构造代码块优先于构造器执行 之前已经被赋值 不合法
  20.                 // a = 4;
  21.                 d = 8;
  22.                 ch = 'c';
  23.         }

  24.         public void test() {
  25.                 // 普通方法不能为final修饰的成员变量赋值或初始化
  26.                 // d=6;
  27.                 // ch='a';

  28.         }

  29. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马