Day 3 运算符

Day 3 运算符

1. 运算符
1.1 算术运算符
语法类型:+ - * / % () =    加、减、乘、除、取余、小括号、赋值号
	注意:1. Java中优先级最高的就是小括号
		 2. 【小括号里面的内容】相对于外面的内容而言是一个整体,它是一个【常量】
		 
/* 算术运算符演示 */
class Demo1 {
	public static void main(String[] args){
		// 定义两个int变量
		int num1 = 10;
		int num2 = 20;
		
		// num1 + num2结果赋值给num1,num1 = 30,num2 = 20
		num1 = num1 + num2;
		// 变量在代码运行过程中是会发生改变,num1 = 600,num2 = 20
		num1 = num1 * num2;
        	// num1 = 580,num2 = 20
		num1 = num1 - num2;
        	// num1 = 29,num2 = 20
		num1 = num1 / num2;
		// 20 ÷ 29 = 0 ...... 20,取余运算结果: num1 = 20 num2 = 20
		num1 = num2 % num1;
		
		/*
		num2的值没有发生改变
			因为num2从开始被赋值后,没有再被赋予新的值
		*/
		System.out.println(num1);
		System.out.println(num2);
	}
}

注意: 1. 变量有且只能是再被赋值之后才能修改内容,未赋值不能进行修改
      2. 取余操作只是针对整数,小数没有没有取余操作
    
偷懒专用运算符
    += -= *= /= %=
/* 演示 */
class Demo2 {
	public static void main(String[] args) {
		
		int num1 = 10;
		int num2 = 20;
		
		// num1 = num1 + num2 等价于 num1 += num2
		num1 += num2;
        	// num1 = num1 * num2 等价于 num1 *= num2
		num1 *= num2;
        	// num1 = num1 - num2 等价于 num1 -= num2
		num1 -= num2;
        	// num1 = num1 / num2 等价于 num1 /= num2
		num1 /= num2;
		// num2 %= num1 等价于 num2 = num2 % num1
		num2 %= num1;
		// num1 %= num2 等价于 num1 = num1 % num2
		num1 %= num2;
		
		System.out.println(num1);
		System.out.println(num2);
	}
}
1.2 关系运算符
语法类型:    >  <  >=  <=  !=  ==    大于、小于、大于等于、小于等于、不等于、等于判断

注意:    1. 关系运算符的运算结果是一个boolean数据类型,只能是true/false
		 2. 一般用于条件判断、数据过滤...
		 
/* 关系运算符演示 */
class Demo3 {
	public static void main(String[] args){
		// 定义一个boolean类型变量
		boolean ret = false;
		// 结果为false ; 5 > 10结果赋值给ret
		ret = 5 > 10;
		System.out.println(ret);
		// true
		ret = 5 < 10;
		System.out.println(ret);
		// true
		ret = 5 >= 5;
		System.out.println(ret);
		// false
		ret = 5 <= 2;
		System.out.println(ret);
		// true
		ret = 5 != 10;
		System.out.println(ret);
		// false
		ret = 5 == 10;
		System.out.println(ret);
	}
}
1.3 自增自减运算符
【明确】
	自增自减运算符【有且只能操作变量】,不可以操作常量
【建议】
	1.  平时的开发中尽量减少或者标准化使用自增自减运算符
    2.  尽量使用 += 1或者 -= 1来替代 ++--,提高可读性
    3.  如果非要使用,单独成行
语法类型:
	++ :自增,操作的变量自增1;等价于  += 1
	-- :自减,操作的变量自减1;等价于  -= 1
