hello uu们 感谢收看!!!!我最近听了一首歌《21》,真的很感慨,马上步入20的我也感觉时间真的飞快...望大家都能过上理想的生活,不负内心的所托...
正如人民日报所言,“请你努力,为了自己。”
一、Java基础
-
JDK 和 JRE 有什么区别?
- **JDK(Java Development Kit)**是开发工具包,包含了用于开发Java应用程序的工具,如编译器(javac)、调试器和JRE。它提供了开发Java应用所需的所有环境和工具。
- **JRE(Java Runtime Environment)**是Java运行环境,提供了运行Java程序所需的环境,包括JVM(Java Virtual Machine)、核心类库和其他支持文件。它不包括开发工具,因此不能用于开发应用。
-
== 和 equals 的区别是什么?
- **==**运算符用于比较对象的引用(内存地址),即判断两个对象是否是同一个对象。
- **equals()**方法用于比较对象的内容,判断两个对象的属性是否相等。在默认情况下,equals()方法与==相同,但可以在类中重写以实现内容比较。
-
两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
- 不一定。根据Java的规范,如果两个对象相等(即equals()返回true),则它们的hashCode()值必须相同。但是,两个不同的对象也可能产生相同的hashCode(哈希碰撞)。所以仅根据hashCode相同不能判断equals为true。
-
final 在 Java 中有什么作用?
- final关键字用于限制类、方法和变量。用法如下:
- 类:被final修饰的类不能被继承。
- 方法:被final修饰的方法不能被重写。
- 变量:被final修饰的变量一旦赋值后,不可改变。
- final关键字用于限制类、方法和变量。用法如下:
-
java 中的 Math.round(-1.5) 等于多少?
- Math.round(-1.5)等于-1。根据浮点数的舍入规则,负数会向上取整(趋向于零)。
-
String 属于基础的数据类型吗?
- 不属于。String是一个对象类型,属于Java中的引用数据类型。尽管String有时被称为基础类型,但它实际上是由java.lang.String类实现的。
-
java 中操作字符串都有哪些类?它们之间有什么区别?
- String:不可变的字符序列,一旦创建后不能被修改。
- StringBuilder:可变字符序列,线程不安全,适用于单线程环境下进行大量字符串拼接。
- StringBuffer:可变字符序列,线程安全,适用于多线程环境下的字符串操作。
-
String str="i"与 String str=new String("i")一样吗?
- 不一样。
String str = "i";
是字符串常量池中的引用,而String str = new String("i");
创建了一个新的String对象,不会复用常量池中的字符串。因此,常量池中的"i"
和new String("i")
内存地址不同。
- 不一样。
-
如何将字符串反转?
- 可以使用
StringBuilder
的reverse()方法:String reversed = new StringBuilder(original).reverse().toString();
- 可以使用
-
String 类的常用方法都有那些?
- 常用方法包括:
length()
charAt(int index)
substring(int beginIndex, int endIndex)
indexOf(String str)
toLowerCase()/toUpperCase()
trim()
replace()
split(String regex)
contains(CharSequence sequence)
- 常用方法包括:
-
抽象类必须要有抽象方法吗?
- 不必须。抽象类可以没有抽象方法,但它不能被实例化。
-
普通类和抽象类有哪些区别?
- 普通类可以被实例化,抽象类不能。
- 抽象类可以包含抽象方法,普通类不能。
- 抽象类可以有构造函数,普通类也可以;但抽象类的构造函数只用于子类。
-
抽象类能使用 final 修饰吗?
- 可以。使用final修饰的抽象类不能被继承。
-
接口和抽象类有什么区别?
- 接口只能包含抽象方法(Java 8及以后的版本可以有默认方法和静态方法),而抽象类可以有方法的具体实现。
- 接口支持多重继承,一个类可以实现多个接口;而一个类只能继承一个抽象类。
- 接口中的变量默认是
public static final
,而抽象类的变量可以有不同的访问修饰符。
-
java 中 IO 流分为几种?
- IO流主要分为两大类:
- 字节流:用于处理二进制数据,如InputStream和OutputStream。
- 字符流:用于处理字符数据,如Reader和Writer。
- IO流主要分为两大类:
-
BIO、NIO、AIO 有什么区别?
- BIO(Blocking I/O):传统的阻塞I/O方式,每个请求都需要一个线程,适合小量并发的场景。
- NIO(Non-blocking I/O):非阻塞I/O,支持多路复用;通过选择器(Selector)实现,它允许单线程处理多个客户端的连接,适合大并发的场景。
- AIO(Asynchronous I/O):异步I/O,允许操作在后台进行,不会阻塞主线程;通过回调机制可以实现更高的并发性能。
-
Files的常用方法都有哪些?
Files.readAllLines(Path path)
:将文件全部读取为一行的列表。Files.write(Path path, Iterable<? extends CharSequence> lines)
:写入文本内容。Files.copy(Path source, Path target)
:复制文件。Files.delete(Path path)
:删除文件。Files.exists(Path path)
:检查文件是否存在。Files.createFile(Path path)
:创建新文件。Files.move(Path source, Path target)
:移动或重命名文件。