JAVA学习有感--final修饰符的理解
2012-12-09 14:18
232 查看
温故而知新,可以为师矣。
初中的时候对这句话的理解,就是课文最后的那一句“并背诵全文”。
现在想想,真的很有道理的一句话。当初大2学JAVA的时候很浮躁,对final理解的也不深,最近用到了,也查了一些资料,又从中收获了很多原来不知道得东西。
final成员变量
final成员变量一旦被赋予初始值之后就不可更改。final成员变量不会初始化,需要程序员自己进行初始化。我们可以在初始化块中或构造函数中对final成员变量进行初始化,不可以在普通方法中对final成员变量进行初始化。
普通的成员变量,没有指定初始值的时候,会被系统赋值,但是final成员不会被赋值。
final局部变量
和final成员变量一样,只可以被初始化赋值一次,赋值后不可更改。
final引用变量
final只能保证对于引用变量的地址保持不变,对于引用变量内部的成员变量,可以进行修改。也就是final只指向一个引用变量的地址,这个不变,其他的没关系。
final方法
通过使用final修饰方法,使其不可以被子类重写。它不能被重写,但是可以被重载。
final类
不可以被继承的类,继承final类会引起编译错误。
不可变类
不可变类(immutable)指的是该类创建完实例后,该实例的成员变量不会改变。JAVA的8个包装类和String都是不可变类。
我们使用private final 来修饰不可变类的成员变量。提供带参数的构造函数为不可变量设置初始值。不提供set方法。
有一点需要注意,当我们的成员变量中含有final引用变量的时候,我们必须保护好初始化这个引用变量的过程,使外界修改引用变量的成员变量的值,我们的引用变量也不会改变。否则该不可变类就不是一个不可变类。听起来很麻烦,因为现在没用到,如果找到好的例子,会第一时间给大家解读。
初中的时候对这句话的理解,就是课文最后的那一句“并背诵全文”。
现在想想,真的很有道理的一句话。当初大2学JAVA的时候很浮躁,对final理解的也不深,最近用到了,也查了一些资料,又从中收获了很多原来不知道得东西。
final成员变量
final成员变量一旦被赋予初始值之后就不可更改。final成员变量不会初始化,需要程序员自己进行初始化。我们可以在初始化块中或构造函数中对final成员变量进行初始化,不可以在普通方法中对final成员变量进行初始化。
普通的成员变量,没有指定初始值的时候,会被系统赋值,但是final成员不会被赋值。
final局部变量
和final成员变量一样,只可以被初始化赋值一次,赋值后不可更改。
final引用变量
final只能保证对于引用变量的地址保持不变,对于引用变量内部的成员变量,可以进行修改。也就是final只指向一个引用变量的地址,这个不变,其他的没关系。
final方法
通过使用final修饰方法,使其不可以被子类重写。它不能被重写,但是可以被重载。
final类
不可以被继承的类,继承final类会引起编译错误。
不可变类
不可变类(immutable)指的是该类创建完实例后,该实例的成员变量不会改变。JAVA的8个包装类和String都是不可变类。
我们使用private final 来修饰不可变类的成员变量。提供带参数的构造函数为不可变量设置初始值。不提供set方法。
有一点需要注意,当我们的成员变量中含有final引用变量的时候,我们必须保护好初始化这个引用变量的过程,使外界修改引用变量的成员变量的值,我们的引用变量也不会改变。否则该不可变类就不是一个不可变类。听起来很麻烦,因为现在没用到,如果找到好的例子,会第一时间给大家解读。
相关文章推荐
- java学习笔记14—— final修饰符
- Java中final修饰符的初始化安全性的理解
- java学习:理解final
- java学习笔记之static,final,abstract修饰符和接口
- 深入理解final在Java和Android中修饰局部变量的意义
- Java菜鸟学习笔记--面向对象篇(十七):Final修饰符
- java 面向对象学习笔记——修饰词final,static,abstract
- 【JAVA学习】5.重写的概念理解和多态、final
- java学习之旅43--final_修饰变量_方法_类
- Java学习笔记之深入理解关键字final
- 【幻化万千戏红尘】qianfengDay08-java基础学习:修饰符、重写、继承、抽象、递归、final
- java学习日记_38:final关键词的引入和修饰对象的特点
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
- Java中的abstract,static,final修饰符
- (Java2D 学习笔记系列) (一)一个简单的图像填充实例及其分析理解
- java匿名类使用的局部变量只能用final修饰?
- 学习java后对分布式方面的一些理解
- java的修饰引用变量的final和C++的const区别真的很大
- 【Java学习】Java IO-File类的理解和总结
- 菜鸟的学习之路(2) —java 运算符、语句和简单理解面向对象程序设计