1. JDK 和 JRE 有什么区别?
JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
2. 为什么java中没有全局变量?
java中是没有真正的全局变量的,因为一个java程序其实就是由多个类方法堆积起来的,而每个类、方法中的变量实际上都是属于它 自己的“全局变量”,相对于其他类、方法来说这些变量就成了局部变量。
3. == 和 equals 的区别是什么?
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用地址;
equals 默认情况下是引用地址比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较。
4. 重写(overwrite) 和 重载(overload)的区别?
重载:
发生在同一个类中
相同的方法名
参数列表不同
不看返回值,如果出现了只有返回值不同的“重载”,是错的。
重写:
发生在子类与父类中
相同的方法名
相同的参数列表
返回值相同 或者 子类方法的返回值是父类方法返回值类型的子类
访问修饰符相同 或者 子类方法的修饰符范围 大于 父类
抛出的异常相同 或者 子类方法抛出的异常 小于父类
5. 两个对象的hashCode() 相同,则equals()也一定为true,对吗?
不对,两个对象的hashCode()相同,equals()不一定 true。
String“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。
标签:面试题,Java,相同,子类,equals,第二天,返回值,方法 From: https://blog.51cto.com/kongxiaolong/8185249