任务联系
1.执行代码
int a = 1;
String b = "2";
String c = "3";
System.out.println(a + b + c);
输出:123
java装箱机制,int+string,int类型被强转为string,然后string+进行字符串拼接。
2.执行代码
float f1 = 9.9f;
float f2 = 0.1f;
System.out.println(f1 - f2);
9.799999
浮点数加减法运算,将float转换到内存存储,会出现精度丢失,有效位数只能保存24位,多余部分会丢失。在内存中相减后,再从二进制转换回十进制,就会出现减不尽现象。详见下面大神文章。
float类型数据精度问题:12.0f-11.9f=0.10000038,"减不尽"为什么? - 一只艾米果 - 博客园
3.嵌套枚举
public enum VehicleCategory {
Car(Vehicle.Car.class),
Suv(Vehicle.Suv.class);
Vehicle[] values;
VehicleCategory(Class<? extends Vehicle> kind) {
values = kind.getEnumConstants();
}
interface Vehicle {
enum Car implements Vehicle {
天籁,讴歌,雅阁
}
enum Suv implements Vehicle {
途观,汉兰达,陆巡
}
}
}
4.阅读 on java 8中的章节
《第四章 运算符》
运算符种类,根据使用频率排列。
1.关系运算符:产生一个布尔结果来表示操作数之间的关系。true或false。关系运算符包括小于 <
,大于 >
,小于或等于 <=
,大于或等于 >=
,等于 ==
和不等于 !=
。==
和 !=
可用于所有基本类型,但其他运算符不能用于基本类型 boolean,因为布尔值只能表示 true 或 false。
使用场景:实际工作中更多的用于if条件判断。
2.逻辑运运算符:每个逻辑运算符 &&
(AND)、||
(OR)和 !
(非)根据参数的逻辑关系生成布尔值 true
或 false
。
使用场景:条件判断中,用来连接多个关系运算符表达式。
3.算术运算符:包括加号 +
、减号 -
、除号 /
、乘号 *
以及取模 %
(从整数除法中获得余数)。整数除法会直接砍掉小数,而不是进位。
使用场景:遍历循环中使用较多(++形式),项目特性原因,用的较少。
4.三元运算符:也称为条件运算符。这种运算符比较罕见,因为它有三个运算对象。但它确实属于运算符的一种,因为它最终也会生成一个值。这与本章后一节要讲述的普通 if-else 语句是不同的。下面是它的表达式格式:
布尔表达式 ? 值 1 : 值 2
若表达式计算为 true,则返回结果 值 1 ;如果表达式的计算为 false,则返回结果 值 2。
使用场景:在报文字段传值选取时,使用的较多,即根据对象中某个属性判断,如果符合条件,那取值1(对象的某个属性值),不然取值2(对象的另一个属性值)。
5.字符串运算符:主要用途为连接字符串,若表达式以一个 String 类型开头(编译器会自动将双引号 ""
标注的的字符序列转换为字符串),那么后续所有运算对象都必须是字符串。
使用场景:由项目特性决定了,该类运算符更多的用于log日志输出等场景。
6.位运算符:基本不使用
7.位移运算符:左移位运算符 <<
能将其左边的运算对象向左移动右侧指定的位数(在低位补 0)。右移位运算符 >>
则相反。右移位运算符有“正”、“负”值:若值为正,则在高位插入 0;若值为负,则在高位插入 1。Java 也添加了一种“不分正负”的右移位运算符(>>>),它使用了“零扩展”(zero extension):无论正负,都在高位插入 0。
使用场景:基本不使用
《第二十一章 数组》
原著中说因为Java Collection 和 Stream 类中高级功能的不断增加,日常使用数据已经较少,可以略过。
数组拥有较高的效率,使用数组存储和随机访问对象引用序列是非常高效的。数组是简单的线性序列,这使得对元素的访问变得非常快。但是较快的速度牺牲了灵活性。数组的大小是固定的,且在它的生命周期内无法更改。
一维数组,多维数据(即数组中嵌套数组),
《第二十二章 枚举》
Java中的枚举除了不能被继承外,与其他普通类没有区别,所以我们甚至可以为枚举类写方法或是覆盖方法。
1.enum数组。调用 enum 的 values() 方法,可以遍历 enum 实例 .values() 方法返回 enum 实例的数组。
2.enum数组有严格的顺序,按照申明时的顺序排序,从0开始。调用ordinal() 方法返回一个 int 值,这是每个 enum 实例在声明时的次序,从 0 开始。可以使用==来比较 enum 实例。
3.Enum 类实现了 Comparable 接口,所以它具有 compareTo() 方法
4.enum不能继承自一个enum之外,我们基本上可以将enum看作一个常规的类。也就是说,我们可以向enum中添加方法。需要先定义实例