范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为int。
思考:为什么有的数据在转换过程中,后面的数据L、F忘写了,也可以运行?
答:默认的类型,自动转换
当数据类型不一样的时候,需要发生类型转换。
1. 自动类型转换(隐式)
特点:代码自动完成
原则:范围小的转为范围大的类型;(从小到大)
2. 强制类型转换(显式)(从大到小)
格式:小范围类型 变量 (小范围类型) 原本大范围的数据;
注意事项:1.强制类型转换使用必须谨慎,因为有可能出现数据溢出,精度损失;
2.Byte/short/char三种类型,只要有运算,就都自动转换为int类型,然后再进行加减法运算
3.boolean类型不能发生类型转换
4.关系表:ASCII表:0-127
48=0;A=65;a=97(只需要记住这三个就行)
万国码:Unicode表,包含上面那个表
Char和int之间的转换
算术运算符:对数据进行操作的符号;
表达式:用运算符连起来的常量或变量,叫做表达式:a+b;1+2*3
符号:+、-、*、/、%(模);
用法:数据运算、char类型、字符串连接(任何数据与字符串连接都是字符串)
用法:数据运算、char类型、字符串连接(任何数据与字符串连接都是字符串)
注意事项:
1.对于除法,只看商不看余数:/
2.只看余数则是:%
3.如果当中有余数参与,那么结果直接就是小数
4.取模运用:判断奇偶
重点:变量和常量的运算
注意事项:1.只有变量才能使用自增自减
2.这种运算符只需要一个变量就行,不需要两个
3.赋值运算的左边智能是一个变量;
4复合复制运算符,其中隐含了一个强制类型转换
5.该加一定会加的,只不过是时间问题,
与:& 或:| 异或:^(两个相同就是false) 非:!
注意:如果写成以上双形式的逻辑运算符,只要左边的结果已经决定结果,右边根本不执行从而提高一丢丢性能
任何情况下都非常推荐使用双写的&&和||。
三元运算格式:数据类型 变量名称 = 条件判断?表达式A:表达式B(如上图)
一元运算:++ ---
二元运算:+ - * /
注意事项:三元运算表达式,结果必须被使用,不能不用判断的运算结果
打印输出语句可以支持所有类型,但是若果左侧是变量,必须同时保证表达式A和表达式B符合类要求。
例如:3>4?10.0:20 错误
方法的概念引入:程序结构化
Return:就是立即结束并返回值,而因为上述方法体类型是void类型,所以这个方法体可以不写void,省略。
掌握jdk.9的一个JShell窗口
了解编译器的常量优化,如果有变量那么编译器不会有优化的。
思维启发:1.注意拆解思想:例如,三个输出大值时,分解成两两比较。