java中的运算符---3

目录

1. java中的运算符
2. 算术运算符
3. 赋值运算符
4. 扩展赋值运算符
5. 关系运算符        逻辑运算符
6. 条件运算符
7. 位运算符(了解)
8. 运算符总结
9. 运算符的优先级

声明:笔记来自于马士兵教育

1.java中的运算符

返回目录
在这里插入图片描述
在这里插入图片描述

2.算术运算符

返回目录

  • /和%
    【1】/ 除法运算符 : 表示两个数相除运算
    % 取余运算符: 用来求余数的
public class TestOpe01{
        public static void main(String[] args){
                //打印结果:
                System.out.println(12/3);
                System.out.println(12%5);
                System.out.println(12/3.0);
                System.out.println(12%5.0);
        }
}

练习2

import java.util.Scanner;
public class TestOpe02{
        public static void main(String[] args){
                //实现功能:任意给出一个四位数,求出每位上的数字并输出
                
                //1.任意给出一个四位数:
                Scanner input = new Scanner(System.in);
                System.out.println("请录入一个四位数:");
                int num = input.nextInt();
                
                
                //2.求出每位上的数字:
                //个位数:
                int num1 = num%10;
                //十位数:
                int num2 = num/10%10;//1234--->123--->3
                //百位数:
                int num3 = num/100%10;//1234--->12--->2
                //千位数:
                int num4 = num/1000;//1234--->1
                
                
                //3.输出每位上的数字:
                System.out.println("个位上的数为:"+num1);
                System.out.println("十位上的数为:"+num2);
                System.out.println("百位上的数为:"+num3);
                System.out.println("千位上的数为:"+num4);
        }
        
}
  • +
    【1】+的作用:
    (1)表示正数
    (2)表示相加操作
    (3)进行字符串的拼接
public class TestOpe03{
        public static void main(String[] args){
                //表示正数:
                System.out.println(+5);//5
                //相加操作:
                System.out.println(5+6);//11
                System.out.println(5+'6');//59
                //字符串的拼接:
                //规则:+左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
                int num = 56;
                System.out.println("num="+num);//"num=56" ---> num=56
                System.out.println(5+6+"7");//11+"7"--->"117"  --->117
                System.out.println(5+'6'+"7");//59 +"7"--->"597" --->597
                System.out.println("5"+6+"7");//"56"+"7"  --->"567"--->567
                System.out.println("5"+'6'+"7");//"56"+"7"--->"567"--->567
                System.out.println("5"+'6'+'7');//"56"+'7'--->"567"---567
        }
}

3.赋值运算符

返回目录
【1】=的作用: 将等号右侧的值赋给等号左侧:
int age = 19;
int age = 10+3+8;
【2】练习代码:

public class TestOpe06{
        public static void main(String[] args){
                //任意给出两个数,交换两个数并输出:
                //1.给出两个数:
                int num1 = 10;
                int num2 = 20;
                
                //2.输出交换前的两个数:
                System.out.println("交换前:"+num1+"\t"+num2);
                
                //3.交换
                /*
                错误代码:
                num1 = num2;
                num2 = num1;	
                */		
                //解决办法:
                //引入一个中间变量:
                int t;
                t = num1;
                num1 = num2;
                num2 = t;
                /*
                int t;
                t = num2;
                num2 = num1;
                num1 = t;
                
                */
                
                //4.输出交换后的两个数:
                System.out.println("交换后:"+num1+"\t"+num2);
        }
}

面试题:两个数交换的四种方式:
https://www.cnblogs.com/Brad-Lee/p/5808299.html

4.扩展赋值运算符

返回目录
【1】代码:

public class TestOpe07{
        public static void main(String[] args){
                //实现功能:给出三个数,求和:
                //1.给出三个数:
                int num1 = 10;
                int num2 = 20;
                int num3 = 30;
                //2.求和
                //int sum = num1+num2+num3;
                //定义一个变量,用来接收和:
                int sum = 0;
                sum = sum + num1;//等效:  sum += num1;
                sum = sum + num2;// sum += num2;
                sum = sum + num3;//sum += num3;
                //3.将和输出:
                System.out.println("和:"+sum);
        }
}

在这里插入图片描述
【2】a+=b 和 a=a+b 区别:
(1)a+=b 可读性稍差 编译效率高 底层自动进行类型转换
(2)a=a+b 可读性好 编译效率低 手动进行类型转换

【3】面试题
(1)请问a+=b相当于a=a+b,那么也相当于 a=b+a吗?

在这里插入图片描述
(2)下面的代码哪一句出错: 4
byte a = 10; —>1
int b = 20; —>2
a+=b; —>3
a = a+b ;—>4

更正: a = (byte)(a+b);

5.关系运算符

返回目录

public class TestOpe08{
        public static void main(String[] args){
                //>,<,>=,<=,==,!=
                //关系运算符最终结果:要么是true要么是false
                System.out.println(4>9);//false
                System.out.println(4<9);//true
                System.out.println(4>=9);//false
                System.out.println(4<=9);//true
                System.out.println(4==9);//false
                System.out.println(4!=9);//true
                System.out.println((5<9)!=(6==8));//true
        }
}

