1. 类型转换
在 Java 中存在自动数据类型转换和强制数据类型转换。
-
自动数据类型转换:取值范围小的类型可以自动转换为取值范围大的类型
double num = 10;
-
强制数据类型转换:取值范围大的类型无法直接转换为取值范围小的类型
- 可以帮助我们实现取整的效果
int num = (int)10.5
类型转换也不是万能的,Java 前期可以转换的就是 byte、short、int、long、float、double、char这些。
自动转换例如:
byte b = 10;
int num = b;
强制转换例如:
int num = 10;
byte b = num;
字符的秘密
// 自动类型转换
char alpha = 'a';
int num = alpha;
System.out.println("num:" + num); // 97
// 强制类型转换
int num1 = 99;
char alpha1 = (char) num1;
System.out.println("alpha1:" + alpha1); // c
它们的转换遵循了相应的码表,例如:ASCII码表。a是97、A是65…
2. 赋值运算符
=
号在各种编程语言中,不再表示相等,而是表示赋值。
只有极个别的语言,=号又表示赋值,又表示相等。
// 读法:将数字10赋值给变量num
// 将等号右侧的赋值给等号左侧的
int num = 10;
// 变量和变量之间的赋值
// 将num的值赋值给变量num2
int num2 = num;
3. 算术运算符
+ 加法
- 减法
* 乘法
/ 除法
% 取余数
++ 自增
-- 自减
四则运算
int num1 = 11;
int num2 = 2;
System.out.println(num1 / num2); // 5
在 Java 中进行数学计算时,有时候会出现与传统数学观念不符的情况,例如: 11 / 2
应该等于 5.5,但结果为 5。
是由于 11 和 2 都是整数,那么在计算的时候,对于结果的类型也是采用整数。(在计算的时候,计算结果的类型是由计算的值中取值范围最大的类型)
如果真的想得到 5.5,需要如下做:
int num1 = 11;
int num2 = 2;
System.out.println(num1 * 1.0 / num2); // 5.5
自增和自减
++ 自增1
– 自减1
int num1 = 10;
// ++ num1;
// num1 ++; 抽象理解为: num1 = num1 + 1
// num1 --;
-- num1; // 抽象理解为:num1 = num1 - 1
// System.out.println(num1); // 11
System.out.println(num1); // 9
当 ++ 和 – 在单独使用时,效果上没有任何区别。
但是当 ++ 和 – 在被使用或参与计算时,效果上有不同。
- 前
++
:在使用时会先对变量自增1,然后再使用变量 - 后
++
:在使用时会先使用变量,然后再对变量自增1
int num1 = 10;
// int num2 = num1 ++ - 2;
// System.out.println(num1 ++); // 10
// System.out.println(num1); // 11
System.out.println(++ num1); // 11
System.out.println(num1); // 11
字符的秘密
字符是可以和数值转换的。
char alpha1 = 'a';
alpha1 ++; // 理解为:alpha1 = alpha1 + 1
System.out.println(alpha1); // b
char alpha2 = 'b';
// 在计算时,结果的类型是取值范围大的类型
System.out.println(alpha2 + 1); // 99
4. 复合赋值运算符
+=
-=
*=
/=
%=
int num1 = 10;
num1 += 2; // 理解为: num1 = num1 + 2
System.out.println(num1); // 12
int num2 = 12;
num2 -= 3; // 理解为:num2 = num2 - 3
System.out.println(num2); // 9
以后可以利用 += 和 -= 做累加运算。
例如:求1到10的和。
int num = 1;
num += 2; // num = num1 + 2
num += 3; //
num += 4;
…
5. 关系运算符
比较运算符,可以用来做判断,比较运算符的计算结果是 布尔类型 值。
true(真) 和 false(假)
- >
<
>=
<=
==
相等!=
不相等
=号代表赋值,==才代表相等。
6. 逻辑运算符
&&
短路与,并且||
短路或,或者!
非,取反
// System.out.println(!true);
// System.out.println(!false);
double javaScore = 59;
// 判断是否>=60
System.out.println(javaScore >= 60);
// 判断是否<60
System.out.println(javaScore < 60);
System.out.println(!(javaScore >= 60));
短路
// 将数字7赋值给变量num1
int num1 = 7;
// 右边在做逻辑运算
// false && true
boolean flag2 = false && (++ num1 == 8);
System.out.println(flag2); // false
System.out.println(num1); // 7
短路与和短路或,代表的是如果前面的条件能够得到最终结果,那么后面的条件就不再进行了!
false && true
只要有一个为false,结果就为false- 面试要求你学历本科,经验5年以上
true || false
只要有一个为true,结果就为true
还有一个 & 和 | 也可以表示逻辑关系,但是一般不用,因为它们无论是否能从前面条件得到最终结果,都要对所有条件进行计算。
所以 && 和 || 可以优化程序执行性能。
7. 三元运算符
Scanner scan = new Scanner(System.in);
System.out.print("请输入您的年龄:");
int age = scan.nextInt();
String result = (age >= 18) ? "快来玩啊!" : "小屁孩给爷爪巴!";
System.out.println(result);