009_Java运算符

一、Java运算符

运算符指明对操作数的运算方式

1、算术运算符
算术运算符运算
+
-
*
/
%取余(模)
++自增
- -自减

① 自增运算符++
    (自减运算符照葫芦画瓢喽)

"栗子"

package javabasis;

public class Operator01 {
	/**
	 * 自增运算符++
	 *   1、是单目运算符,即仅接受一个操作数
	 *   2、单独使用
	 *       ++前、后++无区别,如:num++ 和 ++num 结果一样
	 *   3、混合使用
	 *       ++前:变量先+1,再拿结果做赋值运算 【先加后用】
	 *       后++:先做赋值运算,再让变量+1    【先用后加】
	 */
	public static void main(String[] args) {
		// 单独使用
		int num1, num2;
		num1 = num2 = 10;
		++num1;	
		num2++;	
		System.out.println("num1 = " + num1);	// num1 = 11
		System.out.println("num2 = " + num2);	// num2 = 11
		System.out.println("-----------华丽的分割线-----------");
		
		// 混合使用
		int m, n;
		m = n = 120;
		
		int b = ++m;	// 先加后用
		System.out.println("m = " + m);		// m = 121
		System.out.println("b = " + b);		// b = 121;
		
		int c = n++;	// 先用后加
		System.out.println("n = " + n);		// n = 121
		System.out.println("c = " + c);		// c = 120
	}
}

运行 结果

拓展 "栗子"

package javaBasis;

public class Operator02 {
    /* 想一想???
     * 为什么的System.out.println(a++);和 System.out.println(++b);结果不同?
     */
	public static void main(String[] args) {
		int a = 10;
		System.out.println(a++); // 10
		System.out.println(a);   // 11
		System.out.println("-------------华丽的分割线----------------------");
		
		int b = 10;
		System.out.println(++b); // 11
		System.out.println(b);	 // 11
	}
}

运行 结果

分析 原因


2、关系运算符
关系/比较运算符运算
==等于
!=不等于
>等于
>=大于等于
<小于
<=小于等于

注意点
①🔺 =  赋值(赋值运算符)
        == 等于(关系运算符)

关系运算的结果都是布尔类型(true/false)

③ 运算符中两个符号之间不能有空格,否则报错

④ Java允许“==”和“!=”两种运算符用于任何数据类型。例如,判断两个数的值是否相等,判断对象或数组的实例是否相等,判断实例时比较的是两个对象在内存中的引用地址是否相等…


3、逻辑运算符

注意点

逻辑运算要求两边都是布尔类型,并且最终结果也是布尔类型

②🔺 逻辑与(逻辑或) 和 短路与(短路或) 的区别

package javaBasis;

public class Operator03 {
	public static void main(String[] args) {
		// 相同点 :逻辑与& 和 短路与 的结果布尔类型相同
		System.out.println(true & true);    // true
		System.out.println(true & false);   // false
		System.out.println(false & false);  // false
		
		System.out.println(true && true);	// true
		System.out.println(true && false);  // false
		System.out.println(false && false); // false
		
		System.out.println("------------华丽的分割线1-------------");
		
		/* 区别 :
		 *  逻辑与&  ———— 左右两边都要执行 (不论第一个表达式结果是什么,第二个表达式一定会执行)
		 *  短路与&& ———— 当左边表达式为false时,右边表达式不执行,结果为false
		 *  
		 *  逻辑或|  ———— 左右两边都要执行
		 *  短路或|| ———— 当左边表达式为true时,右边表达式不执行,结果为true
		 *  
		 *  效率方面 :短路与&&(短路或||) 比 逻辑与&(逻辑或|)效率高一些
		 *      但"存在即合理",在不同开发需求中,逻辑与(逻辑或) 和 短路与(短路或)是并存的
		 */ 
		int x = 5;
		int y = 10;
		System.out.println(x > y & x > y++);  // false
		System.out.println(y);    // 11
		
		System.out.println("------------华丽的分割线3-------------");
		
	    int n = 5;
	    int m = 10;
	    System.out.println(n > m && n > m++); // false
	    System.out.println(m);    // 10
	    
	    System.out.println("------------华丽的分割线4-------------");
	    
	    int a = 8;
	    int b = 11;
	    System.out.println(a < b | a < b++);   // true 
	    System.out.println(b);  // 11
	    
	    System.out.println("------------华丽的分割线5-------------");
	    
	    int c = 8;
	    int d = 11;
	    System.out.println(c < d || c < d++);  // true
	    System.out.println(d);  // 12
	}
}

