【Java基础】特殊字符&运算符

转义字符

  • 通过反斜杠改变后面所跟字符的含义
System.out.println("hello " world");
System.out.println("hello \” world");
//windows下的换行是\r\n,linux下的换行是\n
System.out.println("hello\r\n \\ world");
System.out.println("hello\r\n \\no! \b");

在这里插入图片描述

算数运算符

+-*/%++
自增自减
  • %求余结果的正负由被除数决定

    System.out.println(5%2);//1
    System.out.println(5%-2);//1
    System.out.println(-5%2);//-1
    System.out.println(-5%-2);//-1
    
    int num = 4567;
    int ge=num%10;
    int shi=num/10%10;
    int bai=num/100%10;
    int qian=num/1000;
    
  • x++、++x的区别

    int a=5,b;
    b=a++;//先取变量a的值赋给左边的变量,然后a再自增
    System.out.println("a==" + a + ", b==" + b);
    c=++a;//a先自增,再取变量a的值赋给左边的变量
    System.out.println("a==" + a + ", c==" + c);
    
    int x=2,y;
    y = x++ + x++ + ++x ;//y=2+3+5=10
    

赋值运算符

=a+=5a-=5*=/=%=
赋值a=a+5a=a-5a=a*5a=a/5a=a%5
int a=66;
a+=5;
short s=5;
//s=s+6;//不兼容的类型:从int转换到short可能会有损失
s+=6;//内部做了类型转换
System.out.println(s);

关系运算符

>>=<<===!=
大于大于或等于小于小于或等于等于不等于
  • 使用关系运算符,结果只有两种可能,要么关系成立,要么关系不成立

    • 关系成立,值为true
    • 关系不成立,值为false
  • 表达式:由变量(常量)和运算符组合在一起形成的式子

    表达式是有值的

    int a=55,b=66;
    System.out.println(a>b);//false 输出的是表达式a>b的值
    System.out.println(a<b);//true
    System.out.println(88>66);//true
    System.out.println(a=99);//99  赋值表达式,赋的值就是整个表达式的值
    System.out.println(a==99);//false
    System.out.println(a!=b);//true
    System.out.println(a+b);//算术表达式
    

逻辑运算符

!&&||&|
(短路)与(短路)或
  • &&:短路与,如果左边的表达式的值为false,那么就不在计算右边表达式的值了

  • &:如果左边的表达式的值为false,仍然计算右边表达式的值

    true && true == true
    true && false == false
    false && true == false
    false && false == false

  • ||:短路或,如果左边的表达式的值为true,那么就不在计算右边表达式的值了

  • |:如果左边的表达式的值为true,仍然计算右边表达式的值

    true && true == true
    true && false == true
    false && true == true
    false && false == false

  • !:非

    • 取反

位运算符

&|^~<<>>>>>
按位与按位或按位异或按位取反左移右移无符号右移
  • &:按位与

    • 6&3

      0000 0110 →6
      0000 0011 →3
      0000 0010 →2

    • “与运算”的特殊用途:
      (1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
      (2)取一个数中的指定位
      方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
      例:设X=10101110,
      取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;
      还可用来取X的2、4、6位。

  • |:按位或

    • 7|4

      0000 0110 →6
      0000 0011 →3
      0000 0010 →2

  • ^:按位异或

    • 两个数不同,结果为1

    • 一个数异或同一个数两次,还是自身这个数

    • 6^5

      0000 0110 →6
      0000 0101 →5
      0000 0011 →3
      0000 0101 →5
      0000 0110 →6

  • ~:按位取反

    • 正数按位取反不+1,结果为其负数-1

      负数的补码是其正数的原码按位取反+1

      System.out.println(~8);//-9
      

      0000 1000 →8
      1111 0111 (计算机内部用补码进行运算
      ​ 高位是1,可判断出,是负数的补码)
      1111 0110 (负数的反码)
      0000 1001 (其正数的原码 值为9)

  • <<:左移

    • 左移,低位补0

    • 6<<2

      ​ |00000000 00000000 00000000 00000110 →6
      00|00000000 00000000 00000000 00001100 →6*22==24

  • x>>y:右移

    • 高位是什么,就补什么

    • 6>>2

      00000000 00000000 00000000 00000110| →6
      00000000 00000000 00000000 00000001|10 →6/22==1

    • -6>>2

      11111111 11111111 11111111 11111010| → -6
      11111111 11111111 11111111 11111110|10 →
      00111111 11111111 11111111 11111101(反码)
      00000000 00000000 00000000 00000010(原码)

  • x>>>y:无符号右移

    • 高位补0,因为补的是0,不会改变二进制位

    • -6>>>2

      11111111 11111111 11111111 11111010| → -6
      00111111 11111111 11111111 11111110|10 → 2
      00111111 11111111 11111111 11111101(反码)
      00000000 00000000 00000000 00000010(原码)

三元运算符

  • 判断 ? 为true取值 : 为false取值

    int a = 5, b = 7, c;
    c = a > b ? a : b;
    System.out.println(c);//7
    
  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值