• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

索静丨LLH

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Java-运算符

第三章 Java运算符

【1】Java 语言支持如下运算符:

  • 算术运算符   

  +,-,*,/,%,++(自增),--(自减)

  • 赋值运算符 

  =  

  • 扩展赋值运算符

  +=,-=,*=,/=

  • 关系运算符

   >,<,>=,<=,==,!=

  • 逻辑运算符

  &,|, &&,||,!,^

  • 位运算符

   &,|,^,~ , >>,<<,>>> (了解!!!)

  • 条件运算符

   ?:

【2】相关概念辨析

+        运算符  操作符         Operator

5+6    表达式                     expression

5  6     操作数                     Operand

int m =5+6;    语句         Sentence

 

算术运算符

 

/和%

【1】/   除法运算符 : 表示两个数相除运算  

     %   取余运算符: 用来求余数的

1.  public class TestOpe01{
2.          public static void main(String[] args){
3.                  //打印结果:
4.                  System.out.println(12/3);
5.                  System.out.println(12%5);
6.                  System.out.println(12/3.0);
7.                  System.out.println(12%5.0);
8.          }
9.  }

 

【2】练习:

1.  import java.util.Scanner;
2.  public class TestOpe02{
3.          public static void main(String[] args){
4.                  //实现功能:任意给出一个四位数,求出每位上的数字并输出
5.                  
6.                  //1.任意给出一个四位数:
7.                  Scanner input = new Scanner(System.in);
8.                  System.out.println("请录入一个四位数:");
9.                  int num = input.nextInt();
10.                
11.                
12.                //2.求出每位上的数字:
13.                //个位数:
14.                int num1 = num%10;
15.                //十位数:
16.                int num2 = num/10%10;//1234--->123--->3
17.                //百位数:
18.                int num3 = num/100%10;//1234--->12--->2
19.                //千位数:
20.                int num4 = num/1000;//1234--->1
21.                
22.                
23.                //3.输出每位上的数字:
24.                System.out.println("个位上的数为:"+num1);
25.                System.out.println("十位上的数为:"+num2);
26.                System.out.println("百位上的数为:"+num3);
27.                System.out.println("千位上的数为:"+num4);
28.        }
29.        
30.}

 

+

【1】+的作用:

(1)表示正数

(2)表示相加操作

(3)进行字符串的拼接

 

【2】代码练习:

1.  public class TestOpe03{
2.          public static void main(String[] args){
3.                  //表示正数:
4.                  System.out.println(+5);//5
5.                  //相加操作:
6.                  System.out.println(5+6);//11
7.                  System.out.println(5+'6');//59
8.                  //字符串的拼接:
9.                  //规则:+左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
10.                int num = 56;
11.                System.out.println("num="+num);//"num=56" ---> num=56
12.                System.out.println(5+6+"7");//11+"7"--->"117"  --->117
13.                System.out.println(5+'6'+"7");//59 +"7"--->"597" --->597
14.                System.out.println("5"+6+"7");//"56"+"7"  --->"567"--->567
15.                System.out.println("5"+'6'+"7");//"56"+"7"--->"567"--->567
16.                System.out.println("5"+'6'+'7');//"56"+'7'--->"567"---567
17.        }
18.}

 

++

【1】++:

1.  public class TestOpe04{
2.          public static void main(String[] args){
3.                  int a = 5;
4.                  a++;//理解为:相当于  a=a+1 操作  
5.                  System.out.println(a);//6
6.                  
7.                  a = 5;
8.                  ++a;//理解为:相当于  a=a+1 操作  
9.                  System.out.println(a); //6
10.                
11.                //总结:++单独使用的时候,无论放在前还是后,都是加1操作
12.                
13.                //将++参与到运算中:
14.                //规则:看++在前还是在后,如果++在后:先运算,后加1   如果++在前,先加1,后运算
15.                a = 5;
16.                int m = a++ + 7;//先运算  m=a+7  再加1:  a = a+1 
17.                System.out.println(m);//12
18.                System.out.println(a);//6
19.                
20.                a = 5;
21.                int n = ++a + 7;//先加1  a=a+1  再运算:  n = a+7 
22.                System.out.println(n);//13
23.                System.out.println(a);//6
24.        }
25.}

 

无论这个变量是否参与到运算中去,只要用++运算符,这个变量本身就加1操作

只是说如果变量参与到运算中去的话,对运算结果是产生影响:

看++在前还是在后,如果++在后:先运算,后加1   如果++在前,先加1,后运算

  

【2】练习:

1.  public class TestOpe05{
2.          public static void main(String[] args){
3.                  int a = 5;
4.                  System.out.println(a++ + a++);
5.                  System.out.println(a++ + ++a);
6.                  System.out.println(++a + a++);
7.                  System.out.println(++a + ++a);
8.          }
9.  }

 

运算过程:

 

赋值运算符

【1】=的作用: 将等号右侧的值赋给等号左侧:

