Java的运算操作

news2024/9/24 6:20:44

个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【JavaSE_primary】
在这里插入图片描述

文章目录

    • 算术运算符
    • 增量运算符
      • +=
        • 注意
    • 自增自减运算符
    • 关系运算符
    • 逻辑运算符
      • 逻辑与&&
      • 逻辑或||
      • 逻辑非!
      • 短路求值
    • 位运算符
      • 按位与&
      • 按位或|
      • 按位取反~
      • 按位异或^
    • 移位运算符
      • 左移<<
      • 右移>>
    • 条件运算符

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

在这里插入图片描述

  • 当两侧操作数类型不一致时,会向大的提升。
System.out.println(1+0.8);

在这里插入图片描述

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

System.out.println(4/0);

来看运行结果:
在这里插入图片描述
可以看到直接报错了,这是因为在Java中,分母是不可以为0的。

再来看一下%运算符:

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

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

增量运算符

+=

我们先来看一个简单的。

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

在这里插入图片描述

注意

我们来看看这种写法:
在这里插入图片描述
我们可以看到会出错。
那这样写呢?

在这里插入图片描述
这样写就不会出错了。可以正常运行。
在这里插入图片描述
这里并不会报错,这也时该运算符特殊的地方:该运算符会帮我们进行类型转换

自增自减运算符

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

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

在这里插入图片描述
这一点和C语言是一样的。
但是注意这里,请看:

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

这是后置减减的a赋值给了b
在这里插入图片描述

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

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

在这里插入图片描述
我们会发现结果是9。
但是注意这里,请看:

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

如果按照C语言来的话,这里结果应该是9。但是请看结果:
在这里插入图片描述
看,发现结果竟然是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);

在这里插入图片描述
当然,需要判断的是,当需要多次判断的时候,我们是不可以连这些的,比如: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 || 表达式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);

在这里插入图片描述

逻辑非!

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

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

在这里插入图片描述

短路求值

我们先来看一段代码吧:

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

运行一下:
在这里插入图片描述
我们发现程序成功运行起来了。但是我们已经知道10/0这个表达式,会出现异常而导致程序报错,但是程序成功的运行了起来。这个就是短路求值的作用。
短路求值规则,
对于&&而言:如果左侧表达式为false,则整个表达式的结果一定为false,右侧的表达式不需要进行运算。
对于||而言:如果左侧表达式为true,则整个表达式的结果一定为true,右侧的表达式不需要进行运算。

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

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

在这里插入图片描述
注意了请看下段代码

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


我们发现程序会进行报错,说明了10/0 == 0在这里依然会被执行。
所以建议当我们想用逻辑与和逻辑或的时候,不要用&和|,直接用&&和||就好了,这样容易区分(因为&和|也是位运算的符号)。

位运算符

位运算就是按照二进制位进行每一位的运算。
位运算符主要有4个:& | ~ ^

按位与&

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

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

在这里插入图片描述
在这里插入图片描述

按位或|

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

在这里插入图片描述
注意:当&和|的操作数为整数(int,short,long,byte)的时候,表示按位运算,当操作数为boolean的时候,表示逻辑运算。

按位取反~

按位取反规则该位为0则改为1,该位为1则改为0。
这里依然有几点需要大家注意

1.0x前缀的数字为十六进制数字,十六进制可以看成时二进制的简化表示方式,一个十六进制数字对应4个二进制位。
2.printf能够格式化输出内容,%x表示按照十六进制输出。

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

在这里插入图片描述

按位异或^

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

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

在这里插入图片描述

移位运算符

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

左移<<

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

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

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

右移>>

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

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

在这里插入图片描述
还有一种右移是无符号右移不管符号位是1还是0,统一补0。
还是来举个例子:

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

在这里插入图片描述
在这里插入图片描述
分割线------------------------------------------------------------------------------------------------
在这里插入图片描述

条件运算符

条件运算符就一个:
表达式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);

