java语言基础3--运算符

一、运算符

.运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
算术运算符
赋值运算符
比较运算符(关系运算符)
逻辑运算符
位运算符
三元运算符

1. 运算符之一:算术运算符

在这里插入图片描述
注意:

  1. 7%5 其中7是被除数,5是除数 。 余数正负号与被除数相同

  2. 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是 负数则不可忽略。此外,取模运算的结果不一定总是整数。

  3. 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只 保留整数部分而舍弃小数部分。

  4. “+”除字符串相加功能外,还能把非字符串转换成字符串.例如: System.out.println(“5+5=”+5+5); //打印结果是? 5+5=55 ?

举个例子:除数/ 、取模% +±- **

package com.atguigu.java;

public class HelloWorld {
    public static void main(String[] args){
        //除号:/
        int num1 = 12;
        int num2 = 5;
        int result1 = num1 / num2;
        System.out.println(result1);        //2

        int result2 = num1 / num2 * num2;   //10
        System.out.println(result2);

        double result3 = num1 / num2;
        System.out.println(result3);        //2.0

        double result4 = num1 / num2 + 0.0; //2.0
        double result5 = num1 / (num2 + 0.0);//2.4
        double result6 = (double)num1 / num2;//2.4
        double result7 = (double)(num1 / num2); //2.0
        System.out.println(result4);
        System.out.println(result5);
        System.out.println(result6);
        System.out.println(result7);

        //%:取余运算
        //结果的符号与被取模数的符号相同
        //开发中,经常使用%来判断能否被除尽的情况
        int m1 = 12;
        int n1 = 5;
        System.out.println("m1 % n1 = "  + m1 % n1); //2

        int m2 = -12;
        int n2 = 5;
        System.out.println("m2 % n2 = "  + m2 % n2);//-2


        int m3 = 12;
        int n3 = -5;
        System.out.println("m3 % n3 = "  + m3 % n3); //2

        int m4 = -12;
        int n4 = -5;
        System.out.println("m4 % n4 = "  + m4 % n4);//-2
    }
}

结果
在这里插入图片描述

public class HelloWorld {
    public static void main(String[] args){


        //(前)++
        //(后)++
        int a1 = 10;
        int b1 = ++a1;
        System.out.println("a1 = "  + a1 + ", b1= " + b1 );//a1 = 11, b1= 11

        int a2 = 10;
        int b2 = a2++;
        System.out.println("a2 = "  + a2 + ", b2= " + b2 );//a2 = 11, b2= 10

        //注意:
        short s1 = 10;
        //s1 = s1 + 1
        //s1 = (short)(s1 + 1);//正确的
        s1++;//自增1不会改变本身变量的数据类型
        System.out.println(s1);  //11


        //(前)--先自减1,后运算
        //(后)--先运算,后自减1
        int a3 = 10;
        int b3 = --a3;
        System.out.println("a3 = "  + a3 + ", b3= " + b3 );//a3 = 9, b3= 9

        int a4 = 10;
        int b4 = a4--;
        System.out.println("a4 = "  + a4 + ", b4= " + b4 );//a4 = 9, b4= 10
        
    }
}

结果
在这里插入图片描述

练习

(1)算术运算符:自加、自减 **

public class HelloWorld {
    public static void main(String[] args){
        int i1 = 10;
        int i2 = 20;
        int i = i1++;
        System.out.print("i="+i);
        System.out.println(", i1="+i1);  //i=10, i1=11

        i = ++i1;
        System.out.print("i="+i);
        System.out.println(", i1="+i1);  //i=12, i1=12

        i = i2--;
        System.out.print("i="+i );
        System.out.println(", i2="+i2);  //i=20, i2=19

        i = --i2;
        System.out.print("i="+i);
        System.out.println(", i2="+i2);  //i=18, i2=18


    }
}

在这里插入图片描述

(2)练习2

在这里插入图片描述


