变量
- 数据类型
- 变量名
- 变量值
基本数据类型+引用数据类型
数值类型:byte 1字节,int 4字节,short 2字节,long 8字节,float 4字节,double 8字节
非数值类型:char 2字节,boolean 1/8字节(1bit)
数据转换类型
- 自动转换
Java可以自动对某些数据类型进行自动转换
规则:只能由低字节向高字节进行转换,反之不行。
特殊:char->int,不可以转byte
- 强制类型转换
一般来讲强制类型转换可能会造成精度损失
double num = 10.0;
int num2 = (int)num1;
运算符
- 赋值运算符
数据类型 变量名 = 数值/变量;
//1.创建变量记录张三体重
double weight1 = 70.5;
//2.创建变量记录李四体重
double weight2 = 60.5;
System.out.println("交换之前:张三体重为:"+weight1+",李四体重为:"+weight2);
System.out.println("体重交换");
double temp = weight1;
weight1 = weight2;
weight2 = temp;
System.out.println("交换之后:张三体重为:"+weight1+",李四体重为:"+weight2)
-
算术运算符
+,-,*,/,%,++,–
-
符复合算术运算符
+=,-=,*=,/=,%=
-
关系运算符
==,!=,>,<,>=,<=
-
逻辑运算符(对布尔型进行运算)
逻辑运算符只能⽤于 boolean 类型的数据运算,判断 boolean 数据之间的逻辑关系,与、或、⾮。 &(与)、|(或)、!(⾮)、&&(短路与)、||(短路或)
参与逻辑运算符的变量都是 boolean 的
变量1 & 变量2:只有当变量 1 和变量 2 都为 true,结果为 true,否则为 false。
变量1 | 变量2:变量 1 和变量 2 只要有⼀个为 true,结果为 true,否则为 false。
!变量1:若变量 1 为 true,结果为 false,若变量 1 为 false,结果为 true。
变量1 && 变量2:只有当变量 1 和变量 2 都为 true,结果为 true,否则为 false。
变量1 || 变量2:变量 1 和变量 2 只要有⼀个为 true,结果为 true,否则为 false。
特别的,短路与和短路非,当前者不满足条件时,直接返回值,不会进行接下来的判断
三目运算符
String str = 5>3?"5>3":"5!>3";
System.out.println(str);//输出5>3
位运算(对整数进行运算)
运算符 | 含义 | 实例 | 结果 |
---|---|---|---|
<< | 左移 | ||
>> | 右移 | ||
>>> | 无符号右移 | ||
& | 与运算 | 3&4 | 0 |
| | 或运算 | 3|4 | 7 |
^ | 异或运算 | 3^4 | 7 |
~ | 取反 | ~3 | -4 |
&按位与:两位同时为1才返1
|按位或:只要有一个1就返1
^按位异或:相同返0,不同返1
~按位非(取反):0变1,1变0
原码–>补码:取反,加1
补码–>原码:减1.取反
正数的补码与原码相同
负数在计算机里以补码形式存在
-
左移
操作数<<位数
将操作数左移指定位数
首先转为二进制,按位数左移,左边最高位丢弃,右边补齐0
左移一位即左边的数乘以2的1次方,以此类推
3<<2
3的二进制:
00000000 00000000 00000000 00000011
左移2位,左边最高位丢弃,右边补0
00000000 00000000 00000000 00001100
-
右移
操作数>>位数
将操作数右移指定位数
最高位是0,左边补齐0;最高位是1.左边补齐1
右移一位即左边操作数除以2的1次方,以此类推;负数转成补码右移,再转成原码
24>>2
24de二进制:
00000000 00000000 00000000 00011000
右移两位,最高时0,左边补0
00000000 00000000 00000000 00000110
-
无符号右移
操作数>>>位数
右移指定位数,统统补0
正数和右移操作一样;负数转成补码右移,移完变正数后直接进行二进制运算