内存中存储的是对应的编码,与对应的形状库一起能够在显示器显示出来对应的字符。
磁盘中存储的是文件信息。
内存中存储的是变量(虽然也是在磁盘里,等到使用的时候再调入进来)。
因为编码实质就是二进制串,所以也可以比较大小。
想输出某个字符的编码只需要把他赋值给int类型变量然后输出即可。
因为ASCII编码(8位)不够用所以后来引入了Unicode编码(16位)。
但是不管哪个编码可能输出看着是个十进制的数,但在计算机内部其实还是二进制编码。
Char占的空间:要看是什么编码,由所选编码决定,如果是ASCII码就是8位,如果是Unicode就占16位,如果是UTF-8就是占16-32位。
但是在内存中一个文件的存储的地方按照所选编码,每个字符占的空间大小都是对应的大小。
eg.左上角都是按ASCII那么每一个字符都是占8位,左下角都是按Unicode编码那么每个字符就占16位,右下角UTF-8也是同理每个占32位。
码点:字符的编码值(eg.上面例子中 ”张“的码点就是24352)
布尔类型(真/假):理论上最小仅需要1bit即可表示两种状态,但计算机最小的存储单元是8bit(即一个字节),所以最少用一个byte来存放boolean类型的变量。(操作系统里面的计算题会用到)
内存里的内容往cpu里存储的时候,存在cpu的缓冲行里,一个cpu缓冲行大小是64B。
因为是按电压传输,一次传输的时候电压不变,读取某个缓冲行里的数据时需要排队,也就是我们想读某个数据,但正在读其他的数据,我们就要等那个数据读取完毕,再读取我们需要的。
但也只是可能阻塞读取(缓冲区里的数据越多,阻塞的几率就越大)
而对于简单的数据boolean类型我们经常会用到,所以我们就用int占32B来存储,这样我们留给缓存行存储其他数据的地方就会变少,缓存行数据少了,使用boolean的读取速度就加快了,所以用int类型来存放boolean类型变量。即牺牲缓冲行以空间换时间。
Java中定义变量的时候要记得初始化。
可以用final 来定义常量(不可修改 eg.final int x = 90;)
final的作用:
- final修饰常量不可以被第二次赋值。
- final修饰的类不可以被继承。
- final修饰的方法不可以被重写。
- final防止指令重排序,保障多线程下的数据安全(是由于计组里面的指令流水线导致的)。