java中的final关键字

1.1 final关键字的作用

1、用于修饰类,final修饰的类的不能被继承
2、用于修饰方法,final修饰的方法不能被重写
3、f用于修饰变量,final修饰的变量不能二次赋值

1.2 final关键字的使用

修饰类

在这里插入图片描述
在这里插入图片描述
API中有很多final修饰的类如String 、 Math 、 Scanner等,目的就是供我们使用,而不让我们所以改变其内容。
注意:final关键字不能与abstract连用,,final修饰的方法和类都是不能被改变,abstract修饰的方法和类需要被重写,两者冲突

修饰方法

格式:

父修饰符 final 返回值类型 方法名(参数列表){
	//方法体
}

重写被 final 修饰的方法,编译时会报错

修饰变量

1、局部变量(基本数据类型)

基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改

public static void main(String[] args) {
	// 声明变量,使用final修饰
	final int a;
	// 第一次赋值
	a = 10;
	// 第二次赋值
	a = 20; // 报错,不可重新赋值
	// 声明变量,直接赋值,使用final修饰
	final int b = 10;
	// 第二次赋值
	b = 20; // 报错,不可重新赋值
}
     

2、局部变量(引用数据类型)

引用类型的局部变量,被final修饰后,地址不能再更改,不能指向其他对象。但是它指向的对象的内容是可变的。

public static void main(String[] args) {
	// 创建 User 对象
	final User u = new User();
	// 创建 另一个 User对象
	u = new User(); // 报错,指向了新的对象,地址值改变。
	// 调用setName方法
	u.setName("张三"); // 可以修改
}

3、成员变量(引用数据类型)

由于成员变量都有默认值,所以在使用final关键字修饰成员变量时要赋值,否则使用成员变量的默认值且不能更改是没有意义的。成员变量的初始化方式有两种,要么直接赋值,要么是用构造方法赋值,不能有set方法。

/**
 * 1、直接赋值
 */
public class User {
	final String USERNAME = "张三";
}
/**
 * 2、构造方法赋值
 */
public class User {
	final String USERNAME;
	public User(String username) {
		this.USERNAME = username;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值