Java中的运算符

赋值运算符

赋值运算符:=
变量名 = 表达式; --》将表达式的结果通过赋值运算符=存储到变量中
表达式:表达式就是符号(如加号、减号)与操作数(如b,3等)的组合,例如

a+b ;3+5

那么如何借助变量以及赋值运算符实现两个数据的交换?
这里我们可以定义一个第三方变量,然后通过第三方变量来进行变量之间值的互换。

package cn.bdqn.demo03;

public class Demo02 {

	public static void main(String[] args) {
		// 如何借助变量以及赋值运算符实现两个数据的交换?
		int num1 = 100;
		int num2 = 200;
		System.out.println("交换前:");
		System.out.println("num1="+num1);
		System.out.println("num2="+num2);
		
		//如何实现交换? 借助第三方变量来实现交换
		int temp = num1; //temp变量中存储的是100
		num1 = num2; //num1 = 200
		num2 = temp;
		System.out.println("交换后:");
		System.out.println("num1="+num1);
		System.out.println("num2="+num2);
		
		//扩展:面试题:使用4种方法实现两个变量中数据的交换。

	}

}

算术运算符

基本算术运算符:+; -; ; / ; %(取模运算符/取余运算符) ;++(自增运算符); --(自减运算符 )。
复合算术运算符:+=;-=;
=;/=;%=。

基本算术运算符

int num1 = 10;
		int num2 = 3;
		int result1 =num1+num2;
		System.out.println("num1+num2="+result1);//num1+num2=13
		
		int result2 =num1-num2;
		System.out.println("num1-num2="+result2);//num1-num2=7
		
		int result3 =num1*num2;
		System.out.println("num1*num2="+result3);//num1*num2=30
		
		int result4 =num1/num2;
		System.out.println("num1/num2="+result4);//num1/num2=3
		
		int result5 =num1%num2;
		System.out.println("num1%num2="+result5);//num1%num2=1

针对单独的变量,++和–在变量前和变量后,变量的值都会+1或者-1操作

		int a = 10;
		System.out.println("a="+a);//a=10
		a++;
		System.out.println("a="+a);//a=11
		++a;
		System.out.println("a="+a);//a=12
		
		int b = 100;
		System.out.println("b="+b);//b=100
		--b;
		System.out.println("b="+b);//b=99
		b--;
		System.out.println("b="+b);//b=98

++和–修饰的变量参与运算时,++和–在变量前和变量后有没有区别呢?

  • ++和–修饰的变量参与运算时,如果++和–在变量的前面,变量先进行++或者–操作,操作完毕后,再进行运算
  • ++和–修饰的变量参与运算时,如果++和–在变量的后面,变量先去进行运算,然后再进行++或者–操作
		int c = 200;
		int d =++c;
		System.out.println("c="+c);//c=201
		System.out.println("d="+d);//d=201
		
		int e = 300;
		int f =e++;
		System.out.println("e="+e);//e=301
		System.out.println("f="+f);//f=300
		

复合算术运算符

复合算术运算符:+=; -= ;*=; /=; %=。

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;
package cn.bdqn.demo04;

public class Demo02 {

	public static void main(String[] args) {
		/*
		 * 复合算术运算符:+= -= *= /= %=
		 */

		int a = 100;
		// 将a增加100,然后将结果再赋值给
//		a = a + 100;
		//上面的写法可以使用复合算术运算符来写
		a+=100;
		System.out.println("a="+a);//a=200
		
		a-=30;// a=a-30;  
		System.out.println("a="+a);//a=170
		
		a*=2; // a=a*2;
		System.out.println("a="+a);//a=340 
		
		a/=50; // a =a/50;
		System.out.println("a="+a);//a=6
		
		a%=4; // a=a%4;
		System.out.println("a="+a);//a=2
	}

}

示例:键盘输入四位数字的会员卡号,使用“/”和“%”运算符分解获得会员卡各个位上的数字,然后将各个位上数字求和。

package cn.bdqn.demo04;

import java.util.Scanner;

public class Demo03 {

