Java面试题目- 基础

目录

1.JDK 和 JRE 有什么区别?

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

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

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

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

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

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

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

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

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

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


1.JDK 和 JRE 有什么区别?

·JDK:Java Development Kit;Java开发工具包,提供了Java的开发环境和运行环境。

·JRE:Java Run Environment;Java运行就环境,为Java的运行提供了所需环境。

具体来说JDK还包含了JRE,同时还包含了编译Java源码的编译器javac,还包含了Java程序调试和分析的工具。

运行Java程序,需要安装JRE;编写Java程序,需要安装JDK.

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

== 对于基本类型是 值 比较。对于引用类型 比较的是引用。

equals 默认是 比较 引用。

只是很多类重写 了equals方法,比如 string ,interger等 把它变成了值比较。

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

不对。两个对象的哈希码相同,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

Java hashCode() 方法 | 菜鸟教程

代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

hashCode() 方法用于返回字符串的哈希码。

字符串对象的哈希码根据以下公式计算:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

使用 int 算法,这里 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。空字符串的哈希值为 0。

语法

public int hashCode()

Java面试题目- 基础

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

·final 修饰的类叫最终类,该类不能被继承。

·final修饰的方法不能被重写。

·final修饰的变量叫常量,常量必须初始化,初始化之后值不能被修改。

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

·-1 和四舍五入不同。-1.5 四舍五入是-2.

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

·string 不是基础类型。基础类型有8种:byte、boolean

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

·操作类字符串有:String、StringBuffer、StringBuilder。

·区别在于string声明的是不可变的对象,每次操作都会生成新的string对象,然后将指针指向新的string对象;而stringBuffer、stringBuilder可以在原有的对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用string。

·StringBuffer 和 StringBuilder 最大的区别是,StringBuffer是 线程安全的,而 StringBuilder 是非线程安全的,但是 StringBuffer 的性能却高于StringBuffer ,所以单线程环境下推荐使用StringBuffer ,多线程环境下推荐使用 StringBuilder 。

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

·不一样,因为内存的分配方式不一样。前者,Java虚拟机会将其分配到常量池中。后者,会被分配到 堆内存中。

9.如何将字符串反转?

·1.StringBuffer reverse

StringBuffer stringBuffer = new StringBuffer();

stringBuffer.append(“abc”);

System.out.println(stringBuffer.reverse());

·2.StringBuilder reverse 同上。

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

·indexOf() 返回指定字符的索引。

·charAt() 返回指定索引处的字符。

·replace() 字符串替换。

·trim() 去除字符串两端空白。

·getBytes()返回字符串的byte类型数组

·substring() 截取字符串

·equals() 字符串比较

·length()

·toLowerCase()转成小写字母

·toUpperCase()

11.抽象类必须要有抽象方法吗?Java面试题目- 基础

 

·不需要。抽象类不一定非要有抽象方法。

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

·普通类不能包含抽象方法,只有抽象类可以包含抽象方法。

·抽象类不能直接实例化,普通类可以直接实例化。

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

·不能。定义抽象类就是让其他类继承的。

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

·实现,抽象类的子类使用extends来继承;接口必须使用 implements来实现接口。

·构造函数,抽象类可以有构造函数,接口不能有。

·main方法,抽象类可以有main方法,并且可以运行,接口没 有。

·实现数量,类可以有很多接口,但是只能继承一个抽象类。

·访问修饰符,接口中的方法默认是public,抽象类中的方法可 以是任意访问修饰符。

15.java 中 IO 流分为几种?

·按照功能分,输入流input,输出流output。

·按照类型分,字节流8位,字符流16位。

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

·BIO、Block IO 同步阻塞式IO.就是我们平常使用的IO ,他的特点是模式简单使用方便,并发处理能力低。

·NIO、New IO 同步非阻塞式,是传统IO升级,客户端和服务器端通过channel通道 通讯,实现多路复用。

·AIO,Asynchronous IO 是NIO 的升级。也叫NIO2,实现 了异步非堵塞IO,异步IO的操作基于事件和回调机制。

Java面试题目- 基础

 

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

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

·Files.createFile() 创建文件

·Files.createDirectory() 创建文件夹

·Files.delete()删除

·Files.copy()复制

·Files.move ()移动文件

·Files.size() 查看文件个数

·Files.read()读取文件

·Files.write()写入文件

上一篇:使用来此加密申请免费HTTPS SSL证书,并通过Python脚本下载自动更新到服务器和阿里云CDN


下一篇:CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/pytorch/linux-64/pyto