一、接口和抽象类
接口与抽象类在具体含义上有很大的不同,抽象类更注重其是什么及其本质;
而接口则不是,接口更注重其具有什么样的功能及其能充当什么样的角色。
一个是看待物体的本质。另一个则是看待物体可以充当的角色。也就是说基于接口的耦合比基于抽象类耦合的选择性、灵活性更大。
在实际开发中,应该尽量使用接口来进行调用,这样可以给系统未来的扩展留下更多的机会。
二、变长参数
变长参数的本质还是一个数组,只是给方法的调用者提供了方便,调用时由java系统自动将数据组织成数组,对于方法的开发者而言在使用上是一样的。
三、时间类
用来表示时间点信息的Date类。用来表示人们所熟悉的阳历表示法的GregorianCalendar类
四、面向对象中类之间存在以下几种常见的关系
USES-A、HAS-A、IS-A
五、继承
只有当需要向自己的新类中添加新的操作,并且把已存在类的缺省行为融合进自己的新类中时,才需要继承已存在的类。
成员变量能否被继承,完全取决于其对应的访问限制。
没有继承就没有重写:类继承、方法继承、成员变量继承。
六、
在运行时,对于成员变量的访问,系统认的是引用类型,引用是什么类型的,系统就访问谁的成员。
对象引用所能调用的成员的规则为,引用只能调用其所在的类具有的成员,不能调用子类特有的成员,这点对于成员变量和方法是一样的。
七、
要特别注意方法的调用按对象的类型,无论使用什么类型的引用,其调用的都是具体对象所在类中定义的方法。
这与成员变量不同,成员变量按引用的类型,前面已经介绍过。
八、
隐藏是根据引用的类型来进行调用,重写是根据对象的类型来进行调用的。
九、
几个特殊的情况可能会中断finally语句的执行:
finally语句块里面本身产生异常
执行finally语句块的线程死亡
finally语句中执行system.exit(0);方法
计算机掉电
即使在try或catch语句中有return语句执行,在离开前也要执行finally语句块。
十、
object类------>throwable类
Error类---------------------------未捕获异常
exception类
runtimeexception类----------------------------------未捕获异常
捕获异常-------------------------------------------------必须处理的异常
十一、
Java中专门提供了用来进行不限制大小的整数计算的类-----------java.math.BigInteger.
使用BigDecimal类进行浮点数的精确计算。
十二、
JVM运行的时候,将内存分为两个部分,一部分是堆,一部分是栈。
堆中存放的是创建的对象,而栈中存放的则是方法调用过程中的局部变量或引用。
而设计Java字符串对象内存实现的时候,在堆中又开辟了一块很小的内存,称之为字符串常量池,专门用来存放特定的字符串对象。