Java学习笔记第05期——Java基础语法Part4

Java 基础语法 Part4

在有关我笔记分享的博客中,我都会将MD笔记文件另外发布,方便朋友们下载学习。(粉丝可下载)
本期笔记文件下载地址:https://download.csdn.net/download/lbwnbnbnbn/15225075

Ayo大家好我是Tomatooo,这是我的Java学习笔记第4期,话不多说直插主题——

运算

整数运算

Java整数运算遵循四则运算原则,可以使用括号等

整数在运算时只会保留整数部分,并不像设想的那样会四舍五入

求余运算使用%

示例:

int a = 66666%123 //这里是求66666/123的余数

特别注意:整数的除法对于除数为0时运行时将报错,但编译不会报错。

溢出

之前笔记提到过,整数存在范围限制,如果计算结果超出了范围,就会造成溢出,而溢出不会出错,只会得到一个意料之外的结果

自增/自减

Java提供了++运算和--运算,它们可以对一个整数进行加1和减1的操作

注意:++写在前面和后面计算结果是不同的,++n表示先加1再引用n,n++表示先引用n再加1。

移位运算

在计算机中,整数总是以二进制的形式表示。

例如,int类型的整数7使用4字节表示的二进制如下:

00000000 00000000 00000000 00000111

可以对整数进行移位运算。对整数7左移1位将得到整数14,左移两位将得到整数28

示例:

int n = 7;       // 00000000 00000000 00000000 00000111 = 7
int a = n << 1;  // 00000000 00000000 00000000 00001110 = 14
int b = n << 2;  // 00000000 00000000 00000000 00011100 = 28
int c = n << 28; // 01110000 00000000 00000000 00000000 = 1879048192
int d = n << 29; // 11100000 00000000 00000000 00000000 = -536870912

左移29位时,由于最高位变成1,因此结果变成了负数。

同理,右移符号为>>

还有一种无符号的右移运算,使用>>>,它的特点是不管符号位,右移后高位总是补0,因此,对一个负数进行>>>右移,它会变成正数,原因是最高位的1变成了0

byteshort类型进行移位时,会首先转换为int再进行位移。

仔细观察可发现,左移实际上就是不断地×2,右移实际上就是不断地÷2。

位运算

与、或、非和异或的运算

  • 与运算:必须两个数同时为1,结果才为1
  • 或运算:只要任意一个为1,结果就为1
  • 非运算:01互换

示例:

n = ~0; // 1
n = ~1; // 0
  • 异或运算:如果两个数不同,结果为1,否则为0

示例:

n = 0 ^ 0; // 0
n = 0 ^ 1; // 1
n = 1 ^ 0; // 1
n = 1 ^ 1; // 0

对两个整数进行位运算,实际上就是按位对齐,然后依次对每一位进行运算。

public class Main {
    
    
    public static void main(String[] args) {
    
    
        int i = 167776589; // 00001010 00000000 00010001 01001101
        int n = 167776512; // 00001010 00000000 00010001 00000000
        System.out.println(i & n); // 167776512
    }
}

运算优先级

在Java的计算表达式中,运算优先级从高到低依次是:

  • ()
  • ! ~ ++ --
  • * / %
  • + -
  • << >> >>>
  • &
  • |
  • += -= *= /=

不用全部记住,要确保正确只要加括号就好

看都看到这儿了,不关注一下嘛(~ ̄▽ ̄)~

猜你喜欢

转载自blog.csdn.net/lbwnbnbnbn/article/details/113795032