在这里插入图片描述
注意:表达式不能单独存在,其结果必须要被使用。比如:
在这里插入图片描述
以上就是Java运算符的一些操作,就到这里吧。
再见啦!!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

直觉外科:手术机器人领域的领导者,未来还有巨大的增长空间

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 虽然直觉外科(ISRG)多年来一直在强劲的增长&#xff0c;但猛兽财经认为它未来仍有足够的空间进一步扩大收入和利润。虽然这个行业的竞争正在加剧&#xff0c;但猛兽财经认为从长远来看&#xff0c;这个市场可能会整合&…

如何修改JAR包内的代码

有时候由于找不到源码&#xff0c;只有一个jar包&#xff0c;但又想去修改jar包中的代码&#xff0c;就可以进行将jar包反编译后&#xff0c;修改&#xff0c;再重新编译的方式来实现。 一、下载反编译软件JD-GUI https://github.com/java-decompiler/jd-gui/releases 二、用…

Android 项目必备(四十二)-->Android 多窗口模式

简介 自由窗口模式: 该模式类似于常见的桌面操作系统&#xff0c; 应用界面的窗口可以自由的拖动和修改大小。 分屏模式 该模式可以在手机上使用&#xff0c; 该模式将屏幕一分为二&#xff0c; 同时显示两个应用界面。 画中画模式: 该模式主要用于TV&#xff0c; 在该模式下…

项目--基于RTSP协议的简易服务器开发(1)

RTSP协议简介&#xff1a;RTSP&#xff08;Real Time Streaming Prcotol&#xff09;是位于TCP\IP体系应用层的数据传输协议&#xff0c;通常的RTSP协议包含 RTSP、RTP、RTCP协议。一般而言&#xff1a;RTSP负责服务器与客户端之间的请求与响应RTP负责服务器、客户端之间传输媒…

【双U网络:传感器间自监督:全色锐化】

W-NetPan: Double-U network for inter-sensor self-supervised pan-sharpening &#xff08;W-NetPan&#xff1a;用于传感器间自监督全色锐化的双U网络&#xff09; 由于遥感数据的提供日益增多&#xff0c;可以通过全色锐化方法来处理空间-光谱限制。然而&#xff0c;融合…

【JavaGuide面试总结】操作系统篇·上

【JavaGuide面试总结】操作系统篇上1.什么是系统调用呢&#xff1f; 能不能详细介绍一下2.进程和线程的区别3.进程有哪几种状态?4.进程间的通信常见的的有哪几种方式呢?5.线程间的同步的方式有哪些呢?6.操作系统中进程的调度算法有哪些7.产生死锁的四个必要条件是什么?8.解…

KT148A语音芯片ic的供电电压以及电源输入的详细说明V1

目录 一、问题简介 二、详细说明 问题1&#xff1a;芯片的供电说明 问题2&#xff1a;我测试反而3.7V接到KT148A的7脚才能工作&#xff0c;正常吗&#xff1f; 问题3&#xff1a;分别测试了锂电池和USB供电&#xff0c;都不正常&#xff1f; 三、总结 完整的测试板如下图…

大型WMS系统源码 带扫码入库移动端源码

WMS的核心价值是降低成本&#xff0c;提高效率&#xff0c;能够反映和控制仓库各个环节的运作&#xff0c;实现事件前后的管理&#xff0c;为企业创造更高的效益。 WMS系统是智能仓库管理系统的缩写&#xff0c;WMS系统主要负责的是入库业务、出库业务、仓库调拨、库存调拨和虚…

Raspberry实践笔记—配置RobotFramework自动化测试环境

一般RobotFramework都是安装在Windows&#xff0f;Linux的PC机上&#xff0c;这里将简单介绍在树莓派硬件平台上配置RobotFramework的开发和运行环境。 树莓派上配置了自动化测试软件&#xff0c;可以考虑用多个这个廉价的“计算机”&#xff0c;开展并行的测试用例执行。成倍…

