数据类型转换、数值提升、运算符

数据类型转换、数值提升、运算符
各自对应的包装类:
int Integer
byte Byte
short Short
long Long
double Double
float Float
char Char
boolean Boolean

类型转换:
1.不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型(隐式类型转换)
eg.可以将int赋值给long

2.如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但可能精度丢失(显式类型转换)
eg. int a=0; double b=10.5;a =(int)b; //double可以强转为int型,但10.5赋值之后就变成10了,小数点后面的部分被忽略

3.将一个字面常量进行赋值时,java会自动针对数字范围进行检查。
eg.byte a=100;//编译通过
byte b=256;//编译报错,从int转换到byte可能会有损失,byte表示的数据范围为-128~127

4.互不相干的类型之间无法转换,强转也不行
eg.int和boolean是毫不相干的两种类型,不能互相赋值

数值提升:
1.不同类型的数据混合运算,范围小的会提升成范围大的
eg.int和long运算时,int会提升成long,得到的结果仍然是long类型
2.对于short,byte这种比4个字节小的类型,会先提升成4个字节的int,再运算
(即使byte和byte运算,也都要先变成int,注意运算结果的类型)

int和String之间的转换:
int转String:int num=10;
String str1=num+“”;//法1
String str2=String.valueof(num);//法2
String转int:String str=“100”;
int num=Integer.parseInt(str);

例外:
1.byte和char 转换,无论从大到小,从小到大,都要强转
2.short和char转换,即使两个字节大小一样,也都要强转

**运算符:
**数据类型转换、数值提升、运算符
注意:
1.0不能作为除数
2.%表取余,不仅可以对int求模,也能对double求模
3.关系运算符的表达式返回值都是boolean类型
4.逻辑运算符的操作数和返回值都是boolean类型

5.位操作表示按二进制位运算(0 1构成的序列)
6.左移:最左侧位不要了,最右侧补0
右移:最右侧位不要了,最左侧补符号位(正数补0,负数补1)(注意补码)
无符号位右移:最右侧位不要了,最左侧补0(没有无符号左移