构造器
即C++中的构造函数。
- !!: java中的构造器总是伴随着new操作符一起使用
另一种获取类实例的方法:静态工厂方法
【相关知识点:单例】【多了一层“皮囊”用处挺大】
————————————————————————————
var声明方法中的局部变量
在java10中(其他版本还没测),如果可以从变量的初始赋值来推导出它们的类型,则可以使用var关键字来声明局部变量而无需指定类型
Employee Harry = new ("Harry Hacker",50000,1989,10,1);
|
V
var Harry = new ("Harry Hacker",50000,1989,10,1);
- 一般不在数值类型使用时用var,以分辨其精确度
————————————————————————————
NULL引用
在前面的笔记中学习了java的NULL字段。与C++的赋值不同,java的
null就是表示“空”的含义,所以对一个null值调用一个方法是一种很不好的行为,这样做会返回一个NullPointerException异常。
- 正常情况下,除非非常需要,程序一般不会捕获这些异常,而是寄期待于程序员不要带来这些异常。
- "宽容型"方法:
将null参数转换为一个适当的非null值
if(n==null)name = “unknown”
else name = n;
java9中提供的便利方法,用以实现以上语句类似功能
name = Objects.requireNonNull(n,"unknown");
- "严格型"方法:
直接拒绝null参数:
name = Objects.requireNonNull(n,"The name cannot be null");
一般用在构造器中,假如录入了一个null值,则会返回异常,此时上述语句可以更好的描述异常的情况。
————————————————————————————
隐式参数与显式参数
显式参数就是显于参数列表的那些传值
隐式参数其实有点像C++中的类::
它一般是这个方法的调用者,或者目标,叫法不同,其实一样
(this关键字所指代的就是隐式参数)
- java中this是隐式指代自己关键字,与C++中的this指针不一样,调用方法的时候直接用点而非箭头
- 有些程序员更喜欢用this指代实例字段的同名变量以便于与局部变量区分
————————————————————————————
封装小点
尽量不要写返回一个可变对象引用的访问器方法,比如返回一个Date对象,对象中有着更改器方法
这样的结果是破坏了封装性!
如果真的有此类需要,请对此对象引用的克隆,此克隆是在另一个储存位置上的副本。有关对象克隆的知识将在后续学习
————————————————————————————
传参
在java中,总是采用按值调用,所有的传值参数都只是传进去了一个副本!
但是这个副本虽然会被丢弃,在方法中调用它的修改器方法,就能够对原始对象的数据进行合适的操作啦!
————————————————————————————
类
java是可以在类声明中对类里面的字段初始化赋值的
class{
private String name =“”
}
初始化值不一定是常量值,甚至可以使用方法的返回值来对其赋值
————————————————————————————
this特殊用法:调用另一个构造器
如果构造器(a,b)第一个语句形如this(c,d);这样就会在构造开始时先调用同一个类的另一个构造器:
public Employee(double s){
this(“Employee#”+nextId ,s);
nextId++;
}
没记错的话C++中并不可以这么玩儿
————————————————————————————
初始化块
初始化数据字段的方法:
- 在构造器中设置值
- 在声明中赋值
- 初始化块
这是个啥玩意?
在一个类的声明中,可以包含很多的{ 块},在构造器即将启用前,会先调用这些个代码块,在运行后再执行构造器主体部分
这种功能不常见。
可以在初始化块中设置字段尽管它在此类后面才被定义,但是为了避免循环定义,不允许读取在后面初始化的字段,事实上建议总是把初始化块放在字段定义之后!如果静态字段需要非常复杂的初始化代码,可以使用静态的初始化块 static{块}
构造函数调用顺序
- 判断是否在第一行调用另一个构造器并执行
- 所有字段初始化为默认值
- 按照类中出现的顺序性,执行所有的初始化方法和初始化块。
- 执行构造器主体
—————————————————————————
析构器
java不支持析构器,它本身有着和很好的垃圾回收机制
但是如果用了内存外的其他资源,需要提供一个close()完成必要的清理。在后面会有学习
不要使用finalize方法清理,这个方法已经被废弃
————————————————————————————
JAR文件
核心技术I p140,强烈建议没事去看看加深印象。
p148开始的各种注释规范同理