目录:

  • JDK 和 JRE 有什么区别?
  • == 和 equals 的区别是什么?
  • 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
  • final 在 java 中有什么作用?
  • java 中的 Math.round(-1.5) 等于多少?
  • String 属于基础的数据类型吗?
  • java 中操作字符串都有哪些类?它们之间有什么区别?
  • String str="i"与 String str=new String(“i”)一样吗?
  • 如何将字符串反转?
  • String 类的常用方法都有那些?
  • 抽象类必须要有抽象方法吗?
  • 普通类和抽象类有哪些区别?
  • 抽象类能使用 final 修饰吗?
  • 接口和抽象类有什么区别?
  • java 中 IO 流分为几种?
  • BIO、NIO、AIO 有什么区别?
  • Files的常用方法都有哪些?

纯自己的见解+网上的资料的整理,如有问题请各位大佬指出 (ಥ_ಥ) 

JDK 和 JRE 有什么区别?

JDK是java development kit,java开发工具包,JDK中包含JRE。

JRE是java runtime environment,java运行时环境。

JDK面向开发人员使用,JRE面向Java程序使用;如果你只需要运行java程序的话,按照JRE就可以了,如果你还要编写java程序,就需要安装JDK了。

== 和 equals 的区别是什么?

==判断两个变量或实例内存地址是否相等,equals判断两个变量或实例的值是否相等。

但equals本质是一个方法,最底层是在Object定义的,向Integer、Long这种包装类重写了逻辑,所以会相等;

若没有重写的话,调的是Object的equals。

public boolean equals(Object obj) {
return (this == obj);
}

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

不一定,equals是对象的一个方法,如果内部实现不一致是不会相同的。

final 在 java 中有什么作用?

对于class来说,定义成final的class是不能被继承的

对于方法来说,定义成final的方法也是不能被重写的

对于属性来说,定义成final的属性是常量,不能被修改

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

等于-1,round就是四舍五入,将原值加上0.5后再向下取整就可以了。

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

不属于,String是引用类型。

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

常用的有String、StringBuffer、StringBuilder

String被final修饰,所有的方法返回new String,即对String修改不会影响到原对象

String可以说是Stringbuffer和StringBuilder的基类,后两者是对String的增强;但StringBuffer对于StringBuilder来说更适用于并发的场景,它在方法上都加了锁来保证线程安全。

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

不一样,我们用==比较,得出的结果为false;

首先str = "i"表示将字符串i的内存地址给到str,而new String("i")是将一个对象的内存地址给到str。

然后我们通过实验来验证:

String str = "i";
String str2 = "i";
String str3 = new String("i");
System.err.println(str==str2);
System.err.println(str==str3);
System.err.println(str2==str3);

结果为:true、false、false

如何将字符串反转?

通过StringBuilder或StringBuffer的reverse()方法。

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

valueOf()

concat()

split()

substring()

equals()

indexOf()

replace()

...

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

不是必须要有抽象方法,抽象类其实和普通的类本质上没有区别,只是可以拥有未实现的抽象方法,来让继承自己的类实现。

它对于普通的类来说不能实例化,即不能构造该类的对象。

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

类定义上:普通类class className,抽象类abstract class className

方法实现上:普通类的方法都必须要有实现,而抽象类可以只定义不实现

实例化:普通类能够直接实例化,而抽象类不能实例化

方法定义上:普通类可以拥有private方法,而抽象类的抽象方法不能是private,因为抽象方法需要子类实现,若是private的话子类无法实现该方法。

抽象类能使用 final 修饰吗?

不能;因为被final修饰的类是不能被继承的,而抽象类中可能包含抽象方法,抽象方法是必须要被重写的,所以不能用final修饰抽象类。

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

方法实现:接口只能声明方法,抽象类还可以实现方法。

属性和方法:接口的属性都是public static final的,抽象类可以自己定义;接口的方法都是public abstract的,抽象类也是自己定义的。

承接关系:抽象类是继承,接口是实现

java 中 IO 流分为几种?

按照数据的流向分为:input(输入流用于读数据)、output(输出流用于写数据)。

按照流数据的格式分为:字符流、字节流。

常用的有InputStream、OutputStream、Reader、Writer,java中其它各种各样的流均是他们派生出来的。

BIO、NIO、AIO 有什么区别?

BIO:Blick IO,同步阻塞式IO;也就是传统的IO,特点是使用简单,缺点是处理并发能力差;它是一个连接一个线程。(关键字:传统的、并发能力差

NIO:Non IO,同步非阻塞IO;是传统IO的优化IO,客户端和服务端通过channel通讯,实现类多路复用;它是一个请求一个线程。(关键字:以channel通讯、多路复用IO

AIO:Asynchronous IO,异步非阻塞,NIO的升级;实现了异步非阻塞IO,基于事件和回调机制;它是一个有效的请求一个线程。(关键字:异步非阻塞IO、基于事件和回调机制

参考:https://blog.csdn.net/zhcswlp0625/article/details/93461137

Files的常用方法都有哪些?

1、Files.exists() 检测文件路径是否存在

2、Files.createFile() 创建文件

3、Files.createDirectory() 创建文件夹

4、Files.delete() 删除文件或者目录

5、Files.copy() 复制文件

6、Files.move() 移动文件

7、Files.size() 查看文件个数

8、Files.read() 读取文件

9、Files.write() 写入文件

最新文章

  1. 【笔记】js清空cookie
  2. XidianOJ 1149 卡尔的技能 II
  3. js事件捕获,事件冒泡,事件委托以及DOM事件流
  4. Session的异常
  5. 物联网操作系统HelloX V1.78测试版正式发布
  6. Oracle 课程五之优化器和执行计划
  7. modelsim打开.wlf文件的方法(原创)
  8. $(document).ready(); $().ready(); $()
  9. T-SQL 创建、修改、删除数据库,表语法
  10. linux 解压操作命令
  11. Java 9 揭秘(6. 封装模块)
  12. oclazyload的尝试
  13. MogonDB安装及配置
  14. GitHub git 命令思维导图
  15. Django ajax提交 登录
  16. Win7下npm命令Error: ENOENT问题解决
  17. AJPFX平台有哪些优势?
  18. JVM之---Java源码编译机制
  19. charles录制https请求
  20. Linux PulseAudio

热门文章

  1. Orleans 初接触(二) 测试用例
  2. rails 中各种去重查询操作
  3. CSS中的变量使用,var()语法
  4. 延迟队列DelayQueue take() 源码分析
  5. Tomcat系列(一)- 整体架构
  6. [ASP.NET Core 3框架揭秘] 依赖注入[9]:实现概述
  7. vue中子组件直接修改父组件prop属性bug
  8. net core 3.1 跨域 Cors 找不到 “Access-Control-Allow-Origin”
  9. 调用高德API,通过输入的地址,如省份、市、区获取经纬度 ,通过输入的经纬度,获取区域详情
  10. DDMS files not found: xxx\hprof-conv.exe