public class HelloWorld {
    public static void main(String[] args){
        int num = 187;
        int bai = num / 100;
        int shi = num % 100 / 10;
        int ge  = num % 10;
        System.out.println("百位数为: " + bai);
        System.out.println("十位数为: " + shi);
        System.out.println("个位数为: " + ge);
    }
}

在这里插入图片描述

2.运算符之二:赋值运算符

在这里插入图片描述

  • 注意:使用赋值运算符不会改变本身的数据类型。

举个例子

package com.atguigu.java;

public class HelloWorld {
    public static void main(String[] args){
        //赋值符号:=
        int i1 = 10;
        int j1 = 10;

        int i2,j2;
        //连续赋值
        i2 = j2 = 10;
        int i3 = 10 ,j3 = 20;
        System.out.println("i1= "+i1  + ", i2= "+ i2 + ", i3= "+ i3);   //i1= 10, i2= 10, i3= 10
        System.out.println("j1= "+j1  + ", j2= "+ j2 + ", j3= "+ j3);   //j1= 10, j2= 10, j3= 20

        //*****************************
        int num1 = 10;
        num1 += 2;                  //不会改变变量本身的数据类型
        System.out.println(num1);   //12

        int num2 = 12;
        num2 %= 5;
        System.out.println(num2);   //2
    }
}

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

练习

在这里插入图片描述
思考1:
①不通过,2通过

思考2

		int i = 1;
        i *= 0.1;
        System.out.println(i);  //0
        i++;
        System.out.println(i);  //1

思考3

 		int m = 2;
        int n = 3;
        n *= m++;
        System.out.println("m=" + m);   //3
        System.out.println("n=" + n);   //6

思考4

		int n = 10;
        n += (n++) + (++n);      //n=n+(n++)+(++n)  即 n =10+10+12
        System.out.println(n);	//32

.

3.运算符之三:比较运算符

在这里插入图片描述
举例子:

int i = 10;
        int j = 20;

        System.out.println(i == j);     //false
        System.out.println(i = j);      //20

        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b2 == b1);   //false
        System.out.println(b2 = b1);    //true

4.运算符之四:逻辑运算符

在这里插入图片描述
在这里插入图片描述

举个例子1:& 与&&

		boolean b1 = true;
        int num1 = 10;
        if(b1 & (num1++ > 0)){
            System.out.println("我是好人");
        }else {
            System.out.println("我是坏人");
        }
        System.out.println("num1 = " + num1);
//结果 : 我是好人   num1=11

        boolean b2 = true;
        int num2 = 10;
        if(b2 && (num2++ > 0)){
            System.out.println("我是好人");
        }else {
            System.out.println("我是坏人");
        }

        System.out.println("num2 = " + num2);
//结果: 我是好人   num1=11

改变一下:b1改成false

   boolean b1 = true;
        b1 = false;
        int num1 = 10;
        if(b1 & (num1++ > 0)){
            System.out.println("我是好人");
        }else {
            System.out.println("我是坏人");
        }
        System.out.println("num1 = " + num1);
//结果 : 我是坏人   num1=11

        boolean b2 = true;
        b2 = false;
        int num2 = 10;
        if(b2 && (num2++ > 0)){
            System.out.println("我是好人");
        }else {
            System.out.println("我是坏人");
        }
        System.out.println("num2 = " + num2);
//结果 : 我是坏人   num1=10

//b2这一段相当于电路短路,前面为fale,后面的运算都忽略掉了

区分& 与&&

  1. 相同点1:& 与&&的运算结果相同
  2. 相同点2: 当符号左边是true时,二者都会执行符号右边的运算
  3. 不同点:当符号左边是false 时,& 继续执行符号右边的运算。&&不再执行符号右边的计算。
  4. 开发中,推荐使用&&

举个例子2:| 与 ||

