首页 > 编程知识 正文

java中final关键字的说法错误的是,java中final关键字与except区别

时间:2023-05-06 19:45:41 阅读:251171 作者:4402

final

final是java语言中的一个关键字

final表示最终的,不可变的

final可以修饰变量以及方法,还有类等。

final修饰的类(无法被继承) final class A{ //A 是没有子孙的}class B extends A{ //错误的, 无法从最终类A进行继承 //B类继承A类 相当于对A类功能进行扩展 //如果不希望别人对A类进行扩展,可以给A类加final关键字,如String类} final修饰的方法(无法被覆盖,重写) class C{ public final void doSome(){ System.out.println("C's doSome...") } }class D extends C{ //错误,无法覆盖 /* public void doSome(){ System.out.println("D's doSome...") } */} final修饰的局部变量(只能赋一次值) public class FinalTest01{ public static void main(String[]args){ //局部变量 int i=100; //重新赋值, 没问题 i=200; // 再定义一个局部变量 final int k=100; //重新赋值 //错误: 无法为最终变量k分配值 // k=300; }} final修饰的实例变量(必须手动赋值) /*一般情况下实例变量如果还没有赋值的话,系统会赋默认值final 修饰实例变量:系统不负责赋默认值,要求程序员必须手动赋值,只能赋一次,这个手动赋值,在变量后面赋值可以,在构造方法中赋值也可以*/public class FinalTest02(){ public static void main(String[]args){ }}class User{ //实例变量 //错误: 变量age未在默认构造器中初始化 //final int age; final int age=10; //在构造方法中赋值 weight只赋一次值 final double weight; //构造方法 public User(){ this.weight=80; //系统赋默认值在这个时候,final修饰后,系统不会赋值 //this.weight=0; } } 常量 /*上一个例子的结论 final修饰的实例变量。必须手动赋值 final修饰的变量,只能赋一次值final修饰的实例变量一般添加static修饰 变成静态的,存储在方法区,节省空间。结论:static final联合修饰的变量成为“常量” 常量名要全部大写,每个单词之间采用下划线衔接 常量:实际上和静态变量一样 区别在于:常量的值不能变。 常量和静态变量,都是存储在方法区,并且都是在类加载时初始化 常量一般都是公开的:public的。*/public class FinalTest03{ public static void main(String[]args){ System.out.println(Chinese.COUNTRY); //错误:无法为最终变量COUNTRY赋值 //Chinese.COUNTRY="美国"; //常量是无法被重新赋值的 }}class Chinese{ //身份证号,每个人都不一样 String idCard; String name; String birth; //国家的值是一个固定值:"中国" //实例对象在堆中,一个对象一份 一百个对象一百份 //实例变量既然用final修饰了,说明该实例变量值不会随着对象的变化而变化public static final String COUNTRY="中国";} final修饰引用(只能指向一个对象) /*final修饰的变量 如果这个变量是一个"引用"会怎么样? final修饰的变量只能赋一次值 "引用"是否是一个变量 :是 总结:final修饰的引用 1.该引用只能指向1个对象 并且它只能永远指向该对象 无法再指向其他对象 2.在该方法执行过程中,该应用指向该对象之后,该对象不会 被垃圾回收器回收,直到当前方法结束,才会释放空间 3.虽然final的引用指向对象A后,不能重新指向对象B 但是对象A内部的数据可以被修改*/public class FinalTest04{ public static void main(String[]args){ Person p=new Person(20); System.out.println(p1.age); //-------------------------------------- // 代码不管怎么变化,p也是一个变量,只不过他是引用 //错误:无法为最终变量p分配值 地址不能改变 // final Person p=new Person(30);//0x1234; // p=new Person(30);//0x2589 } } class Person{ int age; public Person(){} public Person(int age){ this.age=age; } } 内存图

win7电脑文件夹如何加密Hive3详细教程(九)Hive3自定义UDF函数(IDEA Maven版)helm使用

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。