零散Java知识点
本文最后更新于:3 年前
笔者在复习Java基础知识时,整理的高频知识点。
基础知识
Java数据类型
变量名称 | 字节 | 位数 |
---|---|---|
byte | 1 | 8 |
short | 2 | 16 |
int | 4 | 32 |
long | 8 | 64 |
float | 4 | 32 |
double | 8 | 64 |
char | 2 | 16 |
boolean | 1 | 8 |
字节数记忆口诀
1bb,2cs,4if,8ld
boolean类型占据一个字节或者四个字节。在java规范2中,如果boolean用于声明一个基本类型变量时是占四个字节,如果用于声明一个数组类型时,那么数组中的每个元素占一个字节。
jjava中创建对象的方法
1.用new语句创建对象,这是最常用的创建对象的方式。
2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.
Final修饰成员变量
final修饰的成员变量为基本数据类型是,在赋值之后无法改变。当final修饰的成员变量为引用数据类型时,在赋值后其指向地址无法改变,但是对象内容还是可以改变的。
final修饰的成员变量在赋值时可以有三种方式。1、在声明时直接赋值。2、在构造器中赋值。3、在初始代码块中进行赋值。
解决哈希冲突的方法
ThreadLocalMap中使用开放地址法来处理散列冲突,而HashMap中使用的是分离链表法。
之所以采用不同的方式主要是因为:在ThreadLocalMap中的散列值分散得十分均匀,很少会出现冲突。并且ThreadLocalMap经常需要清除无用的对象,使用纯数组更加方便。
Java中的流
按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
- 节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
- 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
JAVA常用的节点流:
- 文 件 FileInputStream、 FileOutputStrean FileReader FileWriter 文件进行处理的节点流。
- 字符串 StringReader、 StringWriter 对字符串进行处理的节点流。
- 数 组 ByteArrayInputStream、 ByteArrayOutputStream、CharArrayReader、 CharArrayWriter、 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
- 管 道 PipedInputStream、 PipedOutputStream、 PipedReaderPipedWriter对管道进行处理的节点流。
常用处理流(关闭处理流使用关闭里面的节点流)
缓冲流:==BufferedInputStrean==, ==BufferedOutputStream==, ==BufferedReader==, ==BufferedWriter== 增加缓冲功能,避免频繁读写硬盘。
转换流:==InputStreamReader==, ==OutputStreamReader== 实现字节流和字符流之间的转换。
数据流 ==DataInputStream==, ==DataOutputStream== 等-提供将基础数据类型写入到文件中,或者读取出来.
流的关闭顺序
- 一般情况下是:先打开的后关闭,后打开的先关闭(嵌套式)
- 另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b。例如,处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
- 可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!