《Head First Java》20201003读书笔记

P281-P

《Head First Java》20201003读书笔记

静态变量的起始动作

静态变量会在该类的任何静态方法执行之前就初始化。
静态项目的初始化有两项保证:
静态变量会在该类的任何对象创建之前就完成初始化。
静态变量会在该类的任何静态方法执行之前就初始化。

class Player{
	static int playerCount = 0;//playCount会在载入类的时候被初始化为0
	private String name;
	public Player(String n){
		name = n;
		playerCount++;
	}
}

像是long或short等primitive主数据类型整数的默认值是0,primitive主数据类型的浮点数默认值是0.0,boolean是false,对象引用时null。

public class PlayerTestDrive{
	public static void main(String[] args){
		System.out.println(Player.playercount);
		Player one = new Player("Tiger Woods");
		System.out.println(Player.playerCount);//静态变量也是通过类的名称来存取
	}
}

如果你没有给静态变量赋值,它就会被设定默认值。
int会被设定为0。
静态变量的默认值会是该变量类型的默认值,就像实例变量所被赋予的默认值一样。

静态的final变量是常数
一个被标记为final的变量代表它一旦被初始化之后就不会改动。
也就是说,类被加载之后静态final变量就一直会维持原值。
以Math.PI为例:
public static final double PI = 3.141592653589793;
此变量被标记为public,因此可供各方读取。
此变量被标记为static,所以你不需要Math的实例。
此变量被标记为final,因为圆周率是不变的。
此外没有别的方法可以识别为不变的常数(constant),但有命名惯例(naming convention)可以帮助你认出来。
常数变量的名称应该要都是大写字母!

静态final变量的初始化:

  1. 声明的时候:
public class Foo{
	public static final int FOO_X = 25;//注意这个命名惯例——应该都是大写的,并以下划线字符分隔
}
  1. 在静态初始化程序中:
public class Bar{
	public static final double BAR_SIGN;
	static{//这段程序会在类被加载时执行
		BAR_SIGN = (double)Math.random();
	}
}

final不只用在静态变量上

也可以用final关键字来修饰非静态的变量,这包括了实例变量,局部变量或方法的参数。
不管哪一种,这都代表它的值不能变动。
但你也可以用final来防止方法的覆盖或创建子类。
final的变量代表你不能改变它的值。
final的method代表你不能覆盖掉该method。
final的类代表你不能继承该类(也就是创建它的子类)。

  • 静态的方法应该用类的名称来调用,而不是用对象引用变量。
  • 静态的方法可以直接调用而不需要堆上的实例。
  • 静态的方法是一个非常实用的方法,它不需要特别的实例变量值。
  • 静态的方法不能存取非静态的方法。
  • 如果类只有静态的方法,你可以将构造函数标记为private的以避免被初始化。
  • 静态变量为该变量所属类的成员所共享。静态变量只会有一份,而不是每个实例都有自己的一份。
  • 静态方法可以存取静态变量。
  • 在Java中的常量是把变量同时标记为static和final的。
  • final的静态变量值必须在声明或静态初始化程序中赋值:
    static{
    DOG_CODE = 420;
    }
  • 常量的命名惯例是全部使用大写字母。
  • final值一旦被赋值就不能更改。
  • final的方法不能被覆盖。
  • final的类不能被继承。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值