黑马程序员技术交流社区

标题: final关键字问题 [打印本页]

作者: 宗士为    时间: 2012-5-21 09:02
标题: final关键字问题
当我们使用final关键字修饰一个字符串变量时
是字符串的引用不能变
还是说字符串引用的内容不能变
有点乱  求解
作者: 王怡然    时间: 2012-5-21 09:06
final可以用来修饰变量:被final修饰的变量为常量,值不能被修改。
作者: 张文建    时间: 2012-5-21 09:12
final可以修饰类,函数,变量
修饰类时:修饰类为最终类,任何类不能继承它.
修改函数时:该方法在类里是最终方法,继承它的方法不能去重写它.
修饰变量时:被修饰的变量是常量或者叫终态变量,一旦初始化后就不能再改变变量的值.
作者: 魏涞    时间: 2012-5-21 09:14
用final关键字修饰一个字符串变量,是字符串的引用不能变。
如:final String str=new String("abc");
    这里的str指向一个字符串对象地址,被final修饰后,str的值就不能被改变了,
    str=new String("def");这就会报错,提示str不能被修改。
    但str.append("xxx");是可以的,对象的值是可变的

作者: 古银平    时间: 2012-5-21 09:20
final 对于常量来说,意味着值不能改变,例如 final int i=100。这个i的值永远都是100。但是对于变量来说又不一样,只是标识这个引用不可被改变,例如 final File f=new File("c:\\test.txt");那么这个f一定是不能被改变的,如果f本身有方法修改其中的成员变量,例如是否可读,是允许修改的。形象的比喻:一个女子定义了一个final的老公,这个老公的职业和收入都是允许改变的,只是这个女人不会换老公而已。
作者: 荣天    时间: 2012-5-21 09:21
final的特点:
1.修饰变量(成员变量,局部变量,静态变量)函数,类;
2.修饰的类不可以被继承;
3.修饰的函数不可以被覆盖;
4,修饰的变量是一个常量,只能赋值一次;
*5。内部类只能访问局部的final修饰变量;
      例题就不说了    特点基本就这几个;

作者: niceBoy    时间: 2012-5-21 11:34
当我们使用final关键字修饰一个字符串变量时,是字符串的引用不能变,只能指向那个字符串对象。
不过字符串对象本身也是final修饰,也是不可以变的
作者: 张成龙    时间: 2012-5-21 11:52
final关键字修饰一个变量时,是引用变量不能变,引用变量所指向的对象中的内容还是可以改变的
但是字符串初始化之后也是不能变的,只能改变字符串引用的指向
public class Mypra {
public static void main(String[] args) {
  final StringBuffer sb = new StringBuffer("hello java");
// sb = new StringBuffer("");//编译失败
  //The final local variable sb cannot be assigned.
  //It must be blank and not using a compound assignment
  sb.append("hello word"); //通过编译:
  System.out.println(sb);
}
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2