目录

  • 1.final修饰的类无法继承
  • 2.final修饰的方法无法覆盖
  • 3.final修饰局部变量
  • 4.final修饰引用
  • 5.final修饰实例变量
  • 6.常量
  • 7.总结:

1.final修饰的类无法继承

final关键字
1.final是java语言的一个关键字
2.final表示最终的,不可变的。
3.final可以修饰变量以及方法、还有类
4.final修饰的变量?
5.final修饰的方法?
final修饰的方法无法覆盖,无法重写
6.final修饰的类?
final修饰的类无法继承
final class A{
}
//B类继承A类,相当于对A类的功能进行扩展,如果你不希望别人对A类进行扩展,你可以给A类骄傲final关键字,这样的话A类就无法继承了。
class B extends A{
}

如String类就是最终类

2.final修饰的方法无法覆盖

class C{public final void dosome(){System.out.println("c的dosome");}
}
class D extends C{public void dosome(){System.out.println("d的dosome");}
}

3.final修饰局部变量

public static void main(String[] args) {//局部变量int i=100;//重新赋值i=200;//局部变量final int k=100;//重新赋值k=300;}

final修饰的局部变量,一旦赋值不能重新赋值

final int m;//第一次赋值m=200;//重新赋值m=300;


重点:final修饰的变量,只能赋一次值。

4.final修饰引用

final修饰的变量,只能赋一次值。
引用是不是一个变量呢???,是的

public class FinalTest02 {public static void main(String[] args) {Person p1=new Person(20);System.out.println(p1.age);//代码不管怎么变化,p也是一个变量(只不过这里它有一个特殊的名字,引用)final Person p=new Person(30);p=new Person(30);}
}
class Person{int age;public Person(){}public Person(int age){this.age=age;}
}


错误:无法为最终变量p分配值
注意:局部变量没有初始值。
final修饰的引用:
该引用只能指向1个对象,并且它只能永远指向该对象。无法再指向其他对象。并且在该方法执行过程中,该引用指向该对象之后,该对象不会被垃圾回收器回收。直到当前方法结束,才会释放空间。
虽然final的引用指向A后,不能再重新指向对象B,但是对象A的数据可以被修改。

5.final修饰实例变量

final修饰的实例变量
万变不离其宗。final修饰的变量只能赋值一次。(这句话到哪里都好使)
你是否还记得:实例变量如果没有手动赋值的话,系统会赋默认值
java程序设计,甩锅甩的很好。
实例变量在什么时候赋值(初始化)
构造方法执行的过程中赋值(new的时候赋值)

终极结论:
final修饰的实例变量,系统不负责赋默认值,要求程序员必须手动赋值(定义的时候就必须赋值)
这个手动赋值,在变量后面赋值可以,在构造方法中赋值也可以

public class FinalTest03 {public static void main(String[] args) {}
}
class User{//编译器报错
//  final int age;//可以,因为程序员手动赋值了final double height=1.8;//以下这一堆代码全部联合起来,weight变量也是赋值了1次。//实例变量final double weight;//构造方法public User(){//只要我赶在系统赋默认值之前赋值就行。this.weight=80;}
}

6.常量

final修饰的实例变量
final修饰的实例变量一般添加static修饰
终极修饰:
static final联合修饰的变量称为常量
常量名建议全部大写,每个单词之间采用下划线连接
常量:实际上常量和静态变量一样,区别在于:常量的值不能改变,常他们都是存储在方法区,并且都是在类附加时初始化
常量无法重新赋值
常量一般是公开的,是public的

public class FinalTest04 {public static void main(String[] args) {}
}
class Chinese{//身份证,每个人都不一样,对象级别的String idCard;//姓名,对象不同姓名不一样String name;//国家的值就是一个固定值,"中国"//既然这里的值不会改变,还有必要声明为实例变量吗//实例变量在堆中,一个对象一份,100个对象100份//实例变量既然使用final修饰了,说明该实例变量不会随着对象的变化而变化。//该实例变量前面应该添加:static关键字,变为静态的,存储在方法区。
//  static final String country="中国";static final String COUNTRY="中国";//i永远都是10,创建100个对象,i也是10//i是10是永远不会变化的,既然这样,没必要声明为实例变量,最好是静态的,节省内存空间。}
class MyMath{public static final double PI=3.1415926;
}

7.总结:

1、final关键字

  • 1.1、final修饰的类无法继承。
  • 1.2、final修饰的方法无法覆盖。
  • 1.3、final修饰的变量只能赋一次值。
  • 1.4、final修饰的引用一旦指向某个对象,则不能再重新指向其它对象,但该引用
    指向的对象内部的数据是可以修改的。
  • 1.5、final修饰的实例变量必须手动初始化,不能采用系统默认值
  • 1.6、final修饰的实例变量一般和static联合使用,称为常量
    public static final double PI = 3.1415926;

Java基础-final关键字相关推荐

  1. Java基础(final关键字、双亲委派机制)

    Java基础 一.双亲委派机制 首先得了解类加载器Classloader在JVM中的分工: Bootstrap classLoader:主要负责加载核心的类库,构造ExtClassLoader和APP ...

  2. 【零基础学Java】—final关键字与四种用法(二十九)

    [零基础学Java]-final关键字与四种用法(二十九) 一.final关键字 final关键字代表最终.不可改变的 常见的四种用法: 可以用来修饰一个类 可以用来修饰一个方法 可以用来修饰一个局部 ...

  3. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率.1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4: ...

  4. java中final关键字的使用

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

  5. ACAC java中final关键字

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

  6. Java中final关键字的简介说明

    下文笔者讲述java中final关键字的功能简介说明,如下所示 final关键字功能 final关键字修饰的类.方法.变量都会产生特殊的意义 如:final关键字修饰过后的类不能被子类继承final关 ...

  7. final关键字_夯实基础:Java中final关键字的几种用法

    导语 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构. 关于static请查 ...

  8. Java基础super关键字、final关键字、static关键字、匿名对象整理

    super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...

  9. JAVA基础之关键字、保留字和标识符

    关键字: 1.关键字(keyword)的定义和特点 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中所有字母都为小写 官方地址: https://docs.oracle ...

最新文章

  1. 2018python培训-参加python培训要多少钱?
  2. 兼容IE和FF的js脚本做法(比较常用)[问题点数:20分]
  3. .NET 6 中哈希算法的简化用法
  4. 调用打开另外一个APK
  5. ftp服务器查看所有文件夹,查看ftp服务器所有文件夹
  6. 主流的虚拟化软件和他们各自的特点
  7. 分享(Java中new一个对象的过程)
  8. Android 设置背景透明
  9. 【前端技术】一篇文章搞掂:HTML
  10. java 红绿灯_java -- GUI 红绿灯
  11. 升级 Mellanox ConnectX-3 EN 10/40 Gbps 网卡固件
  12. 比尔盖茨沙漠里买地建未来城市?可能是个谣传!
  13. 恭喜 SphereEx 联合创始人潘娟成为亚马逊云科技新晋 Data Hero
  14. From RankNet to LambdaRank to LambdaMART: An Overview
  15. ATC计算机会议,博士生陈章玉参加国际会议USENIX ATC 2019
  16. 名编辑电子杂志大师教程 | 名编辑电子杂志大师能制作高清电子期刊吗?
  17. excel数据文件转sav数据文件(matlab代码)
  18. 18年考转专本难吗数学英语计算机,2021年江苏专转本各科目难度有多大?
  19. 马云与史玉柱经典语录
  20. Name cannot be empty.

热门文章

  1. 4月28日见!努比亚红魔3电竞手机曝光:90Hz屏幕刷新率加持
  2. 翻车!微信翻译误翻闹笑话 腾讯官方回应:紧急修复中...
  3. 最有效的七大性能测试技术
  4. java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this a
  5. matlab将程序变量写入标题,如何该这段MATLAB程序(把一个常量改成变量)
  6. 程序员打字练习_程序员必须来看的面试圣经!!
  7. python自动化测试框架有哪几种_Python自动化测试-Unittest单元测试框架详解
  8. 项目背景怎么描述_培训回顾 |第六届“互联网+”之创业大赛项目计划书撰写
  9. Linux终端下打印带颜色的信息
  10. python安装轮子_python