运算符是一些特殊的符号,主要用于数学函数,一些类型的赋值语句和逻辑比较方面。Java中提供了丰富的运算符,如,赋值运算符、算术运算符、比较运算符、逻辑运算符 、三元运算符等。
1.2 赋值运算符| 操作符 | 描述 | 例子 |
|---|---|---|
| = | 将右侧表达式的值赋给左侧表达式 | C = A + B;将把A + B得到的值赋给C |
| + = | 它把左操作数和右操作数相加赋值给左操作数 | C + = A 等价于 C = C + A |
| - = | 它把左操作数和右操作数相减赋值给左操作数 | C - = A 等价于 C = C - A |
| * = | 它把左操作数和右操作数相乘赋值给左操作数 | C * = A 等价于 C = C * A |
| / = | 它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
package com.operator.demo;
public class Operator01 {
public static void main(String[] args) {
//声明int的类型的变量 a b c 并初始化赋值
int a = 10;
int b = 20;
int c=0; // 赋值为0为了方便演示。
c = a+b;
System.out.println("c=a+b "+c);
c+=a; // c=c+a
System.out.println("c+=a "+c);
c-=a; // c=c-a 思考? 为什么结果是30 不是20?
System.out.println("c-=a "+c);
c*=a;//c=c*a
System.out.println("c*=a "+c);
c/=a;// c= c÷a
System.out.println("c/=a "+c);
}
}
输出结果:
c=a+b 30 c+=a 40 c-=a 30 c*=a 300 c/=a 30
说明:
代码的执行顺序是 由上向下的,所以上述变量int c 会一直在改变直到结束。在java中也可以把赋值运算符连在一起写 x=y=z=5; 但是不建议这样的写法。 1.3 算术运算符
在Java中算术运算符的作用和数学中几乎一致,假设下列 A 为 10 B 为 20。
| 操作符 | 描述 | 例子 |
|---|---|---|
| + | 相加运算符两侧的值 | A + B 等于 30 |
| - | 左操作数减去右操作数 | A – B 等于 -10 |
| * | 相乘操作符两侧的值 | A * B等于200 |
| / | 左操作数除以右操作数 | B / A等于2 |
| % | 模(取余) - 左操作数除以右操作数的余数 | B%A等于0 |
| ++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
| – | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
public class Operator02 {
public static void main(String[] args) {
//声明两个操作变量 int double
double number1= 50.5;
int number2=5;
// + - * / 加 减 乘 除
System.out.println(" + 运算符结果 "+(number1+number2));
System.out.println(" - 运算符结果 "+(number1-number2));
System.out.println(" * 运算符结果 "+(number1*number2));
System.out.println(" / 运算符结果 "+(number1/number2));
// % 模,取余计算 商为整数,小数余数自然落下 为0.5
System.out.println(" % 运算符结果 "+(number1%number2));
}
}
输出结果:
+ 运算符结果 5.5 - 运算符结果 -4.5 * 运算符结果 2.5 / 运算符结果 0.1 % 运算符结果 0.5
自增(++)自减(–)运算符是一种特殊的算术运算符,自增自减运算符只需要一个操作数。可以放在操作数前之前,也可以放在操作数之后,操作数必须是一个 整数或者浮点型变量,。放在操作数前面的自增或自减,先会将变量的值加1(减1),然后再使该变量参与表达式运算,放在操作数后面的自增或者自减,先使表达式参与运算,然后再改变变量 加1(减1)。
说明:
++a(--a) // 表示在使用变量a之前,先使用a的值加(减)1 a++(a--) // 表示在使用变量a之后,使a的值加(减)1
粗略的分析++a,与 a++的作用都相当于a=a+1 。
假设a=4,则:
b=++a; // 先将a的值加1,然后赋给b, 此时a值为5,b值为5;
在看另一个语法,同样假设 a=4;
b=a++; //先将a的值赋给b,在将a的值变为5,此时a值为5,b值为4;1.3.1 自增自减小练习
public class Operator03 {
public static void main(String[] args) {
int a = 5;
int b = 5;
int c=0;
c=++a;
System.out.println(c);
c=b++;
System.out.println(c);
System.out.println(b);
--b; // b为5
System.out.println(a); // 由于 c=++a; // a的值为6
c = a+b;
System.out.println(c);
}
}
输出结果:
6 5 6 6 111.4 比较运算符
比较运算符的运算结果是boolean型。当运算符关系成立时比较结果是true,反之,为false。一般比较运算符通常在条件语句中,来作为判断的依据。
假设变量A=10;变量B=20;
| 运算符 | 描述 | 例子 |
|---|---|---|
| == | 检查如果两个操作数的值是否相等,如果相等,则条件为真。 | (A == B)为假 |
| != | 检查如果两个操作数的值是否相等,如果值不相等,则条件为真 | (A != B) 为真 |
| > | 检查左操作数的值是否大于右操作数的值,如果是,那么条件为真。 | (A> B)为假 |
| < | 检查左操作数的值是否小于右操作数的值,如果是,那么条件为真。 | (A |
| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是,那么条件为真。 | (A> = B)为假 |
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是,那么条件为真。 | (A <= B)为真 |
public class Operator04 {
public static void main(String[] args) {
// 声明两个相同类型的变量
int number01 =4;
int number02 =5;
System.out.println("number01 > number02的返回值为:"+(number01>number02));
System.out.println("number01 < number02的返回值为:"+(number01 number02的返回值为:"+(number01>=number02));
System.out.println("number01 > number02的返回值为:"+(number01<=number02));
System.out.println("number01 != number02的返回值为:"+(number01!=number02));
System.out.println("number01 == number02的返回值为:"+(number01==number02));
}
}
输出结果:
number01 > number02的返回值为:false number01 < number02的返回值为:true number01 > number02的返回值为:false number01 > number02的返回值为:true number01 !=number02的返回值为:true number01 !=number02的返回值为:false1.5 逻辑运算符
返回的是布尔类型的表达式 boolean ,可以和 比较运算符组成更复杂的表达式。这是通过逻辑运算符来实现的。
假设
布尔变量A为真,变量B为假, boolean a = true; boolean b = false;
| 操作符 | 描述 | 例子 |
|---|---|---|
| & | 逻辑与。并且的意思,当且仅当两个操作数都为真,条件才为真 | (A & B)为假。 |
| && | 短路与。只要两边有一个为false,就停止执行,结果就为false | (A && B)为假。 |
| l | 逻辑或。或者的意思,如果任何两个操作数任何一个为真,条件为真。 | (A l B)为真。 |
| ll | 短路或。如果两边有一个结果为true,就不用判断另一个,结果为true | (A ll B)为真。 |
| ! | 逻辑非。用来反转操作数的逻辑状态。非真即假,非假即真 | !(A && B)为真。 |
思考:
&& 与 & ,短路与和逻辑与, || 与 | ,短路或和逻辑或有什么不同?
public class Operator05 {
public static void main(String[] args) {
int number01 =3;
int number02 =4;
int number03 =5;
System.out.println((number01>number02)&&(number03>number02));
System.out.println((number01>number02)&(number03>number02));
System.out.println((number01>number02)|(number03>number02));
System.out.println((number01>number02)||(number03>number02));
System.out.println(!(number01>number02));
}
}
输出结果:
false false true true true1.6 三元运算符
三元运算符又成条件运算符,或者三目运算符,三元运算符规则为:
若条件式的值为ture,则整个表达式取值为1, 否则取值为 2
条件式 ? 值 1: 值 2
boolean a = 40<20?true:false; int b = 50>25?12:13; String c = 89>88?"你好中国":"Hello China";
输出结果:
false 12 你好中国2 算术运算符的优先级
算术运算符的优先级决定了表达式中运算执行的先后顺序,通常优先级由高到低的顺序依次是:
[√ ] 自增和自减[√ ] 算术运算符[√ ] 比较运算符[√ ] 逻辑运算符[√ ] 赋值运算符
说明:
不用刻意的记运算优先级,在编写程序时尽量使用 括号() 运算符来限定运算次序,以免产生错误运算顺序。
需求:键盘自定义接受,语文,数学,Java成绩,求三科平均成绩? 求数学和java哪个成绩好?
public class OperatorAvg {
public static void main(String[] args) {
// 1 键盘接收三科成绩
System.out.println("请输入语文成绩: ");
double yuwen = new Scanner(System.in).nextDouble();
System.out.println("请输入数学成绩: ");
double shuxue = new Scanner(System.in).nextDouble();
System.out.println("请输入java成绩: ");
double java = new Scanner(System.in).nextDouble();
//2 定义平均分数
double avg = (yuwen+shuxue+java)/3;
System.out.println("三科的平均成绩: "+avg);
//3 哪个分数高 前提数学跟java不相等
String result = (shuxue-java)>0?"数学成绩好":"java成绩好";
System.out.println(result);
}
}
3.1 幸运抽奖
需求: 键盘接受一个4位数字,以1开头随机4位数字,并分别求出个位,十位,百位,千位数,并求和,如果和大于等于20 ,就提示幸运会日,否则,提示非幸运会日;
import java.util.Scanner;
public class GoodLucks {
public static void main(String[] args) {
System.out.println("请输入您的4位会员卡号:");
int cardNumber; // 会员卡号 假设有4位 1234
cardNumber = new Scanner(System.in).nextInt();
// 求会员卡个位卡号
int geiwei = cardNumber%10; //分解获得个位
System.out.println("geiwei:"+geiwei);
// 怎么拿到十位? 分解4位数,去掉个位在取十位
int shiwei =cardNumber/10%10;
System.out.println("shiwei: "+shiwei);
// 怎么拿到百位? 去掉个位和十位
int baiwei = cardNumber/100%10;
System.out.println("baiwei: "+baiwei);
// 拿到千位 去掉个 十 百位
int qianwei = cardNumber/1000;
System.out.println("qianwei: "+qianwei);
//提示结果
String result = (geiwei+shiwei+baiwei+qianwei)>=20?"幸运会员":"不是幸运会员";
System.out.println(result);
}
}
输出结果:
请输入您的4位会员卡号: 1234 geiwei:4 shiwei: 3 baiwei: 2 qianwei: 1 不是幸运会员