	public static void main(String[] args) {
		/*
		 * 键盘输入四位数字的会员卡号
		 * 使用“/”和“%”运算符分解获得会员卡各个位上的数字
		 * 将各个位上数字求和
		 */
		
		//创建Scanner类对象并导包
		Scanner sc = new Scanner(System.in);
		//输入数据
		System.out.println("请输入你的会员卡号(4位的整数):");
		int cardId =sc.nextInt();
		System.out.println("你输入的会员卡号是:"+cardId);
		
		//使用“/”和“%”运算符分解获得会员卡各个位上的数字
		int geWei = cardId%10;
		System.out.println("个位数字:"+geWei);
		int shiWei = cardId/10%10;
		System.out.println("十位数字:"+shiWei);
		int baiWei = cardId/100%10;
		System.out.println("百位数字:"+baiWei);
		int qianWei = cardId/1000;
		System.out.println("千位数字:"+qianWei);
		
		//将各个位上数字求和
		int sum = geWei+shiWei+baiWei+qianWei;
		System.out.println("你的会员卡各个位上的数字之和:"+sum);

	}

}

在这里插入图片描述

关系运算符(比较运算符)

(1)关系运算符用于比较两个变量或者常量的大小,运算结果是布尔值true或false。

(2)Java中共有6个关系运算符,分别是> ==;!=;>;<;>=;<=。

(3)>、<、>=、<=只支持数值类型的比较。

(4)==、!=支持所有数据类型的比较,包括数值类型、布尔类型、引用类型。

(5)>、<、>=、<=优先级别高于==、!=。

package cn.bdqn.demo05;

public class Demo01 {

	public static void main(String[] args) {
		/*
		 * 关系运算符(比较运算符):> >= < <= == !=
		 * 
		 * 	=为赋值运算符,==为关系运算符里的等于运算符
		 * 	关系运算符的结果为布尔值,要么为true要么为false
		 * 	>、<、>=、<= 运算符的优先级别高于==、!=
		 * 	>、<、>=、<=运算符只支持数值类型的数据比较
		 * 	关系运算符经常使用在选择结构和循环结构中
		 * 
		 */
		
		int num1 = 10;
		int num2 = 20;
		
		boolean result1 =num1>num2;
		System.out.println("num1>num2:"+result1);//num1>num2:false
		System.out.println(num1>=num2);
		System.out.println(num1<num2);
		System.out.println(num1<=num2);
		System.out.println(num1==num2);
		System.out.println(num1!=num2);

	}

}

逻辑运算符

逻辑运算符:&(单与)、&&(双与/短路与)、|(单或/短路或)、||(双或/短路或)、!(非)

  • 参与逻辑运算的表达式要是布尔值
  • 逻辑运算符的运算结果为布尔值,要么为true,要么为false
  • 与运算符和或运算符为双目运算符符,左右两边参与运算的表达式都需要是布尔值,非运算符是单目运算符,只需要右边有一个布尔类型的表达式即可
  • 逻辑运算符经常使用在选择结构和循环结构中

&和&&的运算规律

  1. 只有当&和&&左右两边的表达式同时为true,&和&&的运算结果才为true。
  2. &&具有短路功能,当&&左边表达式结果为false的时候,直接判断整个&&运算结果为false,&&右边表达式不再进行计算
  3. &不具有短路功能,不管&左边表达式的结果为true还是false,&右边的表达式都会进行运算
		boolean b1 = true;
		boolean b2 = true;
		boolean b3 = false;
		boolean b4 = false;
		
		//true&&true--->true
		System.out.println(b1&&b2);//true
		
		//true&&false--->false
		System.out.println(b1&&b3);//false
		
		//false&&true--->false
		System.out.println(b3&&b2);//false
		
		//false&&false--->false
		System.out.println(b3&&b4);//false
		
		System.out.println("---------------------");
		System.out.println(b1&b2);//true
		System.out.println(b1&b3);//false
		System.out.println(b3&b2);//false
		System.out.println(b3&b4);//false

|和||的运算规律

  1. 只要|和||左右两边的表达式中有一个为true,|和||的运算结果就为true
  2. ||具有短路功能,当||左边表达式结果为true的时候,直接判断整个||运算结果为true,||右边表达式不再进行计算
  3. |不具有短路功能,不管|左边表达式的结果为true还是false,|右边的表达式都会进行运算
		boolean b1 = true;
		boolean b2 = true;
		boolean b3 = false;
		boolean b4 = false;
		//true||true--->true
		System.out.println(b1||b2);//true
				
		//true||false--->true
		System.out.println(b1||b3);//true
				
		//false||true--->true
		System.out.println(b3||b2);//true
				
		//false||false--->false
		System.out.println(b3||b4);//false
		
		System.out.println(b1|b2);//true
		System.out.println(b1|b3);//true
		System.out.println(b3|b2);//true
		System.out.println(b3|b4);//false

