面试题:Java 基础

170 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

  • 个人简介:微信公众号关注:SteveCode。为您分享更多的知识学术。生于忧患死于安乐

文档:面试题:Java 基础.note 链接:note.youdao.com/noteshare?i…

一、Java 基础

1.JDK 和 JRE 有什么区别?

blog.csdn.net/qq_21808961…

jdk(Java development kit)Java开发工具包,包含jre和Java工具与Java基础类库。针对开发者。

jre(Java runtime Environment)Java运行环境,包含jvm 与Java核心类库,针对Java用户。

jvm Java虚拟机 是用来解释执行字节码的类文件。

2.== 和 equals 的区别是什么?

==:如果是基本数据类型 比较的是值;引用类型比较的是内存地址。

equals:比较的是:内容

string 类型不同 重写了equals方法,

有的值会从常量池中获取。

www.cnblogs.com/WangMengyi/…

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

不对,有相同的hashcode()但是不一定equals()方法结果为true。

www.cnblogs.com/leifei/p/12…

hashCode返回对象的哈希码,equals()判断两个对象是否相等。先去判断hashCode()是否相等,再去判断equals()是否相等。提高对比的准确性。

hashcode相同,两个对象不一定相等。

equals相等那么这两个对象一定相等,且hashcode也一定相等。

先判断hashcode是否相等,如果相等,再判断equals是否相等,如果相等就是同一对象。否则就是不同的对象。

equals比较是绝对可靠的

hashcode比较不是绝对可靠的

4.final 在 java 中有什么作用?

可以修饰类:该类不能继承

修饰方法:不能重写

修饰成员变量:必须初始化值

如果成员变量基本数据类型,表示这个值不可以修改。

如果是成员变量引用数据类型:表示这个引用地址不会发大亨改变。但是引用所指向的对象的内容可以发生改变。

5.java 中的 Math.round(-1.5) 等于多少?

四舍五入 正数 加一

负数减一

public class test { public static void main(String[] args){ System.out.println(Math.round(1.3)); //1 System.out.println(Math.round(1.4)); //1 System.out.println(Math.round(1.5)); //2 System.out.println(Math.round(1.6)); //2 System.out.println(Math.round(1.7)); //2 System.out.println(Math.round(-1.3)); //-1 System.out.println(Math.round(-1.4)); //-1 System.out.println(Math.round(-1.5)); //-1 System.out.println(Math.round(-1.6)); //-2 System.out.println(Math.round(-1.7)); //-2 } }

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

不属于,是引用类型。

www.cnblogs.com/studywithme…

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

String、StringBuffer、StringBuilder

  • String : final修饰,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。
  • StringBuffer : 对字符串的操作的方法都加了synchronized,保证线程安全。
  • StringBuilder : 不保证线程安全,在方法体内需要进行字符串的修改操作,可以new StringBuilder对象,调用StringBuilder对象的append、replace、delete等方法修改字符串。
  • blog.csdn.net/meism5/arti…

8.String str="i"与 String str=new String(“i”)一样吗?

不一样,将值分配到常量池中,后者将值分配到堆内存中。前者创建了有一个对象,后者可能创建了两个对象。

blog.csdn.net/zx1293406/a…

*9.如何将字符串反转?

class Myreverse { public static void main(String[] args) { String s = "1234"; String reverse1 = ""; 第一种:利用下标去数据 for (int i = 0; i < s.length(); i++) { reverse1=s.charAt(i)+reverse1; System.out.println(s.charAt(i)); System.out.println(reverse1); } System.out.println(reverse1); System.out.println("======================"); 反转的方法: StringBuilder builder = new StringBuilder(s); System.out.println(builder.reverse().toString()); } }

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

length()、charAt()、indexof()、replace()替换、equals()判断内容是否相等、blog.csdn.net/sinat_41920…

11.抽象类必须要有抽象方法吗?

抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类。

blog.csdn.net/qq_35771266…

12.普通类和抽象类有哪些区别?

关键字上:普通类没有关键字abstract修饰,抽象类需要加上abstract

实例化上:抽象类不能实例化,必须有有子类继承抽象类,才可以实例化。普通类可以实例化

方法上:抽象类可以没有方法体,普通类必须要有方法体

抽象类不能final修饰

抽象方法不能是private修饰

blog.csdn.net/meism5/arti…

13.抽象类能使用 final 修饰吗?

不能,因为final类修饰的类不能被继承,而抽象类需要子类区继承他,才能实现其抽象方法。

blog.csdn.net/qq_35771266…

14.接口和抽象类有什么区别?

方法上:接口中的方法都是抽象的,抽象类中可以有非抽象方法。

实例化上:接口不能实例化,抽象类可以实例化(前提:该抽象类被继承)

继承性:接口多继承性,类的单继承性

实现方式:接口需要实现,抽象类需要继承

方法体上:接口只能做申明不能做实现,抽象类可以做申明也可以做实现。

变量:接口中的变量是常量,抽象类中的的变量是普通变量。

www.cnblogs.com/jmyyyy/p/10…

**15.java 中 IO 流分为几种?

按流向:输入流、输出流

处理数据不同:字节流(视频、音频、doc等)、字符流(纯文本)

功能:节点流、处理流

blog.csdn.net/weixin_4292…

**16.BIO、NIO、AIO 有什么区别?

bio同步阻塞io

nio同步非非阻塞io

aio异步非阻塞io

blog.csdn.net/skiof007/ar…

**17.Files的常用方法都有哪些?

Files文件里面的方法都是静态的。

Files. exists():检测文件路径是否存在。

Files. createFile():创建文件。

Files. createDirectory():创建文件夹。

Files. delete():删除一个文件或目录。

Files. copy():复制文件。

Files. move():移动文件。

Files. size():查看文件个数。

Files. read():读取文件。

Files. write():写入文件。

blog.csdn.net/py1215/arti…