关于java语言当中final关键字:
1.final是一个关键字,表示最终的,不可变的
2.final修饰的类无法被继承
3.final修饰的变量一旦被赋值之后,不可重新赋值
4.final修饰的实例变量必须手动赋值,不能采用默认赋值
5.final修饰的引用final修饰的引用,一旦指向某个对象之后,不能再指向其它对象,那么被指向的对象无法被垃圾回收器回收,final修饰的引用虽然指向某个对象之后不能再指向其它对象,但是所指向的对象内部的内存可以被修改的
6.fianl修饰的变量是不可变的,这种变量一般和static联合使用,被称为“常量”
常量的语法格式:
public static fianl 类型 常量名 = 值;
java规范中要求所有常量的名字全部大写,每个单词之间使用下划线连接
示例代码:
final class A {
}
class B //extends A
{
}
class C {
public final void eat(){
}
class D extends C{
/* public final void eat()
}*/
}
public class FinalTest01 {
public static void main(String[] args) {
//把字符串中的a替换成x
String newString = "asbhfdhafhhaajhfa".replaceAll("a", "x");
System.out.println(newString);
int a = 50;
System.out.println(a);
a = 60;
System.out.println(a);
final int k = 10;
//k = 20;
//编译错误:无法为最终k分配值
final int m;
m = 200;
//m = 300;
//编译错误:无法为最终变量m分配值
}
}
class FinalTest02 {
//成员变量之实例变量
//实例变量有默认值 + final修饰的变量一旦赋值不能重新赋值
//综合考虑,java语言最终规定使用final修饰之后,必须手动赋值,不能采用系统默认值
//final int i;编译错误
//第一种解决方案
final int i = 10;
//第二种解决方案
final int num;
public FinalTest02(){
this.num = 15;
}
//以上的两种解决方案:其实本质上就是一种方式,都是在构造方法执行过程当中给实例变量赋值
public static void main(String[] args) {
}
}
class FinalTest03 {
public static void main(String[] args) {
//创建用户对象
User u = new User(100);
//又创建了一个新的User对象
//程序执行到此处表示以上对象已变成垃圾数据,等待垃圾回收器的回收
u = new User(200);
//创建另一个用户对象
final User user = new User(300);
//user = new User(400);//final修饰的引用,一旦指向某个对象之后,不能再指向其它对象,
//那么被指向的对象无法被垃圾回收器回收
//final修饰的引用虽然指向某个对象之后不能再指向其它对象,但是所指向的对象内部的内存可以被修改的
System.out.println(user.id);
user.id = 100;
System.out.println(user.id);
}
}
class User {
int id;
public User(){
}
public User(int id){
super();
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
class FinalTest04 {
public static void main(String[] args) {
System.out.println(Chinese.Guoji);
System.out.println(Math.PI);
}
}
class Math{
public static final double PI = 3.1415926;
}
//中国人
class Chinese{
//国籍
//fianl修饰的变量是不可变的,这种变量一般和static联合使用,被称为“常量”
//常量的语法格式:
// public static fianl 类型 常量名 = 值;
//java规范中要求所有常量的名字全部大写,每个单词之间使用下划线连接
public static final String Guoji = "中国";
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/87649.html