菜鸟刷面试题(一、Java基础篇)
目录:
- 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() 写入文件
菜鸟刷面试题(一、Java基础篇)的更多相关文章
- Java面试题(Java基础篇)
Java 基础 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- php面试题汇总二(基础篇附答案)
介绍一些php常见面试题及答案,都是平时面试的时候经常会遇到的,小伙伴们仔细了解下吧.接着上一篇php面试题汇总一(基础篇附答案) 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义 ...
- 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇
Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...
- java基础篇---HTTP协议
java基础篇---HTTP协议 HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
- Java基础篇 - 强引用、弱引用、软引用和虚引用
Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...
- java基础篇 之 构造器内部的多态行为
java基础篇 之 构造器内部的多态行为 我们来看下下面这段代码: public class Main { public static void main(String[] args) { new ...
- 小白—职场之Java基础篇
java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...
- java基础篇1
JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...
随机推荐
- Ganglia与Centreon整合构建智能化监控报警平台
一.智能运维监控报警平台的组成 随着大数据时代的来临,运维工作的难度越来越大,每个运维人员都要面临不计其数的服务器和海量的数据,如何保证众多服务器和业务系统稳定高效地运行并尽量减少死机时间,成为考核运 ...
- Java并发编程系列-(4) 显式锁与AQS
4 显示锁和AQS 4.1 Lock接口 核心方法 Java在java.util.concurrent.locks包中提供了一系列的显示锁类,其中最基础的就是Lock接口,该接口提供了几个常见的锁相关 ...
- Task 的一些个人见解
Task确实比较好用且优雅 我感觉.NET要成为艺术家... public class TheTask { /// <summary> /// 直接调用是同步方法 /// </sum ...
- 使用iCamera 测试MT9F002 1400w高分辨率摄像头说明 续集2
使用iCamera 测试MT9F002 1400w高分辨率摄像头说明 续集2 本方案测试三种分辨率输出(其他更多分辨率设置,可以参考手册配置) 3776*3288=1241万像素 3776*2832= ...
- php 温故而知新 好久不用 又得继续学习下
1.php注释:/* */.//.#等三种方式2.echo:向浏览器输出字符串,echo其实是一个函数:返回值:无3.print:向浏览器输出字符串,它也是一个函数:返回值:整型. ...
- 如何在Ubuntu上给软件创建快捷方式
特殊方法:在搜索栏搜索程序 然后在快捷栏 反键 锁定在启动器 默认情况下,Ubuntu会将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面 ...
- Django 04
目录 视图层 三个常用方法 JsonResponse FBV 和 CBV 模板层 模板语法 模板传值 过滤器 标签 自定义过滤器和标签 模板的继承 模板的导入 视图层 三个常用方法 HttpRespo ...
- Nginx(二)--nginx的核心功能
反向代理 nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理. proxy_pass 既可以是ip地址,也可以是域名,同时还可以指定端 ...
- 002_Java语言基础
------------恢复内容开始------------ 存储的基本单元:byte: 1 byte = 8 bit(位) 1 KB = 1024 byte 1 MB = 1024 KB 1 GB ...
- day 28-1 元类
元类 元类的用途:自定义元类控制类的创建行为及类的实例化行为 Python 中一切皆为对象. 一切接对象,对象可以怎么用呢? 1.都可以被引用,x=obj 2.都可以当作函数的参数传入 3.都可以当作 ...