逻辑运算符

返回目录
&,|,&&,||,!,^
逻辑运算符:进行逻辑运算的,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:要么是true,要么false

public class TestOpe09{
        public static void main(String[] args){
                // 逻辑与 :& 规律:只要有一个操作数是false,那么结果一定是false
                System.out.println(true&true);
                System.out.println(true&false);
                System.out.println(false&false);
                System.out.println(false&true);
                
                // 短路与:&& 规律:效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false
                System.out.println(true&&true);
                System.out.println(true&&false);
                System.out.println(false&&false);
                System.out.println(false&&true);
                
                // 逻辑或:| 规律:只要有一个操作数是true,那么结果一定是true
                System.out.println(true|true);
                System.out.println(true|false);
                System.out.println(false|false);
                System.out.println(false|true);
                
                // 短路或:|| 规律:效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
                System.out.println(true||true);
                System.out.println(true||false);
                System.out.println(false||false);
                System.out.println(false||true);
                
                //逻辑非:   !  规律:相反结果
                System.out.println(!true);//false
                System.out.println(!false);//true
                
                //逻辑异或: ^  规律:两个操作数相同,结果为false,不相同,结果为true
                System.out.println(true^true);
                System.out.println(true^false);
                System.out.println(false^false);
                System.out.println(false^true);
        }
}

再做一个加深的练习:看代码 说结果:

public class TestOpe10{
        public static void main(String[] args){
                int i=8;
                System.out.println((5>7)&&(i++==2)); //false
                System.out.println(i);  //8 
                
                
                int a=8;
                System.out.println((5>7)&(a++==2)); //false
                System.out.println(a); //9
                
                
                int m=8;
                System.out.println((5<7)&&(m++==2)); //false
                System.out.println(m); //9
                
                int b=2;
                System.out.println((5<7)&(b++==2)); //true
                System.out.println(b);  //3
                
                int c=2;
                System.out.println((5<7)&(++c==2)); //false
                System.out.println(c);  //3
        }
}

6.条件运算符

返回目录
【1】条件运算符:又称: 三元运算符/三目运算符
【2】格式:
a?b:c
其中a是一个布尔类型的表达式,返回结果要么是true要么false,通过a的结果决定最终表达式的结果:
如果a的结果是true,那么表达式最终结果为b
如果a的结果是false,那么表达式最终结果为c
【3】代码:

public class TestOpe11{
        public static void main(String[] args){
                int num = (5>7)?6:9 ;
                System.out.println(num);
                
                String str = (4==4)?"你好":"你不好" ;
                System.out.println(str);
                
                System.out.println((4==4)?"你好":"你不好");
        }
}

【5】练习:

import java.util.*;//*代表所有
public class TestOpe12{
        public static void main(String[] args){
                //实现功能:男孩女孩选择晚饭吃什么,如果意见一致,听男生的,如果意见不一致,听女生的
                
                //1.要让男孩女孩选择晚饭吃什么:
                Scanner sc = new Scanner(System.in);
                System.out.println("请选择今晚吃什么:1.火锅 2.烧烤 3.麻辣烫 4.西餐");
                System.out.println("请男孩选择:");
                int boyChoice = sc.nextInt();
                System.out.println("请女孩选择:");
                int girlChoice = sc.nextInt();
                //2.判断:
                System.out.println(boyChoice==girlChoice?"听男孩的":"听女孩的");
        }
}

PS:三目运算符可以代替后续我们要学习的if-else

7.位运算符(了解)

返回目录
位运算符:&,|,^,~ , >>,<<,>>>

如何区分逻辑运算符和位运算符:
逻辑运算符:左右连接的是布尔类型的操作数
位运算符:左右连接的是具体的数值

【1】<< 左移
3<<2 = 12
在这里插入图片描述

面试题: 4乘以8最快的方式: 4<<3

【2】>> 有符号右移
6>>2 = 1
在这里插入图片描述

-6>>2 = -2

在这里插入图片描述

【3】>>> 无符号右移:
6>>>2 = 1
在这里插入图片描述

【4】 & 与
6&3 = 2
在这里插入图片描述

【5】| 或
6|3=7

在这里插入图片描述

【6】^异或:
6^3 = 3

在这里插入图片描述

【7】~反:
~6 = -7

在这里插入图片描述

PS:

byte类型的表数范围的 -128是怎么算出来的
127: 01111111
-128: 10000000
一看就是个负数
减1: 01111111
取反: 10000000 —》2^7 = 128
加负号: -128

8.位运算符总结

返回目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.运算符的优先级

返回目录
在这里插入图片描述
不需要去刻意的记优先级关系
赋值<三目<逻辑<关系<算术<单目
理解运算符的结合性

PS:实际开发中我们不会写特别复杂的表达式,你要想先算谁就用()

案例:
5<6 | ‘A’>‘a’ && 126<=45+23&&!true
=5<6 | ‘A’>‘a’ && 12
6<=45+23&&false
= 5<6 | ‘A’>‘a’ &&72<=68&&false
= true|false&&false&&false
= true&&false&&false
=false&&false
=false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CharmDeer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值