1.java语言基础(javase基础面试题总结系列)
对java基础面试题进行总结,将面试题分类型,分重点,以及提供了答题的思路
文章目录
1.java语言基础
1.java 语言有什么特点
- 简单
- 安全可靠
- 面向对象
- 支持多线程和 网络编程
2. java和c++区别
- java没有指针
- Java 有⾃动内存管理机制,不需要程序员⼿动释放⽆⽤内存
- Java 的类是单继承的,C++ ⽀持多重继承;虽然 Java 的类不可以多继承,但是接⼝可以多 继承。
答题思路:三点 指针 继承 垃圾回收
3. Oracle JDK 和 OpenJDK 的对⽐
-
在响应性和 JVM 性能⽅⾯,Oracle JDK 与 OpenJDK 相⽐提供了更好的性能;
-
Oracle JDK ⽐ OpenJDK 更稳定。
4. 关于 JVM JDK 和 JRE 最详细通俗的解答
-
JRE 是 Java 运⾏时环境。它是运⾏已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机 (JVM),Java 类库,java 命令和其他的⼀些基础构件。但是,它不能⽤于创建新程序。
-
JDK 是 Java Development Kit,它是功能⻬全的 Java SDK。它拥有 JRE 所拥有的⼀切,还有编 译器和⼯具。它能够创建和编译程序。
答题思路 : 四点
5. 八种数据类型字节大小
暂略 考到再总结
6. 自动拆箱自动装箱⭐️
- 自动拆箱:Integer->int 调用的实际上是a.intValue()
- 自动装箱:int -> Integer 调用的实际上是Integer.valueOf()
6.1 Integer在判断相等的时候要使用equals还是 == ?
Integer a= 100;
Integer b= 100;
Integer c= 200;
Integer d= 200;
System.out.println(a == b);
System.out.println(c == d);
true false
- 对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑, 推荐使用 equals 方法进行判断。
所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。 - 阿里巴巴手册
7.java中方法的参数传递机制⭐️
-
值传递 JAVA 编程语言只有值传递参数机制
-
如果参数是基本数据类型(包括对应的包装类型),那么参数传递时只是原始值的一份拷贝或者叫副本,对副本操作并不影响原始值;
-
如果参数是对象(引用类型,包括数组),那么参数传递时传递的是对象的地址的一份拷贝,所以对对象内部属性的操作会改变原始对象相应值,但是对该参数进行重新赋值并不会影响原始对象;
-
String类型作为参数进行传递时,传递的也是地址。但是String类比较特殊,对参数进行concat,replace,’+‘等操作时不影响原始的串,对参数重新赋值当然也不影响原始字符串。
答题思路 : 只有值传递机制 -> 简要介绍各个部分不同的传递情况 (3部分)
8. == 和equals 以及HashCode
8.1 == 和 equals 区别
-
== : 它的作⽤是判断两个对象的地址是不是相等。即,判断两个对象是不是同⼀个对象(基本数据 类型⽐较的是值,引⽤数据类型⽐较的是内存地址)。
-
equals() : 它的作⽤也是判断两个对象是否相等,是在object类内的。但它⼀般有两种使⽤情况:
情况 1:类没有覆盖 equals() ⽅法。则通过 equals() ⽐较该类的两个对象时,等价于通过 “==”⽐较这两个对象。 (源码得出)
情况 2:类覆盖了 equals() ⽅法(有String类,以及包装类)⼀般,我们都覆盖 equals() ⽅法来⽐较两个对象的内容是 否相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
8.2 hashCode的作用
**hashCode() 在散列表中才有用,在其它情况下没用。**在散列表中hashCode() 的作用是获取对象的散列码(根据对象的内存地址转化而来的),进而确定该对象在散列表中的位置。
8.3 hashCode() 和 equals() 的关系
- 两个对象hashCode相同,两个对象未必相等,可能是hash碰撞。equals相同,hashcode一定相同
- 如果equals被重写那么hashcode也要被重写(因为如果重写了equals,那么equals比较的就是内容,不是地址,那么就可能存在两个内容相同但是地址不同的对象,euqals判断相等,hashcode判断不同)为什么equals被重写hashcode也要被重写
答题思路:hashcode与equals关系 以及重写的问题
上一篇: 一天一道java算法面试题第1天
下一篇: java基础常见面试题系列,1-10