/* 运算结果 :
 	true
	false
	false
	true
	false
	false
	------------华丽的分割线1-------------
	false
	11
	------------华丽的分割线2-------------
	false
	10
	------------华丽的分割线3-------------
	true
	12
	------------华丽的分割线4-------------
	true
	11
*/

4、赋值运算符

① =为基本赋值运算符     +=、-=、*=、/=、%=为扩展赋值运算符

package javaBasis;

public class Operator04 {
	public static void main(String[] args) {
		int n = 2;
		n += 10;	// n变量追加20
		System.out.println(n);  // 12
		
		int m = 2;
		m = m + 10;
		System.out.println(m);  // 12
		
		// 思考???
		// i += 10; 与 i = i + 10; 是否完全相同?
	}
}
package javaBasis;

public class Operator05 {
	public static void main(String[] args) {
		byte b = 100;	// 100不超出byte的取值范围,自动赋值给byte类型
		// b = b + 10;		// 混合运算,赋值右边都先转换成int型再运算,结果为int型,b为小容量byte型,编译报错!!!
		b = (byte)(b + 10);	// 强制类型转换
		System.out.println(b);	// 110
		
		byte bb = 100;
		bb += 10;	// bb变量追加(累加) 10
		System.out.println(bb); // 110
	}
}

/* 回顾思考: i += 10; 与 i = i + 10; 是否完全相同?
 * 答案是 不完全相同。
 * 使用扩展赋值运算符(+=、-=、*=、/=、%=),永远不改变运算结果类型
 * 如:
 * byte b = 100;
 * b += 10; 等同于  b = (byte)(b + 10);
 */

5、条件运算符

① 条件运算符:也称三目运算符、三元运算符

② 🔺语法结构:布尔表达式? 表达式1: 表达式2;

③ 🔺执行原理:布尔表达式为true,执行表达式1;布尔表达式为false,执行表达式2

6、字符串连接运算符

① + 运算符在Java中的两个作用
一是加法运算,+ 运算符两边都是数字类型+做求和
二是字符串连接,+ 任意一边是字符串类型+做字符串拼接

package javaBasis;

public class Operator06 {
	public static void main(String[] args) {
		int x = 10;
		int y = 6;
		
		// 这里+做加法运算 (求和)
		System.out.println(x + y);  // 16
		
		// 当表达式中出现多个+时,遵循自左向右顺序执行
		System.out.println(x + y + "123");  // 16123
		
		// 若有小括号,小括号优先级更高,小括号内容优先运算
		System.out.println(x + (y + "123"));	// 106123
		System.out.println("x + y = " + (x + y));  // x + y = 16
		System.out.println("------------华丽的分割线------------");
		int age = 12;
		String name = "张三";
		// 这里+做字符串拼接
		System.out.println("年龄是" + age);  // 年龄是12
		System.out.println("欢迎" + name + "登录成功!");  // 欢迎张三登录成功!
	}
}

7、位运算符

用于对二进制位的操作 (略)


🍅🍅🍅 以往文章 👇

001_Java语言发展历程
002_Java语言的八大特性
003_浅析JDK、JRE、JVM的区别和联系
004_JDK的下载安装与环境变量的配置
005_常用DOS命令
006_Java关键字、标识符、注释
007_Java八大基本数据类型
008_Java类型转换
010_Java流程控制语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值