前后关系:
	num++ : ++处于变量之后,先用未自增1的变量来执行当前行代码,再来执行变量的自加1运算,参与下面的代码运算
	++num : +++处于变量之前,先执行变量的自加1运算,再用自加1过后的变量来执行当前行代码
	
	-- 同理
	
	class Demo5 {
	public static void main(String[] args){
		int num1 = 10;
		
		/* 双引号内容所见即所得,直接输出,不参与运算
		num1++
		自增运算符在操作数之后,首先操作数原始数据参与
		该行代码运行,当前代码运行结束后,在进行自增操作,自增后的数据与当前行无关
		直接参与下行代码预算(此例)
		*/
		/* 
		等价于
		System.out.println("num1++ : " + num1);
		num1++;
		System.out.println("num1 : " + num1);
		*/
		System.out.println("num1++ : " + num1++);
		System.out.println("num1 : " + num1);
		
		/* ++num1
		自增运算符在操作数之前,首先执行自增操作,
		然后再进行数据展示
		先执行自增,再参与当前行代码执行,然后参与下行代码运算(此例)
		*/
		/*
		等价于
		++num1;
		System.out.println("++num1 : " + num1);
		System.out.println("num1 : " + num1);
		*/
		System.out.println("++num1 : " + ++num1);
		System.out.println("num1 : " + num1);
	}
        
注释:   
   /* 
   System.out.println("num1 : " + num1);
   "num1 : "  直接输出,不参与运算
   +    在这里可以叫做连接符,表示将前后的数据连接在一起输出
   num1   整型变量,输出最终值
   */
    
错误使用:
    1.
    int num2 = 20;
        ++(num2++);
        /*
        Demo10.java:4: 错误: 意外的类型
                ++(num2++);
        原因:        
        1.【小括号里面的内容】相对于外面的内容而言是一个整体,它是一个【常量】
        2. 自增自减运算符【有且只能操作变量】,不可以操作常量
		*/
    2.
    int num3 = 30;
        ++num3++;
        /*
        Demo10.java:4: 错误: 意外的类型
                ++num3++;
        原因:        
		++num3 运算的结果是一个常量,自增自减运算符不可以操作常量
		*/

/* 自增自减运算符和算术运算符同时使用演示 */
class Demo7 {
	public static void main(String[] args) {
		int num = 5;
		int ret = num++ * ++num;
		/*
		num经历了2次自增操作,最终结果为7
		
		ret值
			num++  ++在后,提供的数据为5,即num++在乘法运算中提供的数据为5
			进行自加后num = 6,再进行 ++num 操作
			++num  ++在前,先进行自加,num = 7,在乘法运算中提供的数据为7
			然后进行乘法操作
			ret = 5 * 7 = 35;
		*/
		System.out.println("ret : " + ret);
		System.out.println("num : " + num);

	}

}
1.4 逻辑运算符
语法类型:   
		&&  与        运算特点: 同真为真,有假【即】假
		||  或        运算特点: 有真【即】真,同假为假
		!   非(取反) 
        
注意:    1. 关系运算符的运算结果是一个boolean数据类型,只能是true/false
		 2. 一般用于条件判断、数据过滤...
		 
/* 逻辑运算符演示 */
class Demo9 {
	public static void main(String[] args) {
		boolean ret = true;
		// 5 > 3为true,10 > 8为true,与运算结果为true
		ret = 5 > 3 && 10 > 8;
		System.out.println("ret : " + ret);
		// false
		ret = 5 < 3 && 10 > 8;
		System.out.println("ret : " + ret);
		// true
		ret = 5 > 3 || 10 > 8;
		System.out.println("ret : " + ret);
		// false
		ret = 5 < 3 || 10 < 8;
		System.out.println("ret : " + ret);
		// false
		ret = !(5 > 3);
		System.out.println("ret : " + ret);
	}
}

【逻辑运算短路问题】
/* 演示 */
class Demo4 {
	public static void main(String[] args) {
		int num = 10;
		// &&为与运算,同真为真,有假即假
		boolean ret = 10 > 15 && num++ >= 11;
		/*
		逻辑与短路问题
		10 > 15 该表达式结果为false,在与运算中已经决定了当前整个
		逻辑与表达式的结果为false,计算机为了提高效率,
		从逻辑与false条件开始,之后的表达式不再运行。
		*/
		System.out.println("num : " + num);
		System.out.println("ret : " + ret);
		
		
		int num1 = 11;
        // ||为或运算,有真即真,同假为假
		boolean ret1 = 10 > 5 || ++num1 > 5;
        /*
        逻辑或短路问题
		10 > 5 该表达式结果为true,在或运算中已经决定了当前整个
		逻辑与表达式的结果为true,计算机为了提高效率,
		从逻辑与true条件开始,之后的表达式不再运行。
        */
		System.out.println("num1 : " + num1);
		System.out.println("ret1 : " + ret1);
	}
}

在逻辑运算里,括号当一个整体不具备优先级,从左到右依次执行
在普通加减乘除运算里,就有优先级
class Demo1 {
	public static void main(String[] args) {
		int num = 6;
		boolean ret = num > 5 && (num-- < 20 || num++ > 10);
		System.out.println(ret);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值