!的运算规律

  1. 对true进行非运算,结果为false
  2. 对false进行非运算,结果为true
		boolean b1 = true;
		boolean b2 = true;
		boolean b3 = false;
		boolean b4 = false;
		//!true--->false
		System.out.println(!b1);
		//!false--->true
		System.out.println(!b3);

实际应用:

package cn.bdqn.demo06;

public class YunSuanFu {

	public static void main(String[] args) {
		int x = 8;
		int y = 9;
		System.out.println((++x == y) && (++x != y));
		System.out.println(x);
	}
}

运行结果:
在这里插入图片描述

解释:&&运算符如果左边是true,那么右边任需计算。只有当&&左边表达式结果为false的时候,直接判断整个&&运算结果为false,&&右边表达式才不再进行计算。

package cn.bdqn.demo05;

public class Demo04 {

	public static void main(String[] args) {
		int x = 8;
		int y = 9;
		//因为&&左边表达式(++x != y)的结果为false,可以直接判断整个&&运算的结果为false,所以&&右边的表达式不再进行计算
		System.out.println((++x != y) && (++x == y));//false
		System.out.println(x);//9

	}

}

运行结果:
在这里插入图片描述
解释:因为&&左边表达式(++x != y)的结果为false,可以直接判断整个&&运算的结果为false,所以&&右边的表达式不再进行计算。

package cn.bdqn.demo05;

public class Demo05 {

	public static void main(String[] args) {
		int x = 8;
		int y = 9;
		//因为&左边表达式(++x != y)的结果为false,&不具备短路功能,所以&右表表达式还需要继续进行计算,得到x的值为10
		System.out.println((++x != y) & (++x == y));//false
		System.out.println(x);//10

	}

}

运行结果:
在这里插入图片描述
解释:因为&左边表达式(++x != y)的结果为false,&不具备短路功能,所以&右表表达式还需要继续进行计算,得到x的值为10。

package cn.bdqn.demo05;

public class Demo07 {

	public static void main(String[] args) {
		int x = 8;
		int y = 9;
		//|没有短路功能,即使当|左边表达式(++x == y)为true,|右表表达式还需要继续进行运算
		System.out.println((++x == y) | (++x != y));//true
		System.out.println(x);//10

	}

}

在这里插入图片描述
解释:|没有短路功能,即使当|左边表达式(++x == y)为true,|右表表达式还需要继续进行运算。

条件运算符

  1. 条件运算符是Java中唯一的需要3个操作数的运算符。
  2. 语法格式:
    条件?表达式1:表达式2;
  3. 运算规律:
    首先对条件进行判断,如果其值为true,则返回表达式1的值;如果条件值为false,则返回表达式2的值。
  4. 条件运算符的嵌套:
    条件?(条件?表达式1:表达式2):(条件?表达式1:表达式2);
package cn.bdqn.数值转换;

public class TiaoJianYunSuanFu {

	public static void main(String[] args) {
		int num1 = 30;
		int num2 = 20;
		
		int max = num1>num2?num1:num2;
		System.out.println("最大值是:"+max);

	}

}

运行结果:
在这里插入图片描述
用条件运算符判断奇偶性:

package cn.bdqn.数值转换;

public class TiaoJianYunSuanFu {

	public static void main(String[] args) {
		int num1 = 30;
		int num2 = 20;
		
		int max = num1>num2?num1:num2;
		System.out.println("最大值是:"+max);

		
		
		int number = 11;
		String result = number%2 == 0?"偶数":"奇数";
		System.out.println("number是一个"+result);
	}

}

运行结果:
在这里插入图片描述

扩展
条件运算符可以嵌套使用,条件运算符中的表达式还可以是条件运算符
语法结构:
条件?(条件?表达式1:表达式2):(条件?表达式3:表达式4)

int num1 = 10;
int num2 = 30;
int num3 = 20;
int max = num1>num2?(num1>num3?num1:num3):(num2>num3?num2:num3);
System.out.println(max);

