自学内容网 自学内容网

Java面试题(每日更新)

每日五道!学会就去面试!

本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。

目录

1.概述

 2.Java 基础

2.1 JDK 和 JRE 有什么区别?

2.2  == 和 equals 的区别是什么?

2.3 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?

2.4 final 在 Java 中有什么作用?

 2.5 Java 中的 Math. round(-1.5) 等于多少?

2.6 String 属于基础的数据类型吗?

2.7 Java 中操作字符串都有哪些类?它们之间有什么区别?

2.8 String str="i"与 String str=new String("i")一样吗?

2.9 如何将字符串反转?

2.10 String 类的常用方法都有那些?


1.概述

每日更新,如果您觉得某道题目有错误,欢迎在评论区指出,非常感谢。

本文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、 Java
Web 、异常、网络、设计模式、 Spring/Spring MVC Spring Boot/Spring Cloud
Hibernate MyBatis RabbitMQ Kafka Zookeeper MySQL Redis JVM
如下图所示:

 2.Java 基础

2.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.2  == 和 equals 的区别是什么?

对于基本类型和引用类型 == 的作用效果是不同的:
  • 基本类型:比较的是值是否相同
  • 引用类型:比较的是引用是否相同
equals 解读:
equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。
总结
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它 变成了值比较,所以一般情况下 equals 比较的是值是否相等。

2.3 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?

不对,两个对象的 hashCode() 相同,equals() 不一定 true。
//代码示例:
String str1 = "通话";
String str2 = "重地";
System. out. println(String.format("str1:%d | str2%d",str1.hashCode(),str2.hashCode()));
System. out. println(str1. equals(str2));
//执行的结果:
//str1:1179395 | str2:1179395
//false
代码解读:
很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false, 因为在散列表中,hashCode() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一 定能得出键值对相等。

2.4 final 在 Java 中有什么作用?

  • final 修饰的类叫最终类,该类不能被继承。
  • final 修饰的方法不能被重写。
  • final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

 2.5 Java 中的 Math. round(-1.5) 等于多少?

等于 -1,因为在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整, 负 0.5 是直接舍弃。

2.6 String 属于基础的数据类型吗?

String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象。

2.7 Java 中操作字符串都有哪些类?它们之间有什么区别?

  • 操作字符串的类有:String、StringBuffer、StringBuilder
  • String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对 象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串 内容的情况下最好不要使用 String。
  • StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在 单线程环境下推荐使用 StringBuilder多线程环境下推荐使用 StringBuffer

2.8 String str="i"与 String str=new String("i")一样吗?

不一样,因为内存的分配方式不一样。String str="i"的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String("i") 则会被分到堆内存中。

2.9 如何将字符串反转?

使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。
示例代码:
// StringBuffer reverse
StringBuffer stringBuffer = new StringBuffer();
stringBuffer. append("abcdefg");
System. out. println(stringBuffer. reverse()); // gfedcba// StringBuilder
reverse
StringBuilder stringBuilder = new StringBuilder();
stringBuilder. append("abcdefg");
System. out. println(stringBuilder. reverse()); // gfedcba

2.10 String 类的常用方法都有那些?

  • indexOf():返回指定字符的索引。
  • charAt():返回指定索引处的字符。
  • replace():字符串替换。
  • trim():去除字符串两端空白。
  • split():分割字符串,返回一个分割后的字符串数组。
  • getBytes():返回字符串的 byte 类型数组。
  • length():返回字符串长度。
  • toLowerCase():将字符串转成小写字母。
  • toUpperCase():将字符串转成大写字符。
  • substring():截取字符串。
  • equals():字符串比较。

原文地址:https://blog.csdn.net/m0_65224643/article/details/140610560

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!