首页 > 基础资料 博客日记
final关键字的作用
2023-11-14 09:50:37基础资料围观223次
Java资料网推荐final关键字的作用这篇文章给大家,欢迎收藏Java资料网享受知识的乐趣
1.修饰类时
1.只能是公共的(public)就算不写也是public
2.被final修饰的类不可以被继承
//前面默认有个public 写不写都行
final class A{
}
2.修饰方法时
1.方法不能不能覆盖
2.被final修饰的方法,JVM会尝试将其内联,以提高运行效率
3.修饰属性和局部变量时
3.1修饰局部变量时
1.要赋值
2.不能被改变
public class Test01 {
public static void main(String[] args) {
go();
}
public static void go(){
// 方式一:初始化的时候赋值
// final int age = 10;
// 方式二:先初始化后赋值
final int age;
age = 10;
System.out.println(age);
}
}
3.2修饰成员变量时
1.必须在系统赋默认值之前赋值
2.不可更改
public class Test01 {
// 1.写法一报错未在创建时声明对象
// final int a;
// a =10;
// 2.写法二正确
// final int a = 10;
// 3.写法三正确
final int a;
// 赶在系统赋默认值之前赋值就行,系统赋默认值在构造方法执行的时候
public Test01() {
this.a =0;
}
}
final String name = "qy";
//报错
name = "ym";
final Object obj = new Object();
//报错
obj = new Object();
3.3修饰类变量时
1.与static结合使用修饰的变量是常量
2.常量要符合命名规范,全部大写,可以用下划线连接
3.被final修饰的常量,在编译阶段会存入常量池中
public class Main {
// final 放前放后都一样
// final static double PI = 3.1415926;
static final double PI = 3.1415926;
}
4.final与普通变量的区别
public class Test1 {
public static void main(String[] args) {
String a = "hello2";
final String b = "hello";
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));
System.out.println((a == e));
}
}
//结果
//true
//false
public class Test2 {
public static void main(String[] args) {
String a = "hello2";
final String b = getHello();
String c = b + 2;
System.out.println((a == c));
}
public static String getHello() {
return "hello";
}
}
//结果
//false
通过上面两个例子,我们可以发现在Test1中被final修饰的变量在进行字符串串接的时候,地址没变,但是在Test2中通过方法调用后就变了,也就是说间接的赋值会改变地址。
5.final用于引用
如果修饰引用,那么表示引用不可变,引用指向的内容可变。
public class Test02 {
public static void main(String[] args) {
final Student stu = new Student("小芊",18);
//可以修改里面的值
stu.setName("芊嵛");
// 不能再new
// stu = new Student("ff",5);
}
}
文章来源:https://www.cnblogs.com/qy-blog/p/17830968.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: