目录
运算符与表达式的使用
运算符是指:对字面量或者变量进行操作的符号。
表达式是指:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式。
算术运算符
算术运算符包括:加(+)、减(-)、乘(*)、除(\)、取余(%)。
public class Main {
public static void main(String[] args) {
System.out.println(1+1); // 2
System.out.println(2-1); // 1
System.out.println(2*4); // 8
System.out.println(10/3); // 对整数进行相除,得到的还是整数
System.out.println(10%3); // 1
System.out.println(10.0/3); // 小数参与计算得到的结果可能不准确
}
}
当 ” + ” 操作中出现字符串时,这个 ” + ” 是字符串连接符,而不是算术运算符了,会将前后的数据进行拼接,并产生一个新的字符串。
public class Main {
public static void main(String[] args) {
// 当字符串和数字同时出现时,用 + 表示拼接
System.out.println("123"+123);
// 当连续出现多个 + 的操作时,且有字符串的话,会先进行算数运算,其次然后拼接
System.out.println(10+12+"123"); // 10+12=22 22与123拼接
}
}
字符 char 进行 + 的操作时,会把字符通过 ASCII 码表查询到对应的数字再进行计算。
public class Main {
public static void main(String[] args) {
// 对char进行+操作
char A = 'a'; // a在ASCII表中代表的是97
int B = 0;
System.out.println(A+B); // 97+0还是97
}
}
隐式转换与强制转换
数字进行运算时,数据类型不一样是不能进行运算的,需要转成相同类型才能继续运算。而这里需要借助隐式转换和强制转换。
隐式转换:也叫自动类型提升,把取值范围小的数值变成取值范围大的。
public class Main {
public static void main(String[] args) {
int a = 10;
double b = 3.0;
System.out.println(a+b); // 将数值小的int 转换成double并参与运算
// 注意:byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
byte x = 10;
byte y = 20;
System.out.println(x+y); // 将byte类型转换成int再进行运算
}
}
总结:
取值范围:
byte < short < int < long < float < double
转换时机:
数据类型不一样,不能进行运算,需要转成一样的才可以进行计算
转换规则:
取值范围小的和取值范围大的进行运算,小的会先提升为大的,再进行运算;byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
强制转换:把取值范围大的数值变成取值范围小的。
其格式如下:目标数据类型 变量名 = (目标数据类型)被强转的数据。
public class Main {
public static void main(String[] args) {
byte b1 = 12;
byte b2 = 24;
byte result = (byte)(b1+b2);
byte result1 = (byte)(b1*10+b2^10); // byte的取值范围为:-128~127
System.out.println(result);
System.out.println(result1); // 结果就发生错误了,因为要转换的数据过大。
}
}
自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 加 | 变量的值加1 |
— | 减 | 变量的值减1 |
++和–既可以放在变量的前面,也可以放在变量的后面;无论是放在前面还是后面,单独写一行结果都是一样的。
public class Main {
public static void main(String[] args) {
int a = 10;
a++;
System.out.println(a); // 11
++a;
System.out.println(a); // 12
a--;
System.out.println(a); // 11
--a;
System.out.println(a); // 10
}
}
当然前置++和–与后置++和–,在实际运算中是有一些区别的,一般后置用的比较多,如下:
public class Main {
public static void main(String[] args) {
int a = 10;
int b = a++; // 先用后加
System.out.println(a); // 11
System.out.println(b); // 10
int x = 10;
int y = ++x; // 先加后用
System.out.println(x); // 11
System.out.println(y); // 11
}
}
赋值运算符
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | int a = 10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a*b的值给a |
/= | 除后赋值 | a/=b,将a/b的商给a |
%= | 取余后赋值 | a%=b,将a/b的余数给a |
注意:扩展的赋值运算符隐含了强制的类型转换。
public class Main {
public static void main(String[] args) {
int a=10,b=20;
a+=b;
b/=a;
System.out.println(a); // a = a+b=30
System.out.println(b); // b = b / a = 2/3 = 0
}
}
关系运算符
关系运算符也叫比较运算符,其主要分类如下:
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int i = sc.nextInt();
System.out.println("请输入第二个整数:");
int j = sc.nextInt();
if(i>j){
System.out.println("相亲成功!");
}else{
System.out.println("相亲失败!");
}
}
}
逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与(且) | 并且,两边都为真,结果才为真 |
| | 逻辑或 | 或者,两边都为假,结果才为假 |
^ | 逻辑异或 | 相同为false,不同为true |
! | 逻辑非 | 取反 |
public class Main {
public static void main(String[] args) {
// 逻辑与
System.out.println(true & false); // false
System.out.println(true & true); // true
// 逻辑或
System.out.println(true | false); // true
System.out.println(false | false); // false
// 逻辑异或
System.out.println(true ^ true); // false
System.out.println(true ^ false); // true
// 逻辑非
System.out.println(!true); // false
System.out.println(!false); // true
}
}
两种特殊的逻辑运算符—短路运算符:
短路与:&&,结果与 & 相同,但有短路效果。
短路或:|| ,结果与 | 相同,但有短路效果。
短路运算符具有短路效果:当左边的表达式能确定最终结果,那么右边便不会再参与运行了
三元运算符
三元运算符也称三元表达式,类似于if-else的简写形式,其基本格式如下:
关系表达式 ? 表达式1 : 表达式2;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("第一个人的体重:");
int i = sc.nextInt();
System.out.println("第二个人的体重:");
int j = sc.nextInt();
String result = i == j ? "体重相同" : "体重不同";
System.out.println(result);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/139966.html