第四章:Java基本语法(二)

174 阅读4分钟

关于进制

  • 所有数字在计算机底层都以二进制形式存在。
  • 对于整数,有四种表示方式:
    • 二进制:0,1,满2进1,以0b或0B开头。
    • 十进制:0-9,满10进1.
    • 八进制:0-7,满8进1,以数字0开头表示。
    • 十六进制:0-9及A-F,满16进1,以0x或0X开头。此处的A-F不区分大小写。

二进制

  • Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位。
  • 二进制的整数有如下三种形式:
    • 原数:直接将一个数值换成二进制数,最高位是符号位。
    • 负数的反码:是对远吗按位取反,只是最高位(符号位)确定为1.
    • 负数的补码:其反码加1。
  • 计算机以二进制补码的形式保存所有的整数。
    • 正数的原码。反码、补码都相同。
    • 负数的补码是其反码+1。
  • 为什么要使用原码、反码、补码表示形式呢? 计算机辨别“符号位”显然会让计算机的基础电路设计变得十分复杂!于是人们想出了将符号位也参与运算的方法,我们知道,根据运算法则减去一个正数等于加上一个负数,集:1-1=1+(-1) = 0,所以及其可以只有加法而没有减法,这样计算机运算的设计就更简单了。

进制的基本转换

  • 十进制 二进制互换
    • 二进制转成十进制 乘以2的幂数
    • 十进制转成二进制 除以2取余数
  • 二进制 八进制互转
  • 二进制 十六进制互转
  • 十进制 八进制互转
  • 十进制 十六进制互转

运算符

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

  • 算术运算符
  • 赋值运算符
  • 比较运算符(关系运算符)
  • 逻辑运算符
  • 位运算符
  • 三元运算符

算术运算符的注意问题

  • 如果对负数取模,可以把魔术负号忽略不计。如:5%-2=1。但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
  • 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
  • “+”除字符串相加功能外,还能把非字符串转换成字符串。例如“5+5=”+5+5的结果时5+5=55。

赋值运算符

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

逻辑运算符

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

位运算符

运算符运算描述范例
<<左移空位补0,被益处的高位丢弃,空缺位补03 << 2 = 12
>>右移被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。3 >> 2 = 0
>>>无符号右移被移位二进制最高位无论是0或者是1,空缺位都用0补3 >>> 1 = 1
&二进制位进行&运算,只有1&1时结果是1,否则是0;6 & 3 =2
|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;6 | 3 =7
异或相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0;不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=16 ^ 3 = 5
~取反正数取反,各二进制码按补码各位取反,负数取反,各二进制码按补码各位取反,~6 = -7
  • 位运算是直接对整数的二进制进行的运算。

三云运算符

  • 格式:

1656290942371.png

  • 表达式1与表达式2为同种类型;
  • 三元运算符与if-else的了联系和区别:
    • 三元运算符可简化if-else语句;
    • 三元运算符要求必须返回一个结果。
    • if后的代码块可有多个语句。

运算符的优先级

  • 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总是优于下一行。
  • 只有单目运算符、三云运算符、赋值运算符是从右向左运算的。

image.png