整数赋值
整数输入时默认为int
byte a=1;yes
byte a=128; no,超出byte范围
int a=0b10101; yes
int a=0xff; yes
long a=123456789123; no,超出int范围
long a=123456789123; yes
byte、short ------>赋值时如果int在其表示范围内(即不影响精度)时无数据损失可直接赋值,否则强制类型转换
int------->int直接赋值,小类型自动转换,否则强制转换
long------>输入时为int,需要强制类型转换才能成功输入
浮点数赋值
浮点数输入时默认格式为double
float a = 1 yes
float a = 1.1 no,double不能赋给float
float a = 1.1lyes
double a = 1.1 Yes
浮点数与整数不同,其小数点后精度不同,即double不可能在float范围内,也就是说必须使用强制类型转换
输入数值
输入二进制数
x=-0b1010101001
x=-0B1010101001
输入八进制数
x=-017
x=077
输入十六进制数
x=0x77
x=0X77
输入二进制数时输入值为原码,数字符号另加。
由于其不能带符号位,所以位数最高为(类型大小-1)
运算
算数运算符:+ - * / %
单目按位运算符:^ ~ | & << >> >>>
三目运算符: ? :
bytea=2+2; yse
数值 运算符 数值——>先将低级的转化为高级的,算出来,然后当做一个数参与其他运算
三目运算时,低级同样转化为高级
bytea=2;
a=a+2; no
byte i=1,j=1;
i=i+j; no
变量 运算符 变量 先将低级的转化为高级的,然后进行运算,此时不支持范围内自动转化
或 ——>
数值 运算符 变量 整数运算低于int的转为int,然后进行运算,其余在自己的模式下进行
三目运算时,低级同样转化为高级,但支持范围内自动转化
另:& | ^三个同样可以用于逻辑运算中
赋值运算符: += -= *= /= %=
byte a =1;
a+=2+2;
这种运算符自带强制转化功能,即a=(byte)(a+(2+2));
等号后面的自带升级效果,先算再与原数相运算
单目运算符:++ -- - (类型)
自己加一 减一 负号 强制转换 取地址 指针
其他注意事项
1、三目运算符
结合顺序从右边到左边(1>2?1:3>4?5:6;--->1>2?1:(3>4?5:6);)。
其本身为普通运算符(相当于+),所以必须有一个存在价值,比如作为返回值或赋值号右边。
优先级仅仅大于赋值符号,(2+(1>2)?1:2--->2+(1>2)?1:2,此时问号前不为Boolean)
2、运算符优先级由高到低
() (小括号) >
单目运算符 取非、按位取反(从右向左)(++ -- - (类型)!~) >
算数运算符(从左向右)(+ - * / %) >
按位移动运算符(从右向左)( << >> >>> ) >
关系运算符(< > >= <= == !=) >
按位的与、异或、或(& ^ |) >
逻辑的与、异或、或(&& &、 ^ || |) >
三目运算符(从右向左)(?:)>
赋值运算符(从左向右)(+= -= *= /= %=)