运算符(二)

0、运算符(二)

1. ++ 自增  --自减
 1) ++ 和 – 为单目运算符,只对一个元素作运算,且只能用于变量,不能用于字面值和常量
 2) 单独使用时, ++(–)在变量前后没有区别
 3) 当参与运算时, ++(–)在变量前,则先让变量 +1(-1),在参与运算; ++(–)在变量后,则先使用原来变量的值参与运算,再让变量的值 +1(-1)

int a = 1;
System.out.println(a++); // 输出为 : 1
a = 1;
System.out.println(++a); // 输出为 : 2

 4) 对于 ++(–)底层实现的理解
   eg : num++ 等价于 num = (type) (num + 1);

2. 赋值运算符 :
  = += -= *= /= %=

int a = 1;
a+=1; // 等价于 a = a + 1;
int b = 4;
b/=2; //等价于 b = b / 2;

  注意 : 赋值运算符的优先级是最低的

3. 关系运算符(比较运算符)
  > < >= <= ==(等于) !=(不等于)
  注意 : 结果一定为 boolean 类型(true 或 false)
      在 Java 中,= 为赋值运算符,而 == 才是等于

4. 逻辑运算符
  & | !(非) ^(异或) &&(短路与) ||(短路或)
  特点 : 针对布尔型来做运算符,运算结果为 boolean 类型
   “&&(短路与)” :若左边表达式为false则不会对右边的表达式进行判断,因为结果必为false;
   “||(短路或)” : 若左边表达式结果为true则不会对右边的表达式进行判断,因为结果必为true。
   短语的逻辑运算符相当于普通的逻辑运算符效率更高些。

int a = 1,b = 2;
if (a++ < 0 & b++ > 2){}
System.out.println(a + " " + b);//2  3
a = 1; b = 2;
if (a++ < 0 && b++ > 2){}
System.out.println(a + " " + b);//2  2


5. 三目运算符
   格式 :表达式 ? 表达式1 : 表达式2
   注意 : 1) 符号要为英文半角符
      2) 表达式的结果要求必须为 boolean(true 或 false)
   执行流程 : 先执行问号前边的表达式,如果为 true 则执行表达式1,如果为 false 则执行表达式2
   三目表达式可以嵌套使用 :例如 :
   表达式 ? 表达式1 : (表达式 ? 表达式2 : 表达式3)

6. 位运算符
  &(按位与) |(按位或) ~(按位取反) ^(按位异或) <<(左移) >>(带符号右移) >>>(不带符号右移)
① &(按位与)
   概述 :将两个运算的整数转为二进制,按位执行与运算;当两位都为 1 时,结果为 1;如果有 0 ,则结果为 0
   eg : 1 & 2
    1 :0000 0000 0000 0000 0000 0000 0000 0001
    2 :0000 0000 0000 0000 0000 0000 0000 0010
  1 & 2 :0000 0000 0000 0000 0000 0000 0000 0000 ==> 0
   注意 : 最高位为符号位 : 0 为 正数, 1 为 负数
       计算机中数据存储和计算都是基于二进制补码
       二进制 :正数 : 原码 = 反码 = 补码
       负数 :原码 : 将其他进制的数直接转为二进制
           反码 : 在原码的基础之上,符号位不变,其他位取反
           补码 : 在反码的基础上 +1

② |(按位或)
   概述 :将两个运算的整数转为二进制,按位执行或运算;当两位都为 0 时,结果为 0;如果有 1,结果为 1

③ ~(非 / 按位非)
   概述 :单目运算符,对 1 取反为 0;对 0 取反为 1
   eg : ~(-1)
  -1 原码 :1000 0000 0000 0000 0000 0000 0000 0000
    反码 :1111  1111 1111  1111  1111  1111  1111  1110
    补码 :1111  1111 1111  1111  1111  1111  1111  1111
    >按位取反 :
  ~(-1):0000 0000 0000 0000 0000 0000 0000 0000 ==> 0

④ ^(按位异或)
   概述 :将两个运算的整数转为二进制,按位执行异或运算;如果两位相等则为 0,如果两位不相等则为 1

⑤ <<(左移运算符)
   格式 :a << b 将 a 整数左移 b 位
   概述 :先将整数转为二进制,然后将二进制数整体向左移动相应的位数,左侧多出来的位数直接舍弃,右侧空出来的位数补 0
   eg : 2 << 1
    2 :  0000 0000 0000 0000 0000 0000 0000 0010
 2 << 1 : 0  0000 0000 0000 0000 0000 0000 0000 010 0 ==> 4
   在一定范围内, a << b 等价于 a * 2b

⑥ >>(右移运算符)
   格式 :a >> b 将 a 整数右移 b 位
   概述 :先将整数转为二进制,然后将二进制数整体向左移动相应的位数,右侧多出来的位数直接舍弃,左侧空出来的位数,如果当前为负数则补 1,如果当前为正数则补 0
   eg : -2 >> 1
    -2 :原码 :1000 0000 0000 0000 0000 0000 0000 0010
      反码 :1111  1111  1111  1111 1111  1111  1111  1101
      补码 :1111  1111  1111  1111 1111  1111  1111  1110
     -2 >> 1:1111 1111  1111  1111 1111 1111 1111 1111 0 (补码)
         1111 1111  1111  1111 1111 1111 1111 1110   (反码)
         1000 0000 0000 0000 0000 0000 0000 0001  (原码)
     -2 >> 1 :结果为 -1
   在一定范围内, a >> b 等价于 a / (2b)

⑦ >>>(无符号右移)
   格式 :a >>> b 将 a 整数向右无符号移动 b 位
   概述 :先将整数转为二进制,然后将二进制数整体向右移动相应的位数,右侧多出来的位数直接舍弃,左侧空出来的位数补 0

int a = -1;
System.out.println(a >> 32); // -1
System.out.println(a >>> 32); // -1
System.out.println(a << 32); // -1
//当一个整数,左移或右移其类型二进制位数的整数倍时,还是等于其原数值

1、补充知识点

1) + 求和; 拼接字符串

   当字符串和基本数据类型拼接时, + 号左边或者右边有字符串类型时,这个 + 号就为拼接字符串功能; 当 + 号左右两边都为数值类型时, 这个 + 号就为求和功能;

System.out.println(1 + 2 + "HelloWorld"); //3HelloWorld
System.out.println(1 + "" + 2 + "HelloWorld"); //12HelloWorld

2) Scanner 获取用户键盘输入的数据

   ① 导包
     import java.util.Scanner;
     import 为关键字,用于导包;位置 :位于类定义的上方,package 的下方
   ② 创建 Scanner 对象
    Scanner scanner = new Scanner(System.in);
   ③ 通过对象调用方法
    scanner.nextInt() — 获取用户输入的 int 类型的整数
    scanner.nextDouble() — 获取用户输入的 double 类型的数据
    scanner.next() — 获取用户输入的字符串类型的数据
   ④ 关闭 Scanner
    scanner.close();

一起加油吧,frighting!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值