基本数据类型:
-
byte、short、int、long、float、double、char、boolean
四种整数类型(byte、short、int、long),两种浮点数类型(float、double),一种字符类型(char),一种布尔类型(boolean)
类型转换
1).自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
-
1. 不能对boolean类型进行类型转换。
-
2. 不能把对象类型转换成不相关类的对象。
-
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
4. 转换过程中可能导致溢出或损失精度
-
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
2).自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
3).强制类型转换
-
1. 条件是转换的数据类型必须是兼容的。
-
2. 格式:(type)value type是要强制类型转换后的数据类型
4).隐含强制类型转换
-
1. 整数的默认类型是 int。
-
2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
操作符:
运算符号:
针对数值变量的加、减、乘、除、取余的算术操作:
赋值运算符
与大部分编程语言相同,Java使用'='运算符来进行赋值操作。这种操作会将右边的计算结果(称为右值)赋给左边的变量。Java 中赋值运算符有:
关系运算符
用来比较两个变量数据的大小,返回boolean的值,即 true 或者 false
关系操作符包括:
关系运算符 | 关系 |
---|---|
> | 大于 |
< | 小于 |
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
'=='和'!='适用于所有类型的值和对象(即基本类型变量和引用类型变量)。
'>'、'<'、'>='和'<='不适用于布尔类型的值,因为它们只有true或false,大于和小于并无实际意义。
逻辑运算符:
逻辑运算符,顾名思义用于逻辑判断,运算的结果为boolean 类型的值,即 true 或者 false。逻辑匀运算符有
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
位运算符:
位运算符面向的运算对象是二进制的“位”,可应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型,运算时会将其对应Bit位(0或者是1)进行布尔代数运算或者移动操作。
位运算符 | 计算逻辑 |
---|---|
& | 与运算:对于某一位,只要两个操作数都为1,则该位的结果为1,否则为0 |
| | 或运算:对于某一位,只要一个操作数都为1,则该位的结果为1,否则为0 |
^ | 异或运算:对于某一位,如果两个操作数不相同,则该位的结果为1,否则为0 |
~ | 非运算:按位补运算符翻转操作数的每一位 |
<< | 二进制左移运算符:左操作数按位左移右操作数指定的位数 |
>> | 二进制右移运算符:左操作数按位右移右操作数指定的位数 |
>>> | 二进制右移补零操作符:左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 |
注意>>和>>>的区别:
右移位运算符>>,若操作的值为正,则在高位插入0;若值为负,则在高位插入1;
右移补零操作符>>>,无论正负,都在高位插入0。
> 位运算不理解,先跳过。实际用到的时候,可以再去研究。
运算符的优先级
运算符优先级决定一个表达式里术语的分组。它影响着一个表达式如何求值。一定的运算符比其他运算符拥有更高的优先级。