Java的运算操作

简介: 在Java中,根据我们的需要,有多种类型的操作符可以对操作数进行运算,不仅仅只有算术运算符(加减乘除)这一种运算符,患有其它类型的运算符。Java运算符有以下几种:**算术运算符(即+-×/)、增量运算符(+= -+ *= %=)、自增自减运算符、关系运算符(><==)、逻辑运算符、位运算符、移位运算符、条件运算符。下面我们就一一来介绍这几种运算符。

算术运算符

算术运算符无非就是我们最常用的四则运算法则,即加减乘除(+ - * /),还有一种就是%。

由于(加减乘除)比较简单,这里我举几个例子一笔带过。

System.out.println(2*4);
        System.out.println(4-2);
        System.out.println(5*3);
        System.out.println("===========");
        System.out.println(10/3);
        System.out.println(10/-3);
        System.out.println((-10/3));
        System.out.println(-10/-3);

1.png

当两侧操作数类型不一致时,会向大的提升。

System.out.println(1+0.8);

2.png

请看对于/操作符我这样用可不可以呢?请看:

System.out.println(4/0);


来看运行结果:

3.png

可以看到直接报错了,这是因为在Java中,分母是不可以为0的。


再来看一下%运算符:

System.out.println(10%3);
        System.out.println(10%-3);
        System.out.println(-10%3);
        System.out.println(-10%-3);

4.png

注意,对于%运算符两边的操作数是可以有浮点数出现的,这一点和C语言的确是不一样的(C语言中的%运算符两边的操作数是坚决不能出现浮点数的)。所以,%不仅可以对整型进行取模,也可以对double类型进行取模。

请看:

5.png

6.png


增量运算符

+=

我们先来看一个简单的。

int a = 10;
        int b = 10;
        int c = 10;
        int d = 10;
        int e = 8;
        a += 5;
        System.out.println( a);
        b -= 3;
        System.out.println(b);
        c *= 2;
        System.out.println(c);
        d /= 2;
        System.out.println(d);
        e %= 3;
        System.out.println(e);


注意

我们来看看这种写法:

8.png

我们可以看到会出错。

那这样写呢?

9.png


这样写就不会出错了。可以正常运行。

10.png

这里并不会报错,这也时该运算符特殊的地方:该运算符会帮我们进行类型转换。


自增自减运算符

在Java中,对于++和--运算符虽然与C语言的++和--差不多,但是还是有一些细节不一样的地方。


 

int a = 10;
        --a;
        System.out.println(a);

11.png

这一点和C语言是一样的。

但是注意这里,请看:


 

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

12.png

这是后置减减的a赋值给了b。



结果b的值是10.

但是如果是前置减减的a赋值给了b呢?




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

13.png

我们会发现结果是9。

但是注意这里,请看:


 

int a = 10;
        a = a--;
        System.out.println(a);

如果按照C语言来的话,这里结果应该是9。但是请看结果:

14.png

看,发现结果竟然是10,这也是C语言和Java不一样的地方,记住就好,只不过两种语言处理的方式不同罢了。

还有一点:++和--运算符是用来操作变量的,而不是用来操作常量的。


关系运算符

在Java中,关系运算符主要有6个:== != <= >= < >,其运算结果只有俩个,要么是true,要么是false。


   

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);


15.png


当然,需要判断的是,当需要多次判断的时候,我们是不可以连这些的,比如:4 < a < 6。


逻辑运算符

逻辑运算符主要是三种:&& || !,其运算结果均为boolean类型。


逻辑与&&

语法:表达式1 && 表达式2.并且左右表达式必须是boolean类型的结果,只有左右表达式同时为真时,结果才为真,否则就是假。


举个例子:

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

1.png

逻辑或||

逻辑或:

语法规则:表达式1 || 表达式2.并且左右表达式必须是boolean类型的结果,只有左右表达式只要有一个是真的,结果就是真的,同时为假结果才为假。


 

int a = 10;
        int b = 20;
        System.out.println(a == 10 || b == 20);
        System.out.println(a == 10 || b < 20);
        System.out.println(a == 100 || b == 200);

2.png

逻辑非!

逻辑非的语法规则:!表达式。非真即假,非假即真。


 

int a = 1;
        System.out.println(!(a == 1));
        System.out.println(!(a != 1));

3.png

短路求值

我们先来看一段代码吧:


public static void main(String[] args) {
        //短路求值
        System.out.println(10 > 20 && 10/0 == 0);
        System.out.println(10 < 20 || 10/0 == 0);
    }


运行一下:

4.png

我们发现程序成功运行起来了。但是我们已经知道10/0这个表达式,会出现异常而导致程序报错,但是程序成功的运行了起来。这个就是短路求值的作用。

短路求值规则,

对于&&而言:如果左侧表达式为false,则整个表达式的结果一定为false,右侧的表达式不需要进行运算。

