Java——final关键字

/**
 *     关于Java语言当中final关键字:
 *         1、final是一个关键字,直译"最终的",表示不可变的。
 *         2、final修饰的类无法被继承
 *         3、final修饰的方法无法被覆盖
 *         4、final修饰的变量一旦赋值之后,不可重新赋值
 *         5、final修饰的实例变量必须手动赋值,不能采用系统默认值
 *         6、final修饰的引用一旦指向某个对象了,不能指向其它的对象,那么被指向的对象无法被垃圾回收器回收。
 *            final修饰的引用虽然指向某个对象之后不能在指向其他对象,但所指对象的内容是可以别修改的
 *         7、final修饰的实例变量,一般和static联合使用被称为“常量”。
 */


String.class也被final修饰,不能被别的子类继承

(以下编译错误)

public final class String


class MyString extends String {
	//编译报错,不能继承String

}

可理解为final修饰的变量成为了一种“常量”,这种常量本身不可被修改;

int i = 100;
		System.out.println(i);
		i = 200;
		System.out.println(i);
		
		final double pai = 3.1415926;
		System.out.println(pai);
		//pai = 3.14;编译错误

针对类体中成员变量之实例变量: 

public class FinalTest02 {
	
	//成员变量之实例变量
	//实例变量有默认值 + final修饰的变量一旦赋值不能重新赋值
	//综合考虑,Java语言最终规定实例变量使用final修饰hou,必须手动赋值,不能采用系统默认值
	
    //final int age;编译错误
	

	}
}

成员变量之实例变量
实例变量有默认值 + final修饰的变量一旦赋值不能重新赋值
综合考虑,Java语言最终规定实例变量使用final修饰hou,必须手动赋值,不能采用系统默认值

解决方案:

	//第一种解决方法
	final int age = 10;
	
	//第二种解决方法
	final int num;
	
	public FinalTest02() {
		this.num = 200;    
    }

以上两种解决方案其实本质上都一样,都是手动赋值

final修饰的引用

        //创建对象
		User u = new User(100);	//User u = 0x1234;
		
		//又创建了一个新的User对象
		//程序执行到此处表示以上对象已变成垃圾数据,等待垃圾回收器的回收。
		u = new User(200);		//u = 0x5678;
		
		//创建对象
		final User user = new User(30);
		//user = new User(50);	编译错误
		//final修饰的对象,一旦指向某个对象了,不能指向其它的对象,那么被指向的对象无法被垃圾回收器回收。

【注】:final修饰的引用虽然指向某个对象之后不能在指向其他对象,但所指对象的内容是可以别修改的
        以下程序合法:

        user.id = 50;
		//final修饰的引用虽然指向某个对象之后不能在指向其他对象,但所指对象的内容是可以别修改的
		

final常量:

 final修饰的实例变量是不可变的,这周变量一般和static联合使用,被称为“常量”

常量定义的语法格式:

public static final 类型 常量名 = 值;

Java规范中要求所有常量的名字全部大写,每个单词之前使用下划线链接。 

class Math{

	public static final double PI = 3.1415926;
	
}

class Chinese {
	
	//国籍 (防止国籍被修改)
	public static final String GUO_JI = "中国";
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值