一.JDK、JRE、JVM 之间的区别
JDK(Java SE Development Ki),Java 标准开发包,它提供了编译、运行 Jlva 程序所需的各种工
具和资源,包括 Java 编译 Java 运行时环境,以及常用的 Java 类库等
JRE(Java Runtime Environment),Java 运行环境,用于运行 Jlava 的字节码文件。RE 中包括了
VM 以及 NM 工作所需要的类库,普通用户而只需要安装 RE 来运行 lava 程序,而程序开发者必须
安装 JDK 来编译、调试程序。
JVM(Java Virtual Mechinal),Java 虚拟机,是 JRE 的一部分,它是整个 java 实现跨平台的最核
心的部分,负责运行字节码文件。
二.hashCode()与 equals()之间的关系
在 lawa 中,每个对象都可以调用自己的 hashCode)方法得到自己的哈希值(hashCode),相当于对
象的指纹信息,通常来说世界上没有完全相同的两个指纹,但是在 Java 中做不到这么绝对,但是我
们仍然可以利用 hashCode 来做一些提前的判断,比如: 在 Java 的一些集合类的实现中,在比较两
个对象是否相等时,会根据上面的原则,会先调用对象的 hashCodel)方法得到 hashcCode 进行比
较,如果 hashCode 不相同,就可以直接认为这两个对象不相同,如果 hashCode 相同,那么就会
进一步调用 equals0)方法进行比较。而 equals)方法,就是用来最终确定两个对象是不是相等的,通
常 equals 方法的实现会比较重,逻辑比较多,而 hashCodel)主要就是得到一个哈希值,实际上就
一个数字,相对而言比较轻,所以在比较两个对象时,通常都会先根据 hashCode 想比较一下。
三.面向对象和面向过程的区别
面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一
调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发
面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而
是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,
所以易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面向过程要低。
四.instanceof 关键字的作用
instanceof 严格来说是 Java 中的一个双目运算符,用来测试一个对象是否为一个类的实例。
五.Java 自动装箱与拆箱
装 箱 就 是 自 动 将 基 本 数 据 类 型 转 换 为 包 装 器 类 型 ( int–>Integer ) ; 调 用 方 法 : Integer 的
valueOf(int) 方法
拆箱就是自动将包装器类型转换为基本数据类型(Integer–>int)。调用方法:Integer 的 intValue
方法
六.重载和重写的区别
重写就是重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原
有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类
型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或
重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。
在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)
则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同
来判断重载。