ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java面试题目- 基础

2022-01-19 20:03:12  阅读:177  来源: 互联网

标签:Files Java String equals 面试 字符串 题目 抽象类


目录

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()写入文件

标签:Files,Java,String,equals,面试,字符串,题目,抽象类
来源: https://blog.csdn.net/weixin_41290863/article/details/122588469

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有