184页习题18

这篇博客探讨了Java中static final字段和final字段之间的差异。通过创建一个包含这两种字段的类,作者展示了final字段的值在实例化时被初始化且不可更改,而static final字段则在类加载时初始化,其值在整个程序中保持唯一且不可变。通过多个实例的输出,强调了static final字段的“唯一且不可变”的特性。
摘要由CSDN通过智能技术生成
/**
 * 创建一个类, 里面包含一个static final field和一个final field, 比较异同.
 * (Exercise 18: (2) Create a class with a static final field and a final field 
 * and demonstrate the difference between the two.)
 * 回答: 区别在于final是"不能改变", 而static final是"唯一, 而且不能改变"
 */

package reusing;

import java.util.Random;

class FinalAndStaticF{
	private static Random rand=new Random(28);
	final int i=rand.nextInt(10);
	static final int J=rand.nextInt(10);
}

public class P184E18 {
	public static void main(String[] args){
		FinalAndStaticF fas1=new FinalAndStaticF();
		System.out.println("第一次access i 和 J");
		//! fas1.i++; i是final, 是不能改变的
		//! fas1.J++; J是final, 是不能改变的
		System.out.print("i="+fas1.i+"; ");
		System.out.print("J="+fas1.J);
		System.out.println();
		FinalAndStaticF fas2=new FinalAndStaticF();
		System.out.println("第二次access i 和 J");
		System.out.print("i="+fas2.i+"; ");
		System.out.print("J="+fas2.J);
		System.out.println();
		FinalAndStaticF fas3=new FinalAndStaticF();
		System.out.println("第三次access i 和 J");
		System.out.print("i="+fas3.i+"; ");
		System.out.print("J="+fas3.J);
		//连续三次, J都是同样一个值, 所以static final的意思是"唯一而为不可改变的".
		//这也是compiler推荐使用 FinalAndStaticF.J方式访问J的原因, J是class field
		//而i的三个值不一样
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值