从java8开始,接口可以拥有默认的方法实现。
接口的成员(字段 + 方法)默认都是 public 的,并且不允许定义为 private 或者 protected。
一个类可以实现多个接口,但不能继承多个抽象类。
重写:指子类实现了一个与父类在方法声明上完全相同的一个方法。
限制:
1.子类方法的访问权限必须大于等于父类方法;
2.子类方法的返回类型必须是父类方法返回类型或为其子类型。
重载:指在同一个类中,一个方法与已经存在的方法名称相同,但是参数类型,个数,顺序至少有一个不同,而且有一点,返回值不同,其他相同,不算是重载。
equals()与==
对于基本类型,==判断两个值是否相等,基本类型没有equals()方法,对于引用类型,==判断两个变量是否引用同一个对象,而equals()判断引用的对象是否等价。
字符串String,由一个个字符char组成,String不是数组,但是char类型的数组,String不是基本类型,是引用类型,是类,是final类,不可继承,数组也是类。
除了四类八种基本类型,其他的都是对象,也就是引用类型,包括数组。
浅拷贝:对基本类型进行值传递,对引用类型进行引用传递般的拷贝(其中一个对象修改值,另一个会受到影响)。
深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容(其中一个对象修改值,另一个不会受到影响)。
java与C++的区别:
- java是纯粹的面向对象语言,所有的对象都继承java.lang.Object,C++为了兼容C即支持面向对象也支持面向过程。
- java通过虚拟机从而实现跨平台特性,但是C++依赖于特定的平台。
- java没有指针,它的引用可以理解为安全指针,而C++具有和C一样的指针。
- java支持自动垃圾回收,而C++需要手动回收。
- java不支持多重继承,只能通过实现多个接口来达到相同目的,而C++支持多重继承。
- java不支持操作符重载,虽然可以对两个String对象支持加法运算,但是这事语言内置支持的操作,不属于操作符重载,但C++可以。
- java的goto是保留字,但是不可用,C++可以使用goto。
- java不支持条件编程,C++通过#ifdef #ifndef等与处理命令实现条件编译。
java.lang.Cloneable 是一个标示性接口,不包含任何方法。
不能在没有强制类型转换的前提下将一个 double 值赋值给 long 类型的变量,因为 double 类型的范围比 long 类型更广,所以必须要进行强制转换。
从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法糖。内部实际在 switch 中使用的是字符串的 hashcode。
两个不想等的对象可能会有相同的hash code值,但是两个相同的对象肯定是有相同的hash code的。
final与finalize与finally的区别:
- final 是一个修饰符,可以修饰变量、方法和类。如果 final 修饰变量,意味着该变量的值在初始化后不能被改变。
- Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的,但是什么时候调用 finalize 没有保证。
- finally 是一个关键字,与 try 和 catch 一起用于异常的处理。finally 块一定会被执行,无论在 try 块中是否有发生异常。
近日总结:很难评......