1.基本数据类型转换
1)boolean不参与基本数据类型转换。
2)基本数据类型的精度排序
byte < short < char < int < long < float < double
3) 隐式数据类型的转换 [自动数据类型转换]
数据类型精度低的转换成数据类型高的这个过程就是隐式数据类型转化。
低👉高 隐式数据类型转换[自动数据类型转换]
4)显式数据类型转换 [强制数据类型转换]
数据类型精度高的转换成数据类型精度低的这个过程就是显式数据类型转换。
高👉低 显式数据类型转换[强制数据类型转换]
转换格式:
格式: 低数据类型 变量名称 = (低数据类型) 高[值/变量];
转换char与int
5)int 转换成 byte 特殊的
byte转换成int---隐式数据类型转换【自动数据类型转换】
int转换成byte---显式数据类型转换【强制数据类型转换】
1.当整数int转换成byte时,int取值正数超过byte范围以后,会从byte最小值向前推进计算。
2.当整数int转换成byte时,int取值负数超过byte范围以后,会从byte最大值向后推进计算。
2.Java中的运算符
2.1 赋值运算符 =
2.2 算术运算符
- +
数字 👉 加法
字符串 👉 拼接的作用
- - 数字 👉 减法
- * 数字 👉 乘法
- / 数字 👉 除法
- % 数字 👉 取余(取模)
- ++ 数字 👉 自增(自己+1)
- -- 数字 👉 自减(自己-1)
2.3 比较运算符
> | 大于 | 返回一个boolean(布尔值) |
< | 小于 | |
>= | 大于等于 | |
<= | 小于等于 | |
== | 等于 | |
!= | 不等于 |
2.4 逻辑运算符
操作符 | 描述 | 例子 |
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
{位运算符 | & ! ~ ^ >> << }
位运算符需要将数据转换成2进制【00101010】数据进行运算
掌握10进制转2进制 :短除法[笨] 8421码转化法
1024 512 256 128 64 32 16 8 4 2 1
7=4+2+1— 0 0 0 0 0 0 0 0 1 1 1 --- 00000111
13=8+4+1-- 0 0 0 0 0 0 0 1 1 0 1 --- 00001101
负数的2进制:实质上补码表示
正数的补码是本身
负数的补码是反码+1
反码的表示方法是:
正数的反码是其本身【原码】
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
原码就是符号位加上真值的绝对值,即用第一位表示符号, 其余位表示值.
-7--7的2进制--00000111--[-7的源码]10000111---[-7的反码]11111000--[-7的补码]11111001
操作符 | 描述 | 例子 |
---|---|---|
& | 按位与 相同1为1,不同为0 | (7 & -7) 0000 0111 (7二进制) 1111 1001 -7二进制反码 00000001 得 1 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 | (7 | -7) 0000 0111 1111 1001 1111 1111 (反码) 得 -1 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (7 ^ -7) 0000 0111 1111 1001 1111 1110 (反码) 得 -2 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜 - 7) 1111 1001 0000 0110 得到6 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | 7 << 2 0000 0111 0001 1100 得 28 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | 7 >> 2 0000 0111 0000 0001 得 1 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | 7 >>>2得到1 |
面试题:最有效率的方法算出2乘以8等於几? 2<<3; 表示2 向左移3位
2.5 三元运算符
格式:
【(判断)? 数据值1 :数据值2】
先判断,判断结果为true,整运算表达式的结果取数据值1
判断结果为false,整运算表达式的结果取数据值2
无奈源于不够强大