欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1.java语言基础(javase基础面试题总结系列)

程序员文章站 2022-05-06 18:48:21
...

对java基础面试题进行总结,将面试题分类型,分重点,以及提供了答题的思路

1.java语言基础

1.java 语言有什么特点

  • 简单
  • 安全可靠
  • 面向对象
  • 支持多线程和 网络编程

2. java和c++区别

  • java没有指针
  • Java 有⾃动内存管理机制,不需要程序员⼿动释放⽆⽤内存
  • Java 的类是单继承的,C++ ⽀持多重继承;虽然 Java 的类不可以多继承,但是接⼝可以多 继承。

答题思路:三点 指针 继承 垃圾回收

3. Oracle JDK 和 OpenJDK 的对⽐

  1. 在响应性和 JVM 性能⽅⾯,Oracle JDK 与 OpenJDK 相⽐提供了更好的性能;

  2. 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关系 以及重写的问题