Java在声明一个变量时,如果声明为final的,那么这个变量只能被赋值一次,赋值以后变量的值不能改变。
如果final变量指向一个对象的引用,对象的状态可以改变,但final变量始终指向同一对象的引用。
这个也规则也适用于数组,因为数组也是对象。如果final变量指向数组,尽管数组内的元素可以改变,但final变量指向的还是同一个数组。
代码示例:
package com.thb;
public class Test2 {
private final String name = "graphics";
private final Line line = new Line(2);
class Line {
private int len;
public Line(int len) {
this.len = len;
}
public void setLen(int len) {
this.len = len;
}
public int getLen() {
return this.len;
}
}
public static void main(String[] args) {
Test2 test2 = new Test2();
System.out.println(test2.line);
System.out.println("line len: " + test2.line.getLen());
System.out.println("--------------------------------");
test2.line.setLen(3);
System.out.println(test2.line);
System.out.println("line len: " + test2.line.getLen());
}
}
输出:
从上面输出可以看出,final变量line指向一个Line的对象,尽管Line对象的字段len的值前后有改变,但line指向的还是同一个Line的对象。