运行结果:
在这里插入图片描述

运算符优先级

在这里插入图片描述

课后小练习

键盘输入四位数字的会员卡号,使用“/”和“%”运算符分解获得会员卡各个位上的数字,然后将各个位上数字求和。判断用户是否中奖,如果数字2之和大于20,则中奖。

写好后在对照答案!

package cn.bdqn.数值转换;

import java.util.Scanner;

public class Demo02 {

	public static void main(String[] args) {
		/*
		 * 键盘输入四位数字的会员卡号
		 * 使用“/”和“%”运算符分解获得会员卡各个位上的数字
		 * 将各个位上数字求和
		 */
		
		//创建Scanner类对象并导包
		Scanner sc = new Scanner(System.in);
		//输入数据
		System.out.println("请输入你的会员卡号(4位的整数):");
		int cardId =sc.nextInt();
		System.out.println("你输入的会员卡号是:"+cardId);
		
		//使用“/”和“%”运算符分解获得会员卡各个位上的数字
		int geWei = cardId%10;
		System.out.println("个位数字:"+geWei);
		int shiWei = cardId/10%10;
		System.out.println("十位数字:"+shiWei);
		int baiWei = cardId/100%10;
		System.out.println("百位数字:"+baiWei);
		int qianWei = cardId/1000;
		System.out.println("千位数字:"+qianWei);
		
		//将各个位上数字求和
		int sum = geWei+shiWei+baiWei+qianWei;
		System.out.println("你的会员卡各个位上的数字之和:"+sum);
		String result = sum>20?"恭喜你,中奖了!":"很遗憾,你没有中奖。";
		System.out.println(result);

	}

}


运行结果:
在这里插入图片描述

那么你有没有做对呢?

总结

1. 赋值运算符:=
变量名 = 表达式;
算术运算符
2. 基本算术运算符
包含:+; -; ; / ; %(取模运算符/取余运算符) ;++(自增运算符); --(自减运算符 )。
++和 - - 修饰的变量参与运算时,如果++和- -在变量的前面,变量先进行++或者- -操作,操作完毕后,再进行运算
++和 - - 修饰的变量参与运算时,如果++和- -在变量的后面,变量先去进行运算,然后再进行++或者- -操作
3. 复合算术运算符
包含:+=;-=;
=;/=;%=。

4. 关系运算符

1)关系运算符用于比较两个变量或者常量的大小,运算结果是布尔值truefalse。
(2Java中共有6个关系运算符,分别是> ==!=><>=<=。
(3><>=<=只支持数值类型的比较。
(4==!=支持所有数据类型的比较,包括数值类型、布尔类型、引用类型。
(5><>=<=优先级别高于==!=

5. 逻辑运算符
包含:&(单与)、&&(双与/短路与)、|(单或/短路或)、||(双或/短路或)、!(非)

  • 参与逻辑运算的表达式要是布尔值
  • 逻辑运算符的运算结果为布尔值,要么为true,要么为false
  • 与运算符和或运算符为双目运算符符,左右两边参与运算的表达式都需要是布尔值,非运算符是单目运算符,只需要右边有一个布尔类型的表达式即可
  • 逻辑运算符经常使用在选择结构和循环结构中

只有当&和&&左右两边的表达式同时为true,&和&&的运算结果才为true。
&&具有短路功能,当&&左边表达式结果为false的时候,直接判断整个&&运算结果为false,&&右边表达式不再进行计算
&不具有短路功能,不管&左边表达式的结果为true还是false,&右边的表达式都会进行运算

只要|和||左右两边的表达式中有一个为true,|和||的运算结果就为true
||具有短路功能,当||左边表达式结果为true的时候,直接判断整个||运算结果为true,||右边表达式不再进行计算
|不具有短路功能,不管|左边表达式的结果为true还是false,|右边的表达式都会进行运算

对true进行非运算,结果为false
对false进行非运算,结果为true

5. 条件运算符
条件运算符是Java中唯一的需要3个操作数的运算符。
语法格式:
条件?表达式1:表达式2;
运算规律:
首先对条件进行判断,如果其值为true,则返回表达式1的值;如果条件值为false,则返回表达式2的值。
条件运算符的嵌套:
条件?(条件?表达式1:表达式2):(条件?表达式1:表达式2);

  • 31
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道长爱睡懒觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值