提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、运算符是什么?
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
二、运算符的分类
1.算术运算符 2.赋值运算符 3.比较运算符(关系运算符) 4.逻辑运算符
5.位运算符 6.三元运算符
三、运算符的使用
1.算术运算符:
①除运算(/):
class ProgrammingTest{
public static void main(String[] rags){
int num1 = 12;
int num2 = 5;
int result1 = num1 / num2;
System.out.println(result1);//输出2
double result4 = (double)(num1 / num2);//输出2.0
double result2 = (num1 + 0.0)/num2;
System.out.println(result2);//输出2.4,num1或num2加0.0皆可
double result3 = (double)num1 / num2;
System.out.println(result3);//输出2.4,num1或num2强制类型转换double皆可
}
}
②取余或取模运算(%):
结果的符号与被模数的符号相同:
class ProgrammingTest{
public static void main(String[] rags){
int m1 = 12;
int n1 = 5;
System.out.println("m1 % m1 = " + m1 % n1);//2
int m2 = -12;
int n2 = 5;
System.out.println("m2 % n2 = " + m2 % n2);//-2
int m3 = 12;
int n3 = -5;
System.out.println("m3 % n3 = " + m3 % n3);//2
int m4 = -12;
int n4 = -5;
System.out.println("m4 % n4 = " + m4 % n4);//-2
}
}
③(前)++:先自增1,后运算;(后)++:先运算,后自增1
(前)--:先自减1,后运算;(后)--:先运算,后自减1
自增1和自减1不会改变本身变量的数据类型
class ProgrammingTest{
public static void main(String[] rags){
int a = 5;
int b = ++a;
System.out.println("a = " + a + "b = " + b);//a = 6 b = 6
/*byte b1 = 7;
b1 = b1 + 1; 编译失败,需声明b1为int
b1++; 编译通过*/
int c = 8;
int d = c++;
System.out.println("c = " + c + "d = " + d);//c = 9 d = 8
}
2.赋值运算符:
有= += -= *= /= %=
class SetValueTest{
public static void main(String[] rags){
//赋值符号:=
int i1 = 10;
int j1 = 10;
int i2,j2;
i2 = j2= 20;//连续赋值
int i3 = 30,j3 = 30;
//*********************************
int num1 = 10;
num1 += 2;//num1 = num1 + 2;
System.out.println(num1);//输出12
int num2 = 17;
num2 %= 5;//num2 = num2 % 5;
System.out.println(num2);//输出为2
short s1 = 10;
s1 = s1 + 1;//编译失败
s1 += 1;//不会改变变量本身的数据类型
}
}
3.比较运算符:
比较运算符的结果都是boolean型,只能是true或false
> < >= <=只能在数值的数据类型之间
"="不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间
class CompareTest{
public static void main(String[] rags){
int i = 10;
int j = 20;
System.out.println(i == j);//false
System.out.println(i = j);//20
boolean b1 = true;
boolean b2 = false;
System.out.println(b2 == b1);//false
System.out.println(b2 = b1);//true
}
}
4.逻辑运算符:
&-逻辑与 &&--短路与 、 |--逻辑或 ||--短路或 、 !--逻辑非 ^--逻辑异或
逻辑运算符操作的都是boolean类型的变量
①逻辑与(&)与短路与(&&):
相同点:1. &与&&的运算结果相同 2.当符号左边是true时,都会执行右边的运算
不同点:当符号左边是false时,&继续执行右边的运算,&&不再执行右边的运算
开发中,推荐使用&&
class LogicTest{
public static void main(String[] rags){
/*boolean b1 = true;
int num1 = 10;
if(b1 & (num1++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num1 = " + num1);
boolean b2 = true;
int num2 = 10;
if(b2 && (num2++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num2 = " + num2);
结果输出为:我现在在深圳
num1 = 11
我现在在深圳
num1 = 11*/
boolean b1 = false;
int num1 = 10;
if(b1 & (num1++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num1 = " + num1);
boolean b2 = false;
int num2 = 10;
if(b2 && (num2++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num2 = " + num2);
//结果输出为:我现在在广州
// num1 = 11
// 我现在在广州
//num1 = 10
}
}
② 逻辑或(|)和短路或(||):
相同点:1. | 与 || 的运算结果相同 2. 当符号左边是false时,二者都会执行符号右边的运算
不同点:当符号左边是true时, | 会执行符号右边的运算, || 不再执行符号右边的运算
开发中推荐使用 ||
class LogicTest{
public static void main(String[] args){
/*boolean b1 = false;
int num1 = 10;
if(b1 | (num1++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num1 = " + num1);
boolean b2 = false;
int num2 = 10;
if(b2 || (num2++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num2 = " + num2);*/
//输出:我现在在深圳
//num1 = 11
//我现在在深圳
//num2 = 11
boolean b1 = true;
int num1 = 10;
if(b1 | (num1++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num1 = " + num1);
boolean b2 = true;
int num2 = 10;
if(b2 || (num2++ > 0)){
System.out.println("我现在在深圳");
}else{
System.out.println("我现在在广州");
}
System.out.println("num2 = " + num2);
/*输出:我现在在深圳
num1 = 11
我现在在深圳
num2 = 10*/
}
}
5.位运算符
<< : 左移运算符 >> : 右移运算符 >>> :无符号右移(被移位二进制最高位无论是0或者是1,空缺位都用0补) & :与运算 |:或运算 ^ : 异或运算 ~ :取反运算
结论:
1.位运算符操作的都是整形的数据
2. << : 在一定范围内,每向左移一位,相当于 *2
>> :在一定范围内,每向右移一位,相当于 / 2
class BitTest{
public static void main(String[] rags){
int i1 = 22;
System.out.println("i1 << 2 = " + (i1 << 2));//88
System.out.println("i1 >> 1 = " + (i1 >> 1));//11
}
}
6.三元运算符:
结构:(条件表达式)?表达式1 : :表达式2
说明:①条件表达式的结果为boolean类型;
②根据条件表达式的真假,决定表达式1还是表达式2。如果表达式结果为true,则执行表达式1,如果表达式结果为false,则执行表达式2;
③表达式1和表达式2要求是一致的;
④三元运算符是可以嵌套的。
class SanYuanTest{
public static void main(String[] rags){
int num1,num2;
num1 = 10;
num2 = 12;
//int max = (num1 > num2)? num1 : num2;
//System.out.println("最大的数为 = " + max);
//存在相等大小的情况
/*num2 = 10;
String maxStr = (num1 > num2)? "num1大" : ((num1 == num2)? "num1和num2相等" : "num2大");
System.out.println(maxStr);输出为num1和num2相等*/
int num3 = -10;
int max1 = (num1 > num2)? num1 : num2;
int max2 = (max1 > num3)? max1 : num3;
System.out.println("三个数之间最大的是:" + max2);
}
}
总结
这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了每个运算符的使用。