int age = 19;

int age = 10+3+8;

 

【2】练习:

1.  public class TestOpe06{
2.          public static void main(String[] args){
3.                  //任意给出两个数,交换两个数并输出:
4.                  //1.给出两个数:
5.                  int num1 = 10;
6.                  int num2 = 20;
7.                  
8.                  //2.输出交换前的两个数:
9.                  System.out.println("交换前:"+num1+"\t"+num2);
10.                
11.                //3.交换
12.                /*
13.                错误代码:
14.                num1 = num2;
15.                num2 = num1;    
16.                */              
17.                //解决办法:
18.                //引入一个中间变量:
19.                int t;
20.                t = num1;
21.                num1 = num2;
22.                num2 = t;
23.                /*
24.                int t;
25.                t = num2;
26.                num2 = num1;
27.                num1 = t;
28.                
29.                */
30.                
31.                //4.输出交换后的两个数:
32.                System.out.println("交换后:"+num1+"\t"+num2);
33.        }
34.}
35. 

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

 

扩展赋值运算符

【1】代码:

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

 

内存:

  

【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);

 

关系运算符

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

 

逻辑运算符

  &,|, &&,||,!,^

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

 

代码:

1.  public class TestOpe09{
2.          public static void main(String[] args){
3.                  // 逻辑与 :& 规律:只要有一个操作数是false,那么结果一定是false
4.                  System.out.println(true&true);
5.                  System.out.println(true&false);
6.                  System.out.println(false&false);
7.                  System.out.println(false&true);
8.                  
9.                  // 短路与:&& 规律:效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false
10.                System.out.println(true&&true);
11.                System.out.println(true&&false);
12.                System.out.println(false&&false);
13.                System.out.println(false&&true);
14.                
15.                // 逻辑或:| 规律:只要有一个操作数是true,那么结果一定是true
16.                System.out.println(true|true);
17.                System.out.println(true|false);
18.                System.out.println(false|false);
19.                System.out.println(false|true);
20.                
21.                // 短路或:|| 规律:效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
22.                System.out.println(true||true);
23.                System.out.println(true||false);
24.                System.out.println(false||false);
25.                System.out.println(false||true);
26.                
27.                //逻辑非:   !  规律:相反结果
28.                System.out.println(!true);//false
29.                System.out.println(!false);//true
30.                
31.                //逻辑异或: ^  规律:两个操作数相同,结果为false,不相同,结果为true
32.                System.out.println(true^true);
33.                System.out.println(true^false);
34.                System.out.println(false^false);
35.                System.out.println(false^true);
36.        }
37.}

 

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

1.  public class TestOpe10{
2.          public static void main(String[] args){
3.                  int i=8;
4.                  System.out.println((5>7)&&(i++==2)); //false
5.                  System.out.println(i);  //8 
6.                  
7.                  
8.                  int a=8;
9.                  System.out.println((5>7)&(a++==2)); //false
10.                System.out.println(a); //9
11.                
12.                
13.                int m=8;
14.                System.out.println((5<7)&&(m++==2)); //false
15.                System.out.println(m); //9
16.                
17.                int b=2;
18.                System.out.println((5<7)&(b++==2)); //true
19.                System.out.println(b);  //3
20.                
21.                int c=2;
22.                System.out.println((5<7)&(++c==2)); //false
23.                System.out.println(c);  //3
24.        }
25.}

 

条件运算符

【1】条件运算符:又称:  三元运算符/三目运算符

【2】格式:

  a?b:c

其中a是一个布尔类型的表达式,返回结果要么是true要么false,通过a的结果决定最终表达式的结果:

如果a的结果是true,那么表达式最终结果为b

如果a的结果是false,那么表达式最终结果为c

代码:

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

 

练习:

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

 

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

 

位运算符(了解)

位运算符:&,|,^,~ , >>,<<,>>>

 

如何区分逻辑运算符和位运算符:

逻辑运算符:左右连接的是布尔类型的操作数

位运算符:左右连接的是具体的数值

 

 

【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 = 5

  

【7】~反:

~6  = -7

 

PS:

byte类型的表数范围的 -128是怎么算出来的 

127: 01111111

-128:  10000000

一看就是个负数

减1:    01111111

取反:   10000000  ---》2^7  = 128

加负号:  -128

运算符总结

 

 

运算符的优先级别

 

不需要去刻意的记优先级关系

赋值<三目<逻辑<关系<算术<单目

理解运算符的结合性

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

案例:

   5<6 | &apos;A&apos;>&apos;a&apos; && 12*6<=45+23&&!true

=5<6 | &apos;A&apos;>&apos;a&apos; && 12*6<=45+23&&false

= 5<6 | &apos;A&apos;>&apos;a&apos; &&72<=68&&false

= true|false&&false&&false

= true&&false&&false

=false&&false

=false

 

posted on 2023-11-09 00:43  索静丨LLH  阅读(21)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3