对于||而言:如果左侧表达式为true,则整个表达式的结果一定为true,右侧的表达式不需要进行运算。


对于&和|:如果表达式结果为boolean时,也表示逻辑运算,但与&&和||相比,它们不支持短路求值。

System.out.println(10 < 20 & 1 > 0);
        System.out.println(10 < 20 | 1 >0);

5.png

注意了请看下段代码:


 

System.out.println(10 > 20 & 10/0 == 0);
          System.out.println(10 < 20 | 10/0 ==0);
1
2


我们发现程序会进行报错,说明了10/0 == 0在这里依然会被执行。

所以建议当我们想用逻辑与和逻辑或的时候,不要用&和|,直接用&&和||就好了,这样容易区分(因为&和|也是位运算的符号)。

6.png

位运算符

位运算就是按照二进制位进行每一位的运算。

位运算符主要有4个:& | ~ ^


按位与&

规则:两个二进制位只有相同时才为1,其余情况均为0。

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

1.png

2.png

按位或|

 

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

3.png

注意:当&和|的操作数为整数(int,short,long,byte)的时候,表示按位运算,当操作数为boolean的时候,表示逻辑运算。


按位取反~

按位取反规则该位为0则改为1,该位为1则改为0。

这里依然有几点需要大家注意:


1.0x前缀的数字为十六进制数字,十六进制可以看成时二进制的简化表示方式,一个十六进制数字对应4个二进制位。

2.printf能够格式化输出内容,%x表示按照十六进制输出。

int c = 0xf;
       System.out.printf("%x\n",~a);

4.png


按位异或^

规则:如果两个数字的二进制位相同,则表示结果为0,相异则结果为1.()即相同为0,不同为1。相同的两个数之间进行异或,结果为0。

举个例子:

int a = 0x1;
        int b=0x2;
        System.out.printf("%x\n",a^b);

5.png


移位运算符

移位运算符有三个:<< >> >>>,且均为二元运算符,按照二进制比特位进行运算。


左移<<

规则:最左侧不要了,最有侧补0.

例如:


 

int a = 0x10;
        System.out.printf("%x\n",a<<1);

1.png

注意:最终结果是按照十六进制来进行运算的;另一方面,向左移位的时候,丢弃的是符号位,因此正数左移可能会变成负数;左移统一在右边补0。


右移>>

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

int a = 0x10;
        System.out.printf("%x\n",a>>1);

2.png

还有一种右移是无符号右移:不管符号位是1还是0,统一补0。

还是来举个例子:


   

int b = -1;
        System.out.println(b >> 1);
        System.out.println(b >>> 1);

3.png

4.png


分割线------------------------------------------------------------------------------------------------


5.png

条件运算符

条件运算符就一个:

即表达式1?表达式2:表达式3


当表达式1的结果为true是,整个表达式的值为表达式2的值,当表达式1的结果为false是,整个表达式的值为表达式3的值。

这是Java中唯一的一个三目运算符。


 

int a = 10;
        int b = 20;
        int max = a>b?a:b;
        System.out.println(max);

6.png

注意:表达式不能单独存在,其结果必须要被使用。比如:

7.png

以上就是Java运算符的一些操作,就到这里吧。

再见啦!!!

目录
相关文章
|
1月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
2月前
|
存储 Java
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
55 0
|
2月前
|
Java 数据库 数据安全/隐私保护
Java操作Excel文件导入导出【内含有 jxl.jar 】
Java操作Excel文件导入导出【内含有 jxl.jar 】
47 0
|
21天前
|
存储 Java 索引
Java ArrayList操作指南:如何移除并返回第一个元素
通过上述方法,你可以方便地从Java的 `ArrayList` 中移除并返回第一个元素。这种操作在日常编程中非常常见,是处理列表时的基本技能之一。希望这篇指南能帮助你更好地理解和运用Java的 `ArrayList`。
24 4
|
1月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之使用ODPS Tunnel Upload功能时,遇到报错:Java 堆内存不足,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
1月前
|
Java API 开发者
Java中的文件I/O操作详解
Java中的文件I/O操作详解
|
1月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
2月前
|
Java
使用kafka-clients操作数据(java)
使用kafka-clients操作数据(java)
25 6
|
2月前
|
安全 Java 程序员
在Java中,finalization是一种机制,允许对象在被垃圾收集器回收之前执行一些清理操作。
【6月更文挑战第24天】Java中的finalization机制允许对象在被垃圾收集前执行清理,以释放系统资源或处理敏感信息。`finalize()`方法用于定义此类操作,但它不是可靠的资源管理策略,因为调用时机不确定且可能影响性能。尽管可用于清理外部资源或作为保护措施,但应避免依赖finalization,而应优先采用手动资源管理,遵循“创建者负责”原则。
21 1