java运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

  1. 算术运算符
  2. 赋值运算符
  3. 比较运算符(关系运算符)
  4. 逻辑运算符
  5. 位运算符
  6. 三元运算符

1、算术运算符

在这里插入图片描述
算术运算符的注意问题
8. 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是
负数则不可忽略。此外,取模运算的结果不一定总是整数。
9. 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只
保留整数部分而舍弃小数部分。 例如:int x=3510;x=x/1000*1000; x的
结果是3000
10. “+”除字符串相加功能外,还能把非字符串转换成字符串.例如:
System.out.println(“5+5=”+5+5); //打印结果是? 5+5=55 ?

练习1:算术运算符:自加、自减

public static void main(String[] args) {
        int i1=10;
        int i2=20;
        int i=i1++;//先算再+ i=10;i1=11
        System.out.println("i="+i);
        System.out.println("i1="+i1);
        i=++i1; //先算+再赋值
        System.out.println("i="+i); //i=12
        System.out.println("i1="+i1);//i1=12
        i=i2--;//先赋值再减
        System.out.println("i="+i); //i=20
        System.out.println("i2="+i2);//i1=19
        i=--i2; //先减了再赋值
        System.out.println("i="+i); //i=18
        System.out.println("i2="+i2);//i1=18
        }

随意给出一个整数,打印显示它的个位数,十位数,百位数的值。
格式如下:
数字xxx的情况如下:
个位数:
十位数:
百位数:

		int a=557;
        int ge=a%10;
        int shi=a/10%10;
        int bai=a/100;
        System.out.printf("%d\t%d\t%d\n",bai,shi,ge);

2. 赋值运算符

符号:=

  • 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制
    类型转换原则进行处理。
  • 支持连续赋值。
  • 扩展赋值运算符: +=, -=, *=, /=, %=

思考1:
short s = 3; s = s+2; ① s += 2; ② ①和②有什么区别?
在这里插入图片描述

①会自动转为int然后计算。
②则不会。
思考2:

int i = 1;
i *= 0.1;
System.out.println(i);//0 double转int精度丢失
i++;
System.out.println(i);// 1

思考3:

int m = 2;
int n = 3;
n *= m++; //先算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,再自增;
/*
  10+10 => 20
  20++ => 21
  21+10 => 31
  31++ =>32

*/
System.out.println(n);//32

3、比较运算符

在这里插入图片描述

  1. 比较运算符的结果都是boolean型,也就是要么是true,要么是false
  2. 比较运算符“==”不能误写成“=” 。

思考1:

boolean b1 = false;
//区分好==和=的区别。
//=是赋值运输符 ==是运算符
if(b1==true)
System.out.println("结果为真");
else
System.out.println("结果为假");
//结果为假

4、逻辑运算符

&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
在这里插入图片描述

  1. 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写
    x>3 & x<6
    2.“&”和“&&”的区别:
    • 单&时,左边无论真假,右边都进行运算
    • 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
  2. “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
  3. 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
    理解:异或,追求的是“异”!

练习1:

 public static void main(String[] args) {
        int x=1;
        int y=1;
        if(x++==2& ++y==2){//左边无论真假,右边都进行运算,
        //x++==2为假 因为x=1不等于2 ,所有后面的会执行,++y==2为真,因为先加再比较
            x=7;
        }
        System.out.println("x="+x+"y="+y);//x=2y=2
    }

练习2:

 int x=1,y=1;
        if(x++==2 && ++y==2){//如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
        //进不去判断因为x++==2为假,因为是&&逻辑运算符,后面的++y==2就不会运算则y=1,x=2
            x=7;
        }
        System.out.println("x="+x+"y="+y);

练习3:

		int x = 1,y = 1;
        if(x++==1 | ++y==1){
        //左边无论真假,右边都进行运算;。因为x++==1为真所以为x=7
            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++==1为真所以为x=7,++y==1不执行则y=1
            x =7;
        }
        System.out.println("x="+x+",y="+y);//x=7,y=1

面试题:

  		boolean x=true;
        boolean y=false;
        short z=42;
         //if(y == true)
        if((z++==42)&&(y=true))z++;
        //z++==42为真,然后z自增,z=43,进入if语句再自增,最后z=44
        if((x=false) || (++z==45)) z++;
        //++z==45,z先自增,z=45,然后z==45为真,进入if语句再自增z=46
         System. out.println("z="+z);

5、位运算符

在这里插入图片描述
位运算是直接对整数的二进制进行的运算
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
~符号
在这里插入图片描述
^位运算符
在这里插入图片描述

6、三元运算符

格式:
(条件表达式)?表达式1:表达式2;

  • 条件表达式为true,运算后的结果是表达式1;
  • 条件表达式为false,运算后的结果是表达式2;

表达式1和表达式2为同种类型

三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句
2)三元运算符要求必须返回一个结果。
3)if后的代码块可有多个语句

练习:
获取两个数中的较大数

		int num1=0,num2=1;
        System.out.println(num1>num2?num1:num2);

获取三个数中的较大数

		int a = 5, b = 8 , c = 9;

        a=a>b?a:b; //a与b相比较,将较大值赋值给a

        a=a>c?a:c; //已经获得较大值得a再与c相比较,将较大值再次赋值给a

        System.out.println(a); //输出a的值为9

运算符的优先级

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
  2. 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值