boolean b3 = false;
        //b3 = false;
        int num3 = 10;
        if(b3 | (num3++ > 0)){
            System.out.println("我是好人");
        }else {
            System.out.println("我是坏人");
        }
        System.out.println("num3 = " + num3);
        
        //结果:我是好人 , num3 = 11


        boolean b4 = false;
        //b4 = false;
        int num4 = 10;
        if(b4 || (num4++ > 0)){
            System.out.println("我是好人");
        }else {
            System.out.println("我是坏人");
        }
        System.out.println("num4 = " + num4);
        
        //结果: 我是好人 , num4 = 11

区分:| 与 ||

  1. 相同:1: | 与 || 的运算结果相同
  2. 相同点2:当符号左边是false时,二者都会执行符号右边的运算
  3. 不同点3:当符号左边是true时,| 继续执行符号右边的运算,而||不再执行符号右边的运算。
  4. 开发中,推荐使用||

练习

练习1

int x = 1;
        int y=1;
        if(x++==2 & ++y==2){
            x =7;
        }
        System.out.println("x="+ x +" ,y="+y);
        //结果为:x=2 ,y=2

练习2

		int x = 1, y = 1;
        if(x++==2 && ++y==2){
            x =7;
        }
        System.out.println("x="+x+",y="+y);
        
        //结果为:x=2,y=1
        //原因:&&  第一个为false ,第二个不进行运算。

练习3:

 int x = 1,y = 1;
        if(x++==1 | ++y==1){
            x =7;
        }
        System.out.println("x="+x+",y="+y);
        
        //结果:x=7,y=2

练习4

 int x = 1,y = 1;
        if(x++==1 || ++y==1){
            x =7;
        }
        System.out.println("x="+x+",y="+y);
        
        //运算结果为:x=7,y=1
        // 原因:|| 左边为真时,右边不参与计算

面试题:
在这里插入图片描述

5.运算符之五:位运算符

要求:能看的懂
在这里插入图片描述
结论:
1.位运算符操作的都是整型的数据
2.<<:在一定范围内,每向左移1位,相当于 * 2
>> :在一定范围内,每向右移1位,想当于 / 2

 		int i = 21;
        System.out.println("i << 2 : "+ (i << 2));
        System.out.println("i << 3 : " + (i << 3));
        System.out.println("i << 27: " + (i << 27));
        
        //结果
        //i << 2 : 84
        //i << 3 : 168
        //i << 27: -1476395008


        int i = 21;
        i = -21;
        System.out.println("i << 2 : "+ (i << 2));
        System.out.println("i << 3 : " + (i << 3));
        System.out.println("i << 27: " + (i << 27));

        //结果
        // i << 2 : -84
        //i << 3 : -168
        //i << 27: 1476395008

面试题:
最高效方式的计算 2* 8 ?
答案: 2 << 3 或 8 << 1

6运算符之六:三元运算符

在这里插入图片描述
举例:

 		int m = 12;
        int n = 5;
        int max = (m > n)? m : n ;
        System.out.println(max);
//  结果:12

在这里插入图片描述

练习:交换两个变量

int num1 = 10 ;
        int num2 = 20 ;
        System.out.println("num1 = " + num1 + " ,num2 = "+ num2);
        
        //方式一:定义临时变量方式
        //推荐的方式
        int temp = num1;
        num1 = num2;
        num2 = temp;
        
        //方式二:好处:不用定义临时变量
        //弊端:①相加操作可能超出存储范围  ②有局限性:只能适用于数值类型
        //num1 = num1 + num2;
        //num2 = num1 - num2;
        //num1 = num1 - num2;
        
        //方式三:使用位运算符
        //有局限性:只能适用于数值类型
        //num1 = num1 ^ num2;
        //num2 = num1 ^ num2;
        //num1 = num1 ^ num2;
        
        System.out.println("num1 = " + num1 + ", num2= " + num2);

        //结果:
        //num1 = 10 ,num2 = 20
        //num1 = 20, num2= 10

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值