第三章
一.数值类型之间的转换
1.合法转换:两个数值进行二元操作时,必须把两个操作数转化为同一数据类型,装换过程如图
image.png
2.强制转换:
默认:double和float转int,默认截取截断小数
溢出:a = byte(300); //a = 44
补充:不要在boolen类型与任何数值类型之间进行强制类型转换,必须需要使用的时候,可以使用条件表达式b?1:0
二.StringBuffer 和 StringBuilder
1.为什么StringBuffer可以变长?
和String内部是一个字符数组一样,StringBuffer也维护了一个字符数组。但是,这个字符数组,留有冗余长度 ,比如说new StringBuffer("abcd"),其内部的字符数组的初始化长度等于4+16,如图
QQ图片20190422002044.png
扩容算法:
使用append()方法在字符串后面追加东西的时候,判断长度超过了该字符串存储空间了吗,如果大小了就需要进行扩容:构建新的存储空间更大的字符串,将旧的复制过去; 尝试将新容量扩为大小变成2倍+2 , if 判断一下 容量如果还不够,直接扩充到需要的容量大小。
QQ图片20190422001823.png
三.不规则数组
Java只有一维数组。当一维数组中的元素又是数组时,即构成了所谓的“二维数组”,因此,每个数组元素的长度可以是不一样的,即所谓的“不规则数组”
四.控制流程
1.块作用域中,Java中不能在不能在镶嵌的两个块中,声明相同的变量
2.有些老代码中,if()后面没有{},后面只有一行代码,没有用{},也是允许的,不过我们要求规范,不在写这样的代码。
3.数组初始化:
数字数组:所有的元素都初始化为零,
boolean数组:所有的元素都初始化为false
对象数组:所有的元素都是null
允许数组长度为零
网友评论