每日分享(免登录积分商城系统 动力商城 兑换商城源码)

​demo软件园每日更新资源,请看到最后就能获取你想要的: 1.Python教程2022&#xff1a;100天从新手到大师 完整版 Python 100天从新手到大师是一个Python入门教程&#xff0c;Python从入门到精通&#xff0c;专门为热爱python的新手量身定做的学习计划&#xff0c;100天速成pyt…

C++类和对象:拷贝构造函数和运算符重载

目录 一. 拷贝构造函数 1.1 什么是拷贝构造函数 1.2 编译器默认生成的拷贝构造函数 1.3 拷贝构造函数特性总结 二. 运算符重载 2.1 运算符重载概述 2.2 比较运算符重载&#xff08;> > < <&#xff09; 2.2.1 >运算符的重载 2.2.2 运算符的重载 2.…

面对海量的监控视频数据应该如何存储?

面对有些行业及工作特殊性&#xff0c;监控摄像头是必不可免的&#xff0c;面对成千上万的摄像头&#xff0c;每时每秒产生的视频数据&#xff0c;选择一个合理的存储方式&#xff0c;将会为您节省一大笔费用。而且&#xff0c;有些监控摄像头视频数据还需要按照国家要求存储30…

SpringCloud OpenFeign 源码分析

前言 由于公司正在高sky迁移&#xff0c;我们部门的老应用SpringBoot 1.x升级2.x&#xff0c;其中老的Neflix Feign也升级成了Spring Cloud OpenFeign&#xff0c;由于业务条线的各种高低版本以及服务之间调用等存在一些兼容性问题&#xff0c;于是看了下OpenFeign的源码&#…

【Web逆向】某津市公共资源交易平台链接加密分析

【Web逆向】某津市公共资源交易平台链接加密分析声明一、起因二、开始分析三、源码下载地址声明 本文章中所有内容仅供学习交流&#xff0c;相关链接做了脱敏处理&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 一、起因 好奇抓取 天津市公共资源交易平台 的…

这个WPF DataGrid组件,可以让业务数据管理更轻松!(Part 1)

DevExpress WPF的DataGrid组件是专用于WPF平台的高性能XAML网格控件&#xff0c;该组件附带了几十个具有高影响力的功能&#xff0c;使开发者可以轻松地管理数据并根据也无需要在屏幕上显示数据。PS&#xff1a;DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚…

Telerik JustMock 2023 R1 Crack

Telerik JustMock 2023 R1 Crack 制作单元测试的最快、最灵活和模拟选项。 Telerik JustLock也很简单&#xff0c;可以使用一个模拟工具来帮助您更快地生成更好的单元测试。JustLock使您更容易创建对象并建立对依赖关系的期望&#xff0c;例如&#xff0c;互联网服务需求、数据…

常用的xpath

一、xpath 语法 简单看一下菜鸟教程即可 1、基本语法 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式&#xff1a; 表达式描述nodename选取此节点的所有子节点。/从根节点选取&#xff08;取子节点&#…

数据挖掘(1)--基础知识学习

前言 自20世纪90年代以来&#xff0c;随着数据库技术应用的普及&#xff0c;数据挖掘&#xff08; Data Mining &#xff09;技术已经引起了学术界、产业界的极大关注&#xff0c;其主要原因是当前各个单位已经存储了超大规模&#xff0c;即海量规模的数据&#xff0c;未来能够…

【设计模式】5.原型模式

概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。具体原型类&#xff1a;实现抽象原型类的 clone() 方…

【IP技术】ipv4和ipv6是什么?

IPv4和IPv6是两种互联网协议&#xff0c;用于在互联网上标识和寻址设备。IPv4&#xff08;Internet Protocol version 4&#xff09;是互联网协议的第四个版本&#xff0c;是当前广泛使用的互联网协议。IPv4地址由32位二进制数构成&#xff0c;通常表示为4个十进制数&#xff0…