对于int 和long和double
这些不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围更大的类型,反之则不能。
对于int 与 boolean
boolean布尔型变量其值只有true与false,所以与int算是毫不相干的俩种类型,不能相互赋值。
对于int与byte
要注意byte表示的范围是-128~+127。
数值提升
假如int 与long俩个类型的变量做运算时,结果是long类型。若非要是int类型就要进行强制转换。
byte与byte short与short运算
对于这俩种比4字节小的类型,运算时会提升为4字节的int在运算。否则进行强制转换。因为在计算机的CPU里都是按4字节为单位进行运算。
int与String之间
int转String
int num=10;
//方法一
string str=num+"";
//方法二
String str2=String.valueof(num);
string转int
String str="100”;
int num=Integer.parsrint(str);
运算符
小案例 -10%3 结果为-1。
在Java中%运算可以对double进行。
在关系运算符里(+= -= == <= >=),左右表达式必须为Boolean类型。
在Java中&& || 遵循短路规则。
对于&&如果左表达式为false则整体表达式一定是false,右侧表达式无需计算。
对于||若左表达式为true右边无需计算。
对于&和|
如果操作数为boolean类型也表示逻辑运算,但是他们不支持短路求值。
对于移位操作符与C语言不同的是,Java中有无符号右移(>>>)最右侧不要了,最左侧补零
(肯定没有无符号左移操作符)
注意:
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
- 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
- 移动负数位或者移动位数过大都是没有意义的。