java 中int类型取余 java int除以int_自增

算术运算符

基本四则运算符: + - * / %

四则运算应该大家都很熟悉,值得注意的是除法:

1、int / int 的到的结果只能是int,如需得到小数则要借用double类型来计算

如:

int a = 1;
int b = 2;
System.out.println(a / b);
// 结果为 0

//如要得到0.5,得把其中一个转为double
System.out.println((double)a / b);

运行结果:

java 中int类型取余 java int除以int_java 中int类型取余_02

2、0不能作为除数

int a = 1;
int b = 0;
System.out.println(a / b)
// 运行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:5)

3、%是取余符号不仅能对int取模,也能对double取模

System.out.println(11.3 %4);

运行结果:

java 中int类型取余 java int除以int_java 中int类型取余_03

复合运算符

运算符

描述

例子

+=

将左边操作数与右边操作数的值相加后,在赋值给左边操作数

a += 1 等价于 a = a + 1

-=

将左边操作数与右边操作数的值相减后,在赋值给左边操作数

a -= 1 等价于 a = a - 1

*=

将左边操作数与右边操作数的值相乘后,在赋值给左边操作数

a *=1 等价于 a = a * 1

/=

将左边操作数与右边操作数的值相除后,在赋值给左边操作数

a /= 1 等价于 a = a / 1

自增/自减操作符

++ 可以置于操作数前面,也可以放在后面,如:

++i;
i++ ;

++i表示,i自增1后再参与其它运算;
i++ 则是i参与运算后,i的值再自增1。
自减运算符--与之类似,只不过是变加为减而已,故不重述。
示例:

int a = 10;
int b = ++a;
System.out.println(b);
int c = a++;
System.out.println(c);

运行结果:

java 中int类型取余 java int除以int_System_04


因此:如果不去自增运算的表达式的返回值,则后置自增和前置自增没有区别;如果去表达式的返回值,则前置自增的返回值是自增后的值,后置自增的返回值是自增之前的值。

关系运算符

关系运算符主要有六个:

== (等于) !=(不等于) <(小于) >(大于) <=(小于等于) >=(大于等于)
示例:

int a = 10;
int b = 20;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a < b);
System.out.println(a > b);
System.out.println(a <= b);
System.out.println(a >= b);

运行结果:

java 中int类型取余 java int除以int_java 中int类型取余_05


从运行结果得出:关系运算符的表达式的返回值都是boolean类型。

逻辑运算符

&&(逻辑与)
||(逻辑或)
!(逻辑非)

逻辑与&&

规则:两个表达式都为true,结果为true,否则结果为false。
示例:

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);

运行结果:

java 中int类型取余 java int除以int_操作数_06

逻辑或||

规则:两个表达式都为false,结果为false,否则结果为true。

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);

java 中int类型取余 java int除以int_System_07

逻辑非!

操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数)

int a = 10;
        int b = 20;
        System.out.println(!(a < b));

运行结果:

java 中int类型取余 java int除以int_java_08

短路求值

1.对于&&,如果左侧表达式为false,则表达式的返回值为false,则右侧的表达就不会执行。
2.对于||,如果左侧表达式为true,则整个表达式的返回值为true,同样右侧的表达式不执行。
示例:

System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true

运行结果:

java 中int类型取余 java int除以int_System_09


我们知道10/0在编译器内会报错,但是短路求值的规则,所以没有执行该语句,所以编译器就不会报错。

位运算

位操作:是按二进制位进行运算。

操作符

功能

&

按位与:如果两个二进制位都是1,则结果为1,否则结果为0。

|

按位|:如果两个二进制位都是0,则结果为0,否则结果为1。

~

按位取反~:如果二进制位为0,则转为1,为1则转为0

^

按位异或^:如果两个数字的二进制位相同,则异或为0,相异结果为1。

移位运算

java中的移位运算符有三个:(都是按照二进制位进行运算)

<< >> >>>

左移<<

最左侧位不要了,最右侧补0.
示例:

public static void main(String[] args) {
        int a = -20;
        int b = 20;
        System.out.printf("%d\n", a << 1);
        System.out.println((b << 1));
    }

运行结果:等效于乘以2.

java 中int类型取余 java int除以int_java 中int类型取余_10

右移>>

最右侧不要了,左侧补符号位(正数补0,负数补1);
示例:

int a = -8;
        int b = 20;
        System.out.printf("%d\n", a >> 1);
        System.out.println((b >> 1));

运行结果:等效于除2.

java 中int类型取余 java int除以int_java 中int类型取余_11

无符号右移>>>

最右侧不要了,最左侧补0;

int a = 0xffffffff;
System.out.printf("%x\n", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7fffffff

Tips:

  1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
  2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
  3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
  4. 移动负数位或者移位位数过大都没有意义

条件运算符(三目操作符)

java中唯一的一个三目操作符。
用法:

表达式1? 表达式2 : 表达式3
其中表达式1位boolean表达式,若表达式1为真(true),执行表达式2,若 表示1为假(false),则执行表达式3。

示例:

//求两个整数的最大值
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
//运行结果 max = 20;

运算符的优先级

java 中int类型取余 java int除以int_java_12


运算符之间是有优先级的. 具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可