在类中定义实例常量,它是属于对象,有三种初始化方式:
1、 直接赋值
2、 构造器中初始化
3、 实例代码中初始化
无论哪种方式,只能初始化一次;
静态常量;用static关键字修饰的常量,称为静态常量;
静态常量的初始化方式:
1、 直接赋值;
2、 静态代码块:用static关键修改的代码块{ }
思考一个问题,静态常量能否在构造器中赋值?不能赋值!为什么?
因为静态成员是属于类的,为所有对象所共有,而又不依赖于任何一个对象,即与单个对象无关。既然与对象无关,而构造器是用来构造对象的,所以在静态数据初始化的时候还没有调用构造方法;
静态代码块、实例代码块、构造三者的调用顺序为:
静态代码块 > 实例代码块 > 构造器
静态代码的作用:
块中的代码在类被载入到内存中时,静态代码块中的代码就会执行;、
在Java的单个类中,共有哪些成员:
1、 实例字段和静态字段
2、 实例方法和静态方法
3、 可以重载的构造器
4、 toString()
5、 equals()和hasCode方法
6、 只在类中使用的方法,访问为私有
7、 setter和getter
8、 实例常量字段,静态常量字段
9、 实例代码块
10、 静态代码块
11、 this,在类中可以用this来进行方法之间的互相调用
关于访问级别问题:
如果一个方法的可见范围为整个项目,则方法为必须为公有,且所在类也必须为公有,例如工具类;
如果一个类能够在项目中可见,而方法在包中可见,则类为公有,方法为默认访问,保护性访问均可;
如果一个成员的访问级别为私有,则只能在类中被访问,为类访问级别;
另外注意:
设计的顶层类不能为私有,因为如果一个顶层类设计为私有,那么没有任何途径能够访问这个类,此类的设计没有任何意义。
对于引用变量n1,它既可以通过这个引用对它指向的对象内容进行修改,也可以用这个引用指向新的对象;
引用变量用final关键字修饰,表示这个引用是不变的,即只能用来表示一个对象的地址,地址不可变,不能指向其他对象;
但可以使用这个引用来对它指向的对象内容进行修改;
如果要使引用既不能指向其他的对象,也不能通过引用对对象内容进行修改,需要从两个方面进行final的修饰;既修饰对象,也修饰字段;
一个合格的工具类需要符合哪些条件:
1、 所有的方法都必须是公有的和静态的:保证用类名调用;
2、 不能构造对象(在类中,提供一个私有的构造器):类外不能创建实例;
3、 类不能被继承(类用final修饰)
4、 所有的字段都必须是公有的、静态的和final的;