在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度。现在将跟着视频做的笔记进行整理。本篇博客是整理Java知识点的第二篇博客。
本篇博客介绍关于Java的运算符相关内容。
本系列博客所有Java代码都使用IntelliJ IDEA编译运行,版本为2022.1。所用JDK版本为JDK11。
目录
运算符
算数运算符
字符的+操作
字符串的+操作
赋值运算符
自增自减运算符
关系运算符
逻辑运算符
短路逻辑运算符
三元运算符
运算符
运算符是对常量或者变量进行操作的符号,用运算符把常量或变量连接起来组成的符合Java语法的式子就称为表达式。
算数运算符
+表示加法,如10 + 5的结果是15。-表示减法,如10 - 5的结果是5。
*表示乘法,如10 * 5的结果是50。/表示除法,如10 / 5的结果是2。
%表示取余数,如10 % 3的结果是1。
两个整数相除得到整数,如果两个整数相除除不尽,会舍去小数部分,不四舍五入。被除数和除数中至少有一个为小数才能得到小数。
除数不能是0。
public class calculate {
public static void main(String[] args){
int a = 6;
int b = 4;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
double m = 6.6;
double n = 4.4;
System.out.println(m + n);
System.out.println(m - n);
System.out.println(m * n);
System.out.println(m / n);
}
}
这段代码的结果是:
10
2
24
1
2
11.0
2.1999999999999993
29.04
1.4999999999999998
字符的+操作
字符的+操作用字符对应的码值进行计算。
算术表达式包含多个基本数据类型时,整个算数表达式的类型自动提升。
public class add1 {
public static void main(String[] args){
int a = 10;
char b = 'a';
System.out.println(a+b);
b = 'A';
System.out.println(a+b);
}
}
第一行输出107,第二行输出75。
字符串的+操作
+操作运算符两边出现字符串时,+表示字符串连接。+两侧出现字符串进行连接,否则就是算数运算,多个+号从左到右依次进行。
public class add2 {
public static void main(String[] args){
System.out.println("Java" + 666);
System.out.println(666 + "Java");
System.out.println("hello " + "world");
System.out.println(2020 + 2 + "year");
System.out.println("yes" + 202 + 2);
}
}
输出结果为:
Java666
666Java
hello world
2022year
yes2022
赋值运算符
=表示赋值,执行a = 10后a的值为10。
+=表示加等于,a += b相当于a = a + b。-=表示减等于,a -= b相当于a = a - b。
*=表示乘等于,a *= b相当于a = a * b。/=表示除等于,a /= b相当于a = a / b。
%=表示模等于,a %= b相当于a = a % b。
扩展的赋值运算符隐含了强制类型转换。
public class assign {
public static void main(String[] args){
byte bit = 1;
bit -= 1;
System.out.println("bit = "+bit);
bit=(byte)(bit+1);
System.out.println("bit = "+bit);
int num = 1;
num = 10;
System.out.println("num ="+num);
num += 5;
System.out.println("num ="+num);
num -= 3;
System.out.println("num ="+num);
num *=6;
System.out.println("num ="+num);
num/=4;
System.out.println("num ="+num);
}
}
第一行输出bit = 0,第二行输出bit = 1。对程序中byte类型数据bit而言,直接用扩展的赋值运算符会隐含强制类型转换。而用算数运算符则需要强制类型转换,因为发生了类型抬升。short和float同理。
后5行输出num的值分别为10,15,12,72,18。
自增自减运算符
++是自增运算符,会使变量的值+1。--是自减运算符,会使变量的值-1。
++和--既可以放在变量前面,也可以放在变量后面。单独使用时前置++和后置++效果一样,都是值+1,前置--和后置--效果一样,都是值-1。
如果是前置,会先将变量进行+1(或-1),然后将变量的值作为表达式的结果。如果是后置,会先将变量的值作为表达式的结果,再将变量进行+1(或-1)。
public class change {
public static void main(String[] args){
int n = 10;
n++;
System.out.println("n = " + n);
n = 10;
++n;
System.out.println("n = " + n);
int m;
n = 10;
m = n++;
System.out.println("m = " + m +" n = "+ n);
n = 10;
m = ++n;
System.out.println("m = " + m +" n = "+ n);
}
}
这段代码的输出结果是:
n = 11
n = 11
m = 10 n = 11
m = 11 n = 11
关系运算符
==是等于,判断两侧值是否相等。!=是不等于,判断两侧值是否不相等。>是大于,>=是大于等于,<是小于,<=是小于等于。
关系运算符的结果是boolean类型,关系成立返回true,不成立返回false。
不要混淆==和=
public class compare {
public static void main(String[] args){
int a = 10;
int b = 20;
int c = 10;
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a != b);
System.out.println(a != c);
System.out.println(a > b);
System.out.println(a > c);
System.out.println(a < b);
System.out.println(a < c);
}
}
输出结果分别是:
false
true
true
false
false
false
true
false
逻辑运算符
&是逻辑与,对于a&b,只有a和b都是true时,结果为true,否则为false(同真为真,遇假则假)。
|是逻辑或,对于a|b,只有a和b都是false时,结果为false,否则为true(同假为假,遇真则真)。
^是逻辑异或,对于a^b,当a和b一个是false,一个是true时,结果为true,a和b都是true或都是false时,结果为false(同取假,不同取真)。
!是逻辑非,对于!a,当a为true时,结果为false,当a为false时,结果为true。
public class logic1 {
public static void main(String[] args){
int a = 10;
int b = 15;
int c = 20;
System.out.println((a < b) & (a < c));
System.out.println((a > b) & (a < c));
System.out.println((a < b) & (a > c));
System.out.println((a > b) & (a > c));
System.out.println((a < b) | (a < c));
System.out.println((a > b) | (a < c));
System.out.println((a < b) | (a > c));
System.out.println((a > b) | (a > c));
System.out.println((a < b) ^ (a < c));
System.out.println((a > b) ^ (a < c));
System.out.println((a < b) ^ (a > c));
System.out.println((a > b) ^ (a > c));
System.out.println((a < b));
System.out.println(!(a < b));
System.out.println((a > b));
System.out.println(!(a > b));
}
}
运行结果是:(为了便于显示,每4个结果换行一次)
true false false false
true true true false
false true true false
true false false true
短路逻辑运算符
&&是短路与,作用与&相同,但是会发生短路。
||是短路或,作用与|相同,但是会发生短路。
对于逻辑与&,不管左侧结果是真假,右侧都要执行。对于短路与&&,如果左侧为真,右侧执行,但是如果左侧为假(此时整个表达式的结果已经能确定为假),则右侧不执行。
对于逻辑或|,不管左侧结果是真假,右侧都要执行。对于短路或||,如果左侧为假,右侧执行,但是如果左侧为真(此时整个表达式的结果已经能确定为真),则右侧不执行。
常用的逻辑运算符是&&,||和!。
public class logic2 {
public static void main(String[] args){
int a = 10;
int b = 15;
int c = 20;
System.out.println((a < b) && (a < c));
System.out.println((a > b) && (a < c));
System.out.println((a < b) && (a > c));
System.out.println((a > b) && (a > c));
System.out.println((a < b) || (a < c));
System.out.println((a > b) || (a < c));
System.out.println((a < b) || (a > c));
System.out.println((a > b) || (a > c));
int m = 5;
int n = 10;
System.out.println(((m += 5) > 10)&(n += 5 ) > 10);
System.out.println("m = " + m + " n = " + n);
m = 5;
n = 10;
System.out.println(((m += 5) > 10)&&(n += 5 ) > 10);
System.out.println("m = " + m + " n = " + n);
m = 5;
n = 10;
System.out.println(((m += 5) > 5)|(n += 5 ) > 10);
System.out.println("m = " + m + " n = " + n);
m = 5;
n = 10;
System.out.println(((m += 5) > 5)||(n += 5 ) > 10);
System.out.println("m = " + m + " n = " + n);
}
}
对于前八个表达式,结果分别为:
true false false false
true true true false
结果和上面一个例子的前八个结果一样(数值一样,只是&和|分别变成了&&和||)。
后面的结果是:
false
m = 10 n = 15
false
m = 10 n = 10
true
m = 10 n = 15
true
m = 10 n = 10
三元运算符
三元运算符的格式是:关系表达式?表达式1:表达式2
先计算关系表达式的值,为true则表达式1的值为最终结果,为false则表达式2的值为最终结果。
public class three {
public static void main(String[] args){
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
System.out.println("max = " + max);
}
}
输出结果为max = 20,实际求a和b的最大值。



