
Java基础面试题
Java基础面试题
复活的夜神月
这个作者很懒,什么都没留下…
展开
-
抽象类能使用 final 修饰吗?
抽象类不能使用 final 修饰符,因为这两者的设计目的是相互矛盾的。抽象类是为了被继承和实现而存在的,使用 final 修饰符就不能被继承了。而 final 类则是为了不被继承而存在的。因此,如果一个类被声明为抽象类,就表明它是被设计成可以被其他类继承和实现的,不能使用 final 修饰符。原创 2023-06-27 22:20:53 · 1137 阅读 · 0 评论 -
BIO、NIO、AIO 有什么区别?
在AIO模型中,当发起一个IO操作后,线程不会等待,而是继续执行其他操作,当IO操作完成后,该线程会收到通知,从而可以回来处理IO操作的结果。NIO则相较于BIO在高并发场景下优势较大,但对于同步的非阻塞IO模型,程序的实现和编写难度会较高,且代码复杂。1. BIO(Blocking IO):BIO是传统的同步阻塞IO,即客户端发起请求,服务器必须开一个线程接收请求,并开启一个线程进行处理,直到处理完毕后再通过一个线程返回结果。当有数据可读写时,才会去执行相应的IO操作,从而减少了线程的开销和资源的浪费。原创 2023-05-25 21:33:46 · 503 阅读 · 0 评论 -
接口和抽象类有什么区别?
抽象类中可以包含成员变量和具体实现的方法,而接口中只能包含方法的声明。3. 实现要求:当一个类实现一个接口时,必须实现接口中所有的方法,否则必须将该类也声明为抽象类。6. 访问权限:抽象类中的抽象方法可以使用protected或public访问修饰符来进行修饰,而接口中的方法只能使用public访问修饰符。1. 实现方式:抽象类是一种普通类,可以包含具体和抽象的方法的实现,而接口只能包含方法的声明,没有方法的实现。5. 成员变量:抽象类可以有成员变量,而接口不能有实例变量,只能有静态常量。原创 2023-05-25 21:29:04 · 284 阅读 · 0 评论 -
Java 中 IO 流分为几种?
常用的字节流有FileInputStream和FileOutputStream用于文件的读写,ByteArrayInputStream和ByteArrayOutputStream用于内存的数据读写,其他如BufferedInputStream等字节缓冲流则用于提高读写效率。常用的字符流有FileReader和FileWriter用于文件的读写,CharArrayReader和CharArrayWriter用于内存的数据读写,其他如BufferedReader等字符缓冲流则用于提高读写效率。原创 2023-05-25 21:30:09 · 1833 阅读 · 0 评论 -
Files的常用方法都有哪些?
9. newBufferedWriter(Path path, Charset cs, OpenOption... options):将文本数据写入指定文件并返回一个BufferedWriter对象。6. copy(Path source, Path target, CopyOption... options):将源文件复制到目标文件或目录。7. move(Path source, Path target, CopyOption... options):将源文件移动到目标文件或目录。原创 2023-05-25 21:35:50 · 628 阅读 · 0 评论 -
String 类的常用方法都有那些?
4. `substring(int beginIndex,int endIndex)`:获取字符串的子串,从beginIndex开始(包含)到 endIndex 结束(不包含)位置的字符串。12. `replaceAll(String regex,String replacement)`:将字符串中满足正则表达式的子串替换为新字符串。13. `split(String regex)`:根据指定的分隔符分割字符串成一个字符串数组。10. `trim()`:去除字符串首尾的空白字符,返回一个新字符串。原创 2023-05-24 14:29:00 · 118 阅读 · 1 评论 -
String 属于基础的数据类型吗?
而 String 类型属于引用类型,它表示一系列字符组成的字符串。在Java中,除了基础数据类型外,其他所有类型都是引用类型。这些类型的变量实际上存储的是一个指向对象的引用,而不是对象本身。在 Java 中,基础的数据类型包括 byte、short、int、long、float、double、char、boolean。因此,如果我们声明一个 String 变量时,实际上该变量是存储一个指向 String 对象的引用,这个引用指向的是在内存中的 String 对象。原创 2023-05-24 13:51:30 · 530 阅读 · 0 评论 -
如何将字符串反转?
在 Java 中,我们可以使用StringBuilder或StringBuffer来反转字符串,也可以使用字符串的toCharArray()方法将字符串转换为字符数组,然后对字符数组进行操作。以上三种方法的输出结果都是:"!dlrow ,olleH",即将原字符串反转得到的新字符串。原创 2023-05-24 14:17:50 · 829 阅读 · 0 评论 -
final 在 Java 中有什么作用?
final 可以用来修饰变量,表示该变量的值不可被改变。final 可以用来修饰类,表示该类不可被继承。这样一来,子类就无法复用父类的方法和属性,而只能通过组合或代理的方式来使用父类的功能。final 可以用来修饰方法,表示该方法不可被子类覆盖或重写。这样一来,子类就无法改变该方法的行为,从而保证了程序的稳定性和安全性。final 还可以用来修饰方法中的参数,表示该参数在方法内部不可被修改。总之,final 关键字可以用来告诉编译器一些有用的信息,从而提高了程序的可读性、健壮性和性能。原创 2023-05-24 13:47:11 · 1369 阅读 · 1 评论 -
两个对象的 hashCode() 相同, 那么 equals() 也一定为 true吗?
当两个对象的hashCode相同时,它们在散列表中的位置可能会相同,但是在Java中,hashCode并不是唯一对应一个对象的,可能存在多个对象hashCode相同的情况,因此,hashCode相同的两个对象不一定相等。在这种情况下,如果我们没有重写equals方法,那么调用equals方法时,它将会默认比较对象的地址,而不是内容。hashCode的本质是随机数根据一定的算法转换后得到的一个整数,通过hashCode方法可以返回该对象的散列码。equals是用来判断两个对象是否相等的方法。原创 2023-05-24 13:41:19 · 583 阅读 · 0 评论 -
String str=“i“与 String str=new String(“i“)一样吗?
这种字面量的方式去创建字符串,因为它可以被视作一个常量,能够赋值给其他字符串对象和变量,还能够被 JVM 优化,从而提高代码的效率和性能。` 则是在堆上通过构造函数 new 一个新的 String 对象,这个新对象会在堆上分配一个新的内存地址。因此,虽然其表示的字符串内容与 "i" 相同,但最终生成的对象地址不同于常量池中的 "i" 对象。` 是一种简单的字符串字面量的创建方式,它使用字符串常量池中已经存在的 "i" 字符串,在内存中只创建了一个缓存字符串对象。原创 2023-05-24 14:00:13 · 819 阅读 · 1 评论 -
Java 中操作字符串都有哪些类?它们之间有什么区别?
但在多线程环境下,由于StringBuffer线程安全,因此StringBuilder可能会出现线程安全问题,此时应该使用StringBuffer。String类是Java的核心类之一,它表示一个不可变的字符串,一旦创建就无法改变其值。StringBuilder 是线程不安全的,适合在单线程中使用。StringBuffer类与StringBuilder类非常类似,也是一个可变的字符串类。不同的是,StringBuffer类的所有公共方法都是同步的,也就是线程安全的,适合在多线程并发访问时使用。原创 2023-05-24 13:57:23 · 592 阅读 · 1 评论 -
== 和 equals 的区别是什么?== 解读
在Java中,"=="比较的是对象的引用地址,而"equals"比较的是对象的属性或内容。因此,如果两个对象引用的是同一个对象,则"=="返回true。而如果两个对象的属性或内容相同,则它们的"equals"方法返回true。一般来说,"=="比较的是两个变量的值是否相等,而"equals"比较的是两个对象的值是否相等。"=="比较的是值的对应关系,而"equals"比较的是值的内容。在总体上,"=="用于基本数据类型的比较和对象引用相等的比较,而"equals"则用于对象内容的比较。原创 2023-05-24 13:36:32 · 104 阅读 · 0 评论 -
JDK 和 JRE 有什么区别?
JRE是Java运行时环境,是用于运行Java应用程序的组件。JRE包含Java虚拟机(JVM)、Java类库和其他运行时组件。如果您只需要运行Java应用程序,而不需要进行开发,则只需要安装JRE即可。JDK是Java开发工具包,它提供了Java编译器、调试器、开发工具和其他一些开发工具。JDK包含JRE,所以如果您需要开发Java应用程序,您必须首先安装JDK。简单来说,JDK包含JRE,并提供了用于开发Java应用程序所需的其他工具。JRE只包含运行Java应用程序所需的组件。原创 2023-05-24 11:34:12 · 778 阅读 · 0 评论