final关键字

final关键字

  • final是一个关键字,表示最终的、不可变的
  • final修饰的类无法被继承,不能当父类【结扎】
  • final修饰的方法无法被覆盖
  • final修饰的变量一旦赋值之后,不可重新赋值
  • final修饰的实例变量,必须手动赋值,不能系统自动赋值。手动赋值:final int a = 1;或者在缺省构造方法进行赋值。——见例一
  • final修饰的引用,一旦指向某个对象,不再指向其他对象,那么被指向的对象无法被垃圾回收器回收。但是所指向的对象的属性是可以修改的。——见例二
  • 成员变量——常量的语法格式:public static final 类型 常量名 = 值;//静态不可修改的值。
    java规则所有常量名字全部大写,每个单词之间使用下划线

例题一

package day01.keywordfinal;

public class FinalTest01 {
	//成员变量-实例变量
	//final int s;	//运行错误实例变量有默认值,final修饰的变量一旦赋值不能重新赋值
	//综合考虑,java规定实例变量使用final修饰之后,必须手动赋值,不能采用系统默认值
	//解决方法1
	final int a = 1;
	//解决方法2
	final int num ;
	public FinalTest01() {		//构造方法
		this.num=22;			//缺省构造方法修改默认值
	}
	
	
	public static void main(String[] args) {

		int i = 10;
		i = 20;
		final int j =30;
		//j= 40;   //不可二次赋值
	}
}

例题二

package day01.keywordfinal;
public class User {
	private int id;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public User(int id) {
		super();
		this.id = id;
	}
	public User() {
		super();
	}
}
package day01.keywordfinal;

public class UserTest {
	public static void main(String[] args) {
		//创建用户对象
		User u = new User(100);  //User u = 0x1234
		u= new User(200);		//User u =0x5678
		//程序执行到此,表示User(100)已经变成了垃圾数据,等待垃圾回收器的回收
		
		final User s = new User(10);
		//s = new User(20);			//编译错误 final修饰的引用,一旦指向某个对象,不再指向其他对象
													//那么被指向的对象无法被垃圾回收器回收
		s.setId(50);		//没有错误
		
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值