1. 数据类型转换
1.1 自动转换
自动转换:取值范围小的类型自动的转化为取值范围大的类型。
例如:一个int类型变量和一个byte类型变量相加,结果将是int类型,这就是期间发生了数据类型的自动转换。
同样的道理再举一个例子:
当一个int类型变量和一个double类型变量运算时,int类型会自动提升为double类型进行运算。
转换规则:范围小的类型向着范围大的类型提升,byte、short、char运算时直接提升为int。
// An highlighted block
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
1.2 强制类型转换
// An highlighted block
int i = 1.5; // 错误
// double类型数据强制转成int类型,直接去掉小数点。
int i = (int)1.5;
强制类型转换需要注意:
浮点数转成整数,直接取消小数点,可能造成数据损失精度;
int转short,实质是损失两个字节可能造成数据丢失。
1.3 ASCLL编码表
常见的编码表:
2. 运算符
2.1 常见运算符
特别的:
++、-- 运算符:++变量自己增长1,–变量自己减少1
++在变量前后的位置在独立运算时没有区别,但是在混合运算中和其他的运算放在一起就需要注意了:
前++,变量a先加1再将值赋给b;
后++,变量a先将值赋给b再加1.
另外的,+符号在遇到字符串的时候,表示连接拼接的含义。
“a”+“b” 的结果是“ab”,连接含义。
2.2 赋值运算符
// An highlighted block
i+=5;//计算方式 i=i+5 变量i先加5,再赋值变量i
2.3 比较运算符
比较运算符的运算结果是布尔值:true或false
2.4 逻辑运算符
逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值 true 或者 false。
2.5 三元运算符
// An highlighted block
数据类型 变量名 = 布尔类型表达式?结果1:结果2
计算方式:
布尔类型表达式是true,结果1赋值给变量;
布尔类型表达式是false,结果2赋值给变量。
3. 说一说方法
什么是方法:就是把一个功能抽取出来把代码单独定义在大括号内,形成一个单独的功能。
注意事项:
方法必须定义在一类中方法外;
方法不能定义在另一个方法里面。
4. 小细节
// An highlighted block
public static void main(String[] args){
byte b1=1;
byte b2=2;
byte b3=1 + 2; //正确赋值
byte b4=b1 + b2; //错误
System.out.println(b3);
System.out.println(b4);
}
b1、b2是变量,变量的值是可能变化的,所以javac编译的时候不确定两者相加的结果,就会自动将结果以int类型处理,因此会出现编译失败。
// An highlighted block
public static void main(String[] args){
short s = 1;
s+=1;
System.out.println(s); //正确赋值
}
表面上看似会发生和上一代码段一样的编译错误,因为在我们的认识里面 s+=1等价于s=s+1,但是这里需要指出赋值运算符号只运算一次,并带有强制转换的特点,因此没有问题编译通过。