1、
final可以修饰类,方法,变量

特点:
final可以修饰类,该类不能被继承。
final可以修饰方法,该方法不能被重写。(覆盖,复写)
final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。

常量:
A:字面值常量
"hello",10,true
B:自定义常量
final int x = 10;

2、面试题:final修饰局部变量的问题
基本类型:基本类型的值不能发生改变。
引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。

 class age{
int age = 10;
} class FinalTest2 {
public static void main(String[] args) {
final age num = new age();
System.out.println(num.age); num.age = (20); //这里改变的只是age这个地址里面的元素,而age的地制值没有改变,也无法改变
System.out.println(num.age); //num = new age(); 这个是重新给age分配地址值,而final修饰了age,所以错误。
} }

3、inal修饰变量的初始化时机
A:被final修饰的变量只能赋值一次。
B:在构造方法完毕前。(非静态的常量) 静态时,设置变量时直接赋值
例子:

 class Demo {
//int num = 10;
//final int num2 = 20; int num;
final int num2; {
//num2 = 10;
} public Demo() {
num = 100;
//无法为最终变量num2分配值
num2 = 200;
}
} class FinalTest2 {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.num);
System.out.println(d.num2);
}
}

最新文章

  1. Glide实现圆角和圆形图片
  2. pdf拆分与合并
  3. Hql 中 dao 层 以及daoimpl 层的代码,让mvc 模式更直观简洁
  4. C++学习之路——1.linux下环境搭建
  5. jira的使用
  6. 百度 WebUploader 简单入门示例
  7. MSP430F149学习之路——蓝牙模块
  8. android直接读取数据库文件
  9. IP分片和TCP分片 MTU和MSS(转)
  10. form.Show()和form.ShowDialog()的区别、新建一个form和MessageBox.Show()的常见用法
  11. 我的学习之路_第二十五_javaScript
  12. MongoDB副本集模式安装
  13. Centos7 启动指定docker容器报错
  14. padding设置和清除
  15. 开发“todolist“”项目及其自己的感悟
  16. eclipse安装插件配置Android开发环境
  17. [Unity算法]A星寻路(一):基础版本
  18. Intellij IDEA Debug调试技巧
  19. Mysql Server系统架构介绍
  20. C#.NET常见问题(FAQ)-list比数组效率低多少

热门文章

  1. [Xamarin.Android] 自定义控件
  2. [Architecture Design] CLK Architecture
  3. IOS网络编程之请求内容
  4. 数码管问题(c++实现)
  5. swift学习笔记之-闭包
  6. 3种 web 会话管理的方式
  7. jquery对javascript事件的封装一览
  8. Disconnected: No supported authentication methods available (server sent: publickey)
  9. Android直方图递增View
  10. Stack与Heap的区别