美文网首页
JavaSE(1)

JavaSE(1)

作者: H小瑞 | 来源:发表于2017-07-05 22:45 被阅读0次

    基本数据类型、运算符、优先级、表达式,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全部读取出来,此时已清空缓冲区了。


    相关文章

      网友评论

          本文标题:JavaSE(1)

          本文链接:https://www.haomeiwen.com/subject/qkrchxtx.html