基本数据类型、运算符、优先级、表达式,Scanner扫描器
基本数据类型:
基本数据类型的存储空间是固定的,如果存储的值超过基本数据的范围就会益处从而出错,而且基本类型都在计算机字长范围内,计算机可以使用指令一次性处理
基本数据类型可以直接进CPU进行计算和缓存,一般不会进入内存和硬盘,多时间是出于CPU当中,因此对基本数据类型的处理最快。
基本数据类型通常都有配套的CPU指令
由于计算机中使用二进制,所以大多数小数保存的都是近似值,0.5除外
类型转换要求
不能损失精度
类型之间要兼容才可以转换(比如数值类型之间的转换char类型是个特例)
当有精度损失的时候,要求使用‘()’强制转换符,进行强制转换,不推荐使用
字符串处理
字符串太长,不适合保存在CPU中,通常是放在内存中处理
保存在内存中的类型属于引用类型。cup使用时找它的内存中的地址(32bit)然后加载运算
字符串被设计成不可变的
String被设计成不可变的主要目的是为了安全和高效。这与String的底层实现使用连续存储的数组实现有关
因为内存中存储是非常紧密的,后面没有可供修改使用的空间(大概率事件)
如果有,修改字符串需要开辟的新空间和移动操作使得性能降低
如果使用链式存储,会使存储空间增大和遍历速度急剧下降,得不偿失
字符串的拼接操作
每一次拼接都会产生新字符串,浪费存储空间循环拼接更是如此
String.format() 字符串格式化Scanner扫描器
Scanner 的输入的回车对下一次输入造成影响的问题
该问题出现是一种对nextXxx()、next()、nextLine()三类方法的不了解造成的;
nextXxx()和next()不会清空缓冲区里的回车符,而nextLine()会清除缓冲区里的回车符;
nextXxx()方法只读取当前行中对应的数据类型,如果行首发生类型不匹配,就会抛异常;
若类型匹配就从键盘缓冲区读取相应的值(遇到分隔符“空格”“回车符”停止读取),分隔符以及其后的内容仍然残留在缓冲区中,比如nextInt()只读取"123 sdff"中的123,而“ sdff”残留在缓冲区里,
这时扫尾的nextline()就来了,正如其名,将上一行中未被读取的内容从缓冲区中读取出来。
nextline()只以换行符作为分隔符,而next()作用与nextLine()类似,但以空格和回车符作为分隔符。
注意:缓冲区里残留的上一行里面的空格和D以及回车符被nextline全部读取出来,此时已清空缓冲区了。
网友评论