1.数据类型转换
1.1 自动类型转换
数据范围从小到大
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
1.2 强制类型转换
范围小的类型 变量名 = (范围小的类型)原本范围大的数据
注意事项
- 强制类型转换一般不推荐使用,有可能发生精度损失、数据溢出
(小数转换为int时,直接舍弃掉小数点后的部分) - byte/short/char这三种类型都可以发送数学运算,例如加法“+”。在运算时,都会首先被提升成为int类型,然后再计算
- boolean类型不能发生数据类型转换
1.3 ASCII 编码表
48 = 0
65 = A
97 = a
2.运算符
2.1 算术运算符
对于整数表达式来说,除法用的是整除,结果仍是整数,只看商。
只有对于整数的除法来说,取模运算符才有余数的意义
注意:运算中有不同类型的数据,结果将是范围大的那种
“+”的三种用法:
- 对于数值来说,就是加法
- 对于char来说,在计算之前,会被提升为int然后再计算(对照关系:ASCII, Unicode)
- 对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作(无空格),任何数据类型和字符串进行连接的时候,结果都会变成字符串
优先级问题:
str+20+30 ‐‐> str2030
str+(20+30) ‐‐> str50
自增、自减运算符(前++:++x ,后++:y++)
- 单独使用:前++和后++没有任何区别
- 混合使用(与赋值、打印等操作混合):
前++:变量马上+1,然后拿着结果进行使用(先加后用)
后++:首先使用变量本来的数值,然后再让变量+1(先用后加)
注意:只有变量才能使用自增、自减运算符
2.2 赋值运算符
a %= 2 相当于 a = a % 2
注意:复合赋值运算符其中隐含了一个强制类型转换
eg.
byte num = 30
num += 5
// num = byte + int
// num = int
// num = (byte) int
2.4 逻辑运算符
与“&&”, 或“||”,具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行。
与、或运算符如果有多个条件,可以连续写
2.5 三元运算符
数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B
判断条件是否成立,如果成立,将A的值赋值给左侧变量,如果不成立,将B的值赋值给左侧变量
注意:
- 必须A和B同时符合左侧数据类型的要求
- 三元运算符结果必须被使用(不能单独写)
3.方法入门
方法定义:
修饰符 返回值类型 方法名 (参数列表){
代码…
return ;(返回值是void时可不写)
}
4.其他注意事项
- 对于byte/short/char来说,如果右侧赋值的数值没有超过左侧范围,那么javac编译器将会自动隐含的补上一个(byte)(short)(char),如果超过了会直接报错
- 在给变量进行赋值时,如果右边表达式当中全部是常量,没有任何变量,那么javac会直接将若干常量表达式计算得到结果。编译后得到的字节码文件中相当于【直接就是】数据类型 变量 = 常量,当右侧数值没有超过左侧范围时,就不会报错。这称为“编译器的常量优化”