再来理解java的static final

本文探讨了Java中如何实现常量,由于Java没有const关键字,可以通过使用static final修饰符结合不可变对象来达到类似效果。文章通过示例代码展示了如何正确地创建不可更改的常量,并讨论了对象内容不可变性的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java中没有const关键字,那么怎么实现常量呢?

会想到static final来修饰变量,让这个变量"变成"常量。

那么看下面的代码:

package a;

public class MM {
	static final Stu s = new Stu();

	public static void main(String[] ss) {
		s.age = 4;
		s.name = "test";
		s = new Stu();// 这里会报错
	}
}

class Stu {
	int age;
	String name;
}

 

这段代码在标记的地方会出错。

其实final关键字的作用仅仅是让这个变量不能再被赋予其他的值【意思是说这个引用不能再引用其他对象】。

上面代码并不能保证s对象内容不变。其实是可以给age和name赋值的。

下面这段代码说明了问题:

package a;

public class MM {
	static final Stu s = new Stu();

	public static void main(String[] ss) {

		final Stu stu;
		stu = new Stu();
		stu = new Stu();//这里会报错,因为stu前面已经被assign过了,不能再次被assign了
	}
}

class Stu {
	int age;
	String name;
}


其实java程序猿可以自己写代码来实现const关键字的。比如把类的字段都声明为private,然后只提供get方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值