final修饰符
1.final可以修饰成员变量,局部变量,形参
2.有的书上说final不能被赋值(错)
严格地说,是final修饰的变量不可被改变,一旦获得了初始值,就不能被重新赋值
final修饰的成员变量
1.Java语法规定:final修饰的成员变量必须有程序员显式的指定初始值,否则final修饰的成员变量一直是系统默认分配的默认值,这就失去了存在的意义
2.final修饰类变量时,必须在静态初始化代码块中或声明该类变量时两者之一指定初始值
final修饰的实例变量必须在非静态初始化块,声明该实例变量或构造器其中之一指定初始值
注:final修饰的变量只能赋值一次,final修饰的成员变量不能再普通方法中指定初始值
final修饰的局部变量
1.同样,final修饰的局部变量也需要程序员显式的指定初始值
2.final修饰形参时,不能对其指定初始值,在后面,会在调用这个方法时由传入的参数对其指定初始值
final修饰引用类型的变量
1.final修饰引用类型变量时,只保证这个引用类型的变量的所引用的地址不会改变,即一直引用同一
对象,对象的地址不会改变,但这个对象的内容完全可以改变
如:final修饰 ArrayList1数组时,只能保证数组的地址不会改变,而数组中的内容可以改变
Array.toString(ArrayList1); //对这个数组排序,合法
ArrayList1[0] = 2; //对数组元素赋值,合法
ArrayList1 = null; //对ArrayList1重新赋值,非法
------------------------------------------------------------------------------
final Person p = new Person(); //Person类中有一个实例变量age
p.setAge(10); //改变Person对象age的实例变量,合法
p = null; //对p重新赋值,非法
final执行“宏替换”

public class FinalTest{      public static void main(String[] args){//定义一个普通局部变量,此时,当使用到a时,a就会被“宏替换”为2final int a = 2;    String b = "Java";String c = "学习";String d = b + c;String e = "Java" + "学习";String f = "Java学习";//下面将输出trueSystem.out.println(f == e);//下面将输出falseSystem.out.println(d == f);/*因为在编译阶段无法确定d的值,所以也就无法让d指向常量池里缓存的“Java学习”,所以将输出false*/
//-----------------------------------------------------------------------//如果用final修饰,则不一样final String b1 = "Java";final String c1 = "学习";String d1 = b1 + c1;       //(1)String f1 = "Java学习";//下面将输出trueSystem.out.println(d1 == f1);/*final对b1,c1进行了“宏替换”,所以在编译阶段(1)行代码就相当于Sting d1 = "Java" + "学习“;所以在编译阶段d1指向常量池里的”Java学习“*/}
}

注:对于final实例变量而言,只有在定义该变量时指定初始值,才会有”宏变量“的效果

final修饰方法
1.*final修饰的方法不能被重写
*private修饰的方法,别的类访问不到
*final和private同时修饰一个方法时,可以在子类中有同名的方法,
这样不是重写,只是在子类中定义了一个和父类中的一个方法方法名相同的方

*但如果用仅final修饰父类中的某个方法,在子类中不能用同名的方法,如果有,会报错
*final修饰的方法可以被重载,仅仅只是不能被重写
final修饰类
嗯。。。。。暂时不懂,以后再说

Java中final相关推荐

  1. java中final关键字的使用

    final 中文翻译为 最终的,在java中也是较为常用的关键字之一. 在java 中 final 关键字可以修饰  类.方法.变量 final 修饰在类上,则表示该类不能被继承,如果里面的成员变量没 ...

  2. JAVA中Final的用法

    JAVA中Final的用法 1. 修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的 ...

  3. java中final的意义

    转载自 https://blog.csdn.net/hikvision_java_gyh/article/details/8964541 1.如果一个数据既是static又是final,那么它会拥有一 ...

  4. 转 Java中final、finally、finalize的区别与用法

    Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...

  5. java中常量final的用法_详解Java中final的用法

    本文主要介绍了Java中final的使用方法,final是java的关键字,本文就详细说明一下它的使用方法,需要的朋友可以参考下 概念 final 具有"不可改变的"的含义,可以修 ...

  6. [转载] java中final,finally,finalize三者的作用和区别

    参考链接: Java中final,finally和finalize Final是一个修饰符: 当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值 当final修饰的变量为静态变量(即由 ...

  7. [转载] Java中final关键字

    参考链接: Java中的final关键字 文章目录 1 final关键字1.1 final修饰类1.2 final修饰方法1.3 final修饰属性---常量1.3.1 final修饰普通数据类型的成 ...

  8. ACAC java中final关键字

    java中final关键字/*1.final关键字:java 中的一个关键字,最终的,不可变的可以修饰变量以及方法,还有类等.1.修饰的方法,修饰的类无法被覆盖,无法被重写,无法被继承写的方法不希望被 ...

  9. java中final详解_Java中final用法与详解

    Java中final用法与详解 final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的.这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. f ...

  10. java 中final修饰的变量_java中final修饰符的使用方法

    本文为大家分享了java中final修饰符的使用,供大家参考,具体内容如下 1.final修饰符的用法: final可以修饰变量,被final修饰的变量被赋初始值之后,不能对它重新赋值. final可 ...

最新文章

  1. 在linux中怎么重置mysql密码_详解如何在Linux(CentOS)下重置MySQL根(Root)密码
  2. 【青少年编程】【三级】克隆猫游戏
  3. FLASH免激活js
  4. linux32安装pgsql,Linux安装pgsql
  5. 【STM32】FreeRTOS编码风格
  6. python学生分布_Python数据分析实战之分布分析
  7. python之file 方法
  8. 网际控制报文协议icmp_网络中的ICMP(Internet控制消息协议)
  9. 【11.18总结】从SAML出发在重定向中发现的XSS漏洞
  10. 百度关键词抓取工具_阿里巴巴国际站运营关键词抓取工具
  11. python树的实现
  12. Python的WSGI
  13. Maven核心概念(转)
  14. 查看cp进度,使用watch
  15. HDU 1573 X问题 [中国剩余定理]
  16. C#.NET自定义报表数据打印
  17. HFSS - GSM 900 和 DCS 1800 双频PIFA天线的设计与仿真
  18. 通讯录_你有多久没翻过通讯录了?
  19. 锤子pro2 Android8,锤子 坚果Pro2 MIUI10 Android N 快如闪电 指纹支付 完美ROOT
  20. 剑指offer做题记录

热门文章

  1. 用HTML5构建一个流程图绘制工具
  2. 人工智能的过去与未来——萌芽
  3. Python脚本编写的学习
  4. Mysql事务原理拆解
  5. 中国电子学会2022年09月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)
  6. java实战技术培训,精心整理
  7. react入口文件_React项目文件结构解析
  8. 抗衰老的12把金钥匙
  9. echarts--设置图表背景网格线
  10. 四六级,取消的危害更大