final 修饰 a 修饰的是对像 修饰的对象不能被重写 而参数可以改变
final 修饰 b修饰的是变量,而final修饰的变量的值不能被改变。其实就是一个常量
final关键字
(1)最终的意思,可以用于修饰类,方法,变量。
(2)final修饰的类不能被继承。
final修饰的方法不能被重写。
final修饰的变量的值不能被改变。其实就是一个常量。作者: 方志亮 时间: 2012-8-14 21:18
final是修饰变量的,不是修饰对象本身的
String,StringBuffer一个是在堆上建的,一个是在栈上建的
举例说明:
final String s = "hello";
这里final是修饰变量s的,而不是修饰"hello"
至于说String不能修改,是因为String类是immutable的,就是不能修改的意思,immutable也是一个修饰符
final StringBuffer sb = new StringBuffer("hello");
这里final修饰了sb,sb就不能指向其它对象了
比如sb = new StringBuffer("hi");这样是不允许的
但是sb所指向的那个对象本身还是可以改变的
比如sb.append(" world");是允许的,因为sb并没有变,sb仍然指向的是那个对象,变化的是对象本身作者: 杨健yj 时间: 2012-8-14 22:38 本帖最后由 杨健yj 于 2012-8-14 22:44 编辑
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的
我们之所以会产生问题是因为我们通常会想到赋值变量如final a =5;我们就会认为a的值不可以改变了就
是5这是对的。但当变量a变成引用型变量时,我们可能就会纳闷了。如final b = new Person()