part(一):
日期:2022.2.21
目标:(pdf A 1-45题)
完成情况:1-20
java基础部分:
1. JDK 和 JRE 有什么区别?
jdk:运行环境+开发环境
jre:运行环境 如果只是想跑java程序只要装jre就行
2. == 和 equals 的区别是什么?
==:
用于基本类型:比较值是否相同
用于引用类型:比较引用是否相同(比较的是内存空间)
equals:
本质上就是==(源码),不过它把==对于string Inter等包装类重写了,将包装类比较变成了值比较
3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
错,hashcode相同但是equals不一定是true,有可能两个对象生成的两个随机hashcode 相同,因此反之equals为true那么hashcode一定相同
4. final 在 java 中有什么作用?
分别三种情况来说
修饰类,被修饰的类叫最终类,不能被继承
修饰方法不能被重写
修饰的变量叫常量,常量必须初始化,之后不能被修改
5.java 中的 Math.round(-1.5) 等于多少?
脑海脑补出数轴,-1.5向右接近于0,向右取就是-1
6.String属于基础数据类型吗
不属于,属于引用数据类型
7.java 中操作字符串都有哪些类?它们之间有什么区别?
一般有三种,string,stringbuffer,stringbuilder
被string修饰的不可更改,它修饰的是不可变对象,每次操作都是生成一个new的对象,修饰的字符串可变时最好用stringbuffer或者stringbuilder
stringbuffer:线程安全,性能低
stringbuilder:线程不安全,性能高
单线程用stringbuilder,多线程用stringbuffer
8.String str="i"与 String str=new String("i")一样吗?
不一样,前者声明会将其声明到常量池,后者会被分配到堆内存
9.字符串反转
stringbuffer或者stringbuilder的反转方法
10.String常用方法
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。
11.抽象类必须要有抽象方法吗
不一定,但是有抽象方法的一定是抽象类
12.普通类和抽象类有哪些区别
普通类不能包含抽象方法,抽象类可以
普通类可以实例化,抽象类不可以
13.抽象类能使用final修饰吗
不能,抽象类本身就是用来被继承的,用final就违背使用它的初衷了
14. 接口和抽象类有什么区别?
接口用来被实现,抽象类用来被继承
接口不能有构造函数,抽象类有
接口不能有main,抽象类有
实现的接口可以有多个,抽象类只可以继承一个
接口的方法默认用public,抽象类可以自定义
15.io流分几种
输入流/输出流
字符流8位传输/字节流16位传输
16.BIO,NIO,AIO
BIO:同步阻塞式,传统io,并发能力低,使用方便
NIO:同步非阻塞式,BIO升级版,客户端服务器通过channel通讯,实现多路复用
AIO:异步非阻塞式,Nio升级版,实现了异步分阻塞IO,其基于事件和回调机制
17.File常用方法
Files.exists():检测文件路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除一个文件或目录。
Files.copy():复制文件。
Files.move():移动文件。
Files.size():查看文件个数。
Files.read():读取文件。
Files.write():写入文件。
18.静态变量和实例变量的区别
静态变量用static修饰,实例变量不用
静态变量不属于任何一个实例,而是属于类,所以在加载类的字节码文件的时候就会给静态变量分配空间且仅只分配一次
19.&和&&的区别,三元运算符是什么,移位运算
一个是与一个是短路与,有一个flase结果返回False
20.重载和重写区别
重载:同一个类中\多个同名类\参数数量或者类型不同
重写:子父类\子类有父类同名的方法\方法名,参数列表,返回值类型都相同