1.赋值运算符
在编程语言中将“=”看做是赋值符号,"=="才是等号的正确表达。
变量 = 表达式(将表达式赋值给变量)
package com.bdqn.demo04;
public class Demo01 {
public static void main(String[] args) {
// 表达式:一些运算符(+,- ,*,/)和操作数(变量,具体的数据)的结合
// 赋值运算符=:变量=表达式
int num1 = 100;
int a = 10;
int b = 20;
int sum = a + b;
}
}```
**实例**
实例:如何借助变量以及赋值运算符实现两个数据的交换?
```java
package com.bdqn.demo04;
public class Demo03 {
public static void main(String[] args) {
//数据交换
int num1=100;
int num2=200;
System.out.println("交换前:");
System.out.println("sum1="+num1);
System.out.println("sum2="+num2);
//使用第三个变量来实现交换
int num3 = num1;
num1 = num2;
num2 = num3;
System.out.println("交换后:");
System.out.println("sum1="+num1);
System.out.println("sum2="+num2);
}
}
2.算数运算符
1.基本运算符:+,-,*,/(除法运算符,取整),%(取余运算符),–,++。
num1/num2 取商:5/2=2;
num1%num2 取余数:5%2=1
实例
实例:键盘输入四位数字的会员卡号,使用“/”和“%”运算符分解获得会员卡各个位上的数字,将各个位上数字求和。
package com.bdqn.demo04;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
// 求解各位数并求和
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入4位数会员卡号:");
int card = sc.nextInt();
System.out.println("会员卡号为:" + card);
System.out.println("千分位:" + (card / 1000));
System.out.println("百分位:" + (card % 1000 / 100));
System.out.println("十分位:" + (card % 1000 % 100 / 10));
System.out.println("各分位:" + (card % 10));
int sum = (card / 1000) + (card % 1000 / 100)
+ (card % 1000 % 100 / 10) + (card % 10);
System.out.println("各位数之和:" + sum);
}
}
++/–(自增/自减)
对于单独变量a++和++a来说是没有区别的,a的值最终都加一,a–和–a运算也是如此:
int a=10;
System.out.println("a="+a);
a++;
System.out.println("a="+a);
//--自减
int b=10;
System.out.println("b="+b);
b--;
System.out.println("b="+b);
如果a++和++a参与运算则运算结果不同,
a++先用a的值在加一,++a是先加一再用a的值(先用再加,先加再用)。
//先运算在加一
int m=100;
System.out.println("m="+m);
int n = m++;
System.out.println("m="+m);
System.out.println("n="+n);
//现加一在运算
int k=100;
System.out.println("k="+k);
int r = ++k;
System.out.println("k="+k);
System.out.println("r="+r);
2.复合运算符:复合运算符:+=,-=,*=,/=,%=。
int a = 100;
//a=a+200;
a+=200;
System.out.println("a="+a);//300
a-=100;//a=a-100
System.out.println("a="+a);//200
a*=3;//a=a*3
System.out.println("a="+a);//600
a/=7;//a=a/7
System.out.println("a="+a);//85
a%=7;//a=a%7
System.out.println("a="+a);//1
3.关系运算符
关系运算符:>,>=,<,<=,==,!=
关系运算符的结果是布尔值,要么是true,要么是false
运算符 >,>=,<,<=的优先级高于= =,!=
运算符 >,>=,<,<=只支持数值类型的数据比较
4.逻辑运算符
逻辑运算符:&(单与) &&(双与)|(单或)||(短路或)!(非)
参与逻辑运算的表达式需要是boolean类型
逻辑运算的结果是布尔值,true或false
&(单与) &&(双与):
int a=100;
int b=200;
//true & true
//true && true
boolean result1=a<b & b>a;
System.out.println(result1);
System.out.println("true&true:"+(true&true));
System.out.println("true&&true:"+(true&&true));
//true & false
//true && false
System.out.println("true&false:"+(true&false));
System.out.println("true&&false:"+(true&&false));
//false & false
//false && false
System.out.println("false&false:"+(false&false));
System.out.println("false&&false:"+(false&&false));
结果显示:只有两边都是true时才能显示正确,不管哪一边有一个false都是错的。
|(单或)||(短路或):
int a=100;
int b=200;
//true | true
//true || true
boolean result1=a<b | b>a;
System.out.println(result1);
System.out.println("true|true:"+(true|true));
System.out.println("true||true:"+(true||true));
//true | false
//true || false
System.out.println("true|false:"+(true|false));
System.out.println("true||false:"+(true||false));
//false | false
//false || false
System.out.println("false|false:"+(false|false));
System.out.println("false||false:"+(false||false));
结果显示:只有两边都是false时才能显示错误,不管哪一边有一个true都是对的。
!(非):
int a=100;
int b=200;
//! false-->true
boolean result1=!(a>b);
System.out.println(result1);
结果显示:!(非)运算符得到的结果是原来结果的相反。
&和&&的区别:
int x=8;
int y=9;
System.out.println((++x==y)&&(++x!=y));
System.out.println(x);
int a=8;
int b=9;
System.out.println((++a!=b)&&(++a==b));
System.out.println(a);
int m=8;
int n=9;
System.out.println((++m!=n)&(++m==n));
System.out.println(m);
结果显示:
&&具有短路功能,当&&左边的表达式结果为false的时候,&&右边的表达式不需要计算;
&没有短路功能,不管&左边的表达式结果为true还是false,&右边的表达式都需要计算。
|和||的区别:
int x=8;
int y=9;
System.out.println((++x==y)||(++x!=y));
System.out.println(x);
int a=8;
int b=9;
System.out.println((++a!=b)||(++a==b));
System.out.println(a);
int m=8;
int n=9;
System.out.println((++m!=n)|(++m==n));
System.out.println(m);
结果显示:
||具有短路功能,当||左边的表达式结果为true的时候,||右边的表达式不需要计算;
|没有短路功能,不管|左边的表达式结果为true还是false,|右边的表达式都需要计算。
5.条件运算符
条件运算符(三母运算符,三元运算符)
语法结构:
条件?表达式1:表达式2
执行规律:
条件为true,执行表达式1;条件为false,执行表达式2.
可扩展为:
条件运算符的嵌套,在一个运算符中包含另一个运算符
语法结构:
条件1?(条件2?表达式1:表达式2):(条件3?表达式3:表达式4)
执行条件:
判断条件1:
如果条件1为true,判断条件2,如果条件2为true,执行表达式1,如果表达式2为false,执行表达式2
如果条件1为false,判断条件3,如果条件3为true,执行表达式3,如果条件3为false,执行表达式4
package com.bdqn.demo01;
public class Demo07 {
public static void main(String[] args) {
int num1=100;
int num2=200;
int max=num1>num2?num1:num2;
System.out.println("最大值:"+max);
int min=num1>num2?num2:num1;
System.out.println("最大值:"+min);
}
}
实例
实例:求解各位数并求和,根据数字之和判断是否中奖。数字之和大于20,则中奖。
package com.bdqn.demo01;
import java.util.Scanner;
public class Demo08 {
public static void main(String[] args) {
// 求解各位数并求和,根据数字之和判断是否中奖。数字之和大于20,则中奖
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入4位数会员卡号:");
int card = sc.nextInt();
System.out.println("会员卡号为:" + card);
System.out.println("千分位:" + (card / 1000));
System.out.println("百分位:" + (card % 1000 / 100));
System.out.println("十分位:" + (card % 1000 % 100 / 10));
System.out.println("各分位:" + (card % 10));
int sum = (card / 1000) + (card % 1000 / 100)
+ (card % 1000 % 100 / 10) + (card % 10);
System.out.println("各位数之和:" + sum);
String result=sum>20?"恭喜你,中奖了":"很遗憾,未中奖";
System.out.println(result);
}
}