1.数据类型:
1.变量
基本类型 | 字节大小 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | 2 |
boolean | \ |
int a = 10;
long b = 20;
int c = a + b; // 编译出错, 提示将 long 转成 int 会丢失精度
long d = a + b; // 编译通过
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
// 编译报错
//Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失
// byte c = a + b;
// ^
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);
// 编译通过
1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.
2.字符串类型变量
//int 转成 String
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);
//String 转成 int
String str = "100";
int num = Integer.parseInt(str);
转义字符 | 解释 |
---|---|
\n | 换行 |
\t | 水平制表符 |
\’ | 单引号 |
\" | 双引号 |
\ | 反斜杠 |
字符串的 + 操作, 表示字符串拼接:
String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);
String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);
// 执行结果
result = 1020
2. 常量
1. 字面值常量
10 // int 字面值常量(十进制)
010 // int 字面值常量(八进制) 由数字 0 开头. 010 也就是十进制的 8
0x10 // int 字面值常量(十六进制) 由数字 0x 开头. 0x10 也就是十进制的 16
10L // long 字面值常量. 也可以写作 10l (小写的L)
1.0 // double 字面值常量. 也可以写作 1.0d 或者 1.0D
1.5e2 // double 字面值常量. 科学计数法表示. 相当于 1.5 * 10^2
1.0f // float 字面值常量, 也可以写作 1.0F
true // boolen 字面值常量, 同样的还有 false
'a' // char 字面值常量, 单引号中只能有一个字符
"abc" // String 字面值常量, 双引号中可以有多个字符.
2. final 关键字修饰的常量
final int a = 10;
a = 20; // 编译出错. 提示 无法为最终变量a分配值
2.运算符
2.1 算术运算符
基本四则运算符 + - * / %
2.2 关系运算符
== != < > <= >=
关系运算符的表达式返回值都是boolean 类型
2.3 逻辑运算符
逻辑运算符主要有三个:
&& || !
逻辑与 &&
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false.
逻辑或 ||
规则: 两个操作数都为 false, 结果为 false, 否则结果为 true
逻辑非 !
规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数).
短路求值
&& 和 || 遵守短路求值的规则
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
- 对于 && , 如果左侧表达式值为false, 则表达式的整体的值一定是 false, 无需计算右侧表达式
- 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.
2.4 位运算符
1.按位与 &
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
2.按位或 |:
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.
3.按位取反 ~
如果该位为 0 则转为 1, 如果该位为 1 则转为 0
4.按位异或 ^:
如果两个数字的二进制位相同, 则结果为 0,相异则为1
2.5 移位运算
左移 <<: 最左侧位不要了, 最右侧补 0
右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
无符号右移 >>>: 最右侧位不要了, 最左侧补 0
2.6 条件运算符
条件运算符只有一个:
表达式1 ? 表达式2 : 表达式3
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;