java基础之final关键字
时间:2014-07-22 23:03:14
收藏:0
阅读:348
与final关键字相关的笔试题面试题也是一道必考题。而且对于final的实际应用非常广泛,在代码设计的时候,如果对此不够足够掌握,可能就会很难排查与此相关的异常。
final的理论知识如下:
final类型的成员变量初始化值:
1、声明时候直接赋值
2、构造方法中赋值,如果一个类中有多个构造方法,就要保证在每个构造方法中都要完成对final类型变量的初始化工作
3、静态final成员变量必须在声明时赋值,且不能在构造方法中赋值
4、final成员变量指的是引用不能改变,即该变量的引用不能在指向其他的对象,但是对象的内容是可以改变的,比如stringbuffer可以通过append、remove等对该对象的内容作出改变。
5、一个类的修饰符不可以同时是abstract和final
abstract类需要通过子类的继承来使用,而final则是不可继承,相互矛盾
6、为什么对于publicfinal类型的成员变量,一般都会加上static呢?
因为可以节省内存,static类型的,那么所有的对象都只有一个变量,如果是非static的,那么每一个对象都要有一个变量,而这个变量是不可改变的。
代码示例:(可将注释掉的代码放开运行,看看效果等)
/**
* author Ding Chengyun
* 2014-2-23
*/
package test;
/**
* @author Ding Chengyun
* 2014-2-23
*/
public class FinalTest {
private static final int a = 1;
// private final int a = 1;
private String name;
private final StringBuffer sb = new StringBuffer();
private final Fi fi= new Fi();
private final Integer i = new Integer(3);
public FinalTest() {
// a = 3;
}
public FinalTest(String name) {
// a = 3;
this.name = name;
}
public static void main(String[] args) {
FinalTest ft = new FinalTest();
FinalTest f = new FinalTest("hello");
System.out.println(ft.a);
System.out.println(f.a);
ft.sb.append("aa");
ft.fi.str = "abc";
System.out.println(ft.fi.str);
}
}
class Fi {
public String str;
}
评论(0)