JavaSE(1)


基本数据类型、运算符、优先级、表达式,Scanner扫描器


基本数据类型:


JavaSE(1)_第1张图片

基本数据类型的存储空间是固定的,如果存储的值超过基本数据的范围就会益处从而出错,而且基本类型都在计算机字长范围内,计算机可以使用指令一次性处理

基本数据类型可以直接进CPU进行计算和缓存,一般不会进入内存和硬盘,多时间是出于CPU当中,因此对基本数据类型的处理最快。

基本数据类型通常都有配套的CPU指令

由于计算机中使用二进制,所以大多数小数保存的都是近似值,0.5除外


类型转换要求

不能损失精度

类型之间要兼容才可以转换(比如数值类型之间的转换char类型是个特例)

当有精度损失的时候,要求使用‘()’强制转换符,进行强制转换,不推荐使用

字符串处理

字符串太长,不适合保存在CPU中,通常是放在内存中处理

保存在内存中的类型属于引用类型。cup使用时找它的内存中的地址(32bit)然后加载运算

字符串被设计成不可变的

String被设计成不可变的主要目的是为了安全和高效。这与String的底层实现使用连续存储的数组实现有关

因为内存中存储是非常紧密的,后面没有可供修改使用的空间(大概率事件)

如果有,修改字符串需要开辟的新空间和移动操作使得性能降低

如果使用链式存储,会使存储空间增大和遍历速度急剧下降,得不偿失

字符串的拼接操作

每一次拼接都会产生新字符串,浪费存储空间循环拼接更是如此

JavaSE(1)_第2张图片
String.format() 字符串格式化

Scanner扫描器

Scanner 的输入的回车对下一次输入造成影响的问题

该问题出现是一种对nextXxx()、next()、nextLine()三类方法的不了解造成的;

nextXxx()和next()不会清空缓冲区里的回车符,而nextLine()会清除缓冲区里的回车符;

nextXxx()方法只读取当前行中对应的数据类型,如果行首发生类型不匹配,就会抛异常;

若类型匹配就从键盘缓冲区读取相应的值(遇到分隔符“空格”“回车符”停止读取),分隔符以及其后的内容仍然残留在缓冲区中,比如nextInt()只读取"123 sdff"中的123,而“ sdff”残留在缓冲区里,

这时扫尾的nextline()就来了,正如其名,将上一行中未被读取的内容从缓冲区中读取出来。

nextline()只以换行符作为分隔符,而next()作用与nextLine()类似,但以空格和回车符作为分隔符。

JavaSE(1)_第3张图片
JavaSE(1)_第4张图片

注意:缓冲区里残留的上一行里面的空格和D以及回车符被nextline全部读取出来,此时已清空缓冲区了。


你可能感兴趣的:(JavaSE(1))