Java面试题目- 基础

Posted Roam-G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

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.抽象类必须要有抽象方法吗?

 

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

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的操作基于事件和回调机制。

 

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

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

·Files.createFile() 创建文件

·Files.createDirectory() 创建文件夹

·Files.delete()删除

·Files.copy()复制

·Files.move ()移动文件

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

·Files.read()读取文件

·Files.write()写入文件

以上是关于Java面试题目- 基础的主要内容,如果未能解决你的问题,请参考以下文章

Java面试-常见基础笔试题目

Java笔试面试题目

美资软件公司JAVA工程师电话面试题目

Java面试手册-基础篇Java中main()方法需要的参数是否必须为字符串数组?

(转)喜马拉雅2018 Java面试题目

喜马拉雅2018 Java面试题目