Java基础——运算符表达式

文章目录

  • 算术运算符
  • 赋值运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 三元运算符

算术运算符

运算符说明
+
-
*
/
%取模(取余)
++自增
- -自减

参考代码:

//加法运算
int add1 = 2 + 3;
System.out.println("加法运算 add1 = " + add1);
String add2 = 2 + "3";
System.out.println("加法运算 add2 = " + add2);//减法运算
int minus = 10 - 5;
System.out.println("减法运算 minus = " + minus);//乘法运算
int multiply = 6 * 6;
System.out.println("乘法运算 multiply = " + multiply);//除法运算
int divide1 = 4 / 3;
System.out.println("除法运算(整数)divide1 = " + divide1);//除法运算(小数)
double divide2 = 1.2 / 6;
System.out.println("除法运算(小数)divide2 = " + divide2);//取模运算
int surplus1 = 9 % 5;
System.out.println("取模运算(都是整数) surplus1 = " + surplus1);
int surplus2 = -9 % 5;
System.out.println("取模运算(被取模数为负数) surplus2 = " + surplus2);
int surplus3 = 9 % -5;
System.out.println("取模运算(取模数为负数) surplus3 = " + surplus3);//自增运算
int val1 = 5;
int autoAdd1 = (val1++) + 1;
System.out.println("自增运算(++在数值后)autoAdd1 = " + autoAdd1);
int val2 = 9;
int autoAdd2 = (++val2) + 1;
System.out.println("自增运算(++在数值前)autoAdd2 = " + autoAdd2);//自减运算
int val3 = 5;
int autoMinus1 = (val3--) - 1;
System.out.println("自减运算(--在数值后)autoMinus1 = " + autoMinus1);
int val4 = 9;
int autoMinus2 = (--val4) - 1;
System.out.println("自减运算(--在数值前)autoMinus2 = " + autoMinus2);

运行结果:

加法运算结果 add1 = 5
加法运算结果 add2 = 23
减法运算结果 minus = 5
乘法运算结果 multiply = 36
除法运算结果(整数)divide1 = 1
除法运算结果(小数)divide2 = 0.19999999999999998
取模运算结果(都是整数) surplus1 = 4
取模运算结果(被取模数为负数) surplus2 = -4
取模运算结果(取模数为负数) surplus3 = 4
自增运算结果(++在数值后)autoAdd1 = 6
自增运算结果(++在数值前)autoAdd2 = 11
自减运算结果(--在数值后)autoMinus1 = 4
自减运算结果(--在数值前)autoMinus2 = 7

注意:

  1. 除法运算中,若运算数值都是整数,运算结果只会保留小数点前的整数部分舍弃小数点后的小数部分。
  2. 取模运算中,结果不一定都是整数,若被取模数为负数,负号不可忽略,若取模数为负数,负号可忽略。
  3. 自增和自减运算中,若自增自减运算符在变量前面,则先自增自减再参与运算,若自增自减运算符在变量后面,则先参与运算再自增自减。
  4. 加法运算中,若相加的两个值中有任意一个非数值(字符串),则数值会转换为字符串,然后进行拼接。

赋值运算符

运算符说明
=等于
+=加等于(a += b 相当于 a = a + b)
-=减等于(a -= b 相当于 a = a - b)
*=乘等于(a *= b 相当于 a = a * b)
/=除等于(a /= b 相当于 a = a / b)
%=模等于(a %= b 相当于 a = a % b)

参考代码:

int val1 = 5;
System.out.println("等于 val1 = "+ val1);val1 += 5;
System.out.println("加等于 val1 = "+ val1);val1 -= 1;
System.out.println("减等于 val1 = "+ val1);val1 *= 2;
System.out.println("乘等于 val1 = "+ val1);val1 /= 4;
System.out.println("除等于 val1 = "+ val1);val1 %= 3;
System.out.println("模等于 val1 = "+ val1);

运行结果:

等于 val1 = 5
加等于 val1 = 10
减等于 val1 = 9
乘等于 val1 = 18
除等于 val1 = 4
模等于 val1 = 1

a=a+3与a+=3的区别?

byte a = 2;
a = a+3; //错误
a+=3; //正确

a=a+3,会自动转换为int类型,a+=3是会强制转换,如:a=(byte)(a+3);

关系运算符

运算符说明
==相等
!=不等
>大于
<小于
>=大于等于
<=小于等于
instanceof检查是否是类的对象

注意:关系运算符返回的是布尔值(boolean)。

参考代码:

boolean val1 = 3 == 4;
System.out.println("3是否等于4:"+val1);boolean val2 = 3 > 4;
System.out.println("3是否大于4:"+val2);boolean val3 = 3 < 4;
System.out.println("3是否小于4:"+val3);boolean val4 = 9 >= 9;
System.out.println("9是否大于等于9:"+val4);boolean val5 = 8 <= 9;
System.out.println("8是否小于等于9:"+val5);boolean val6 = "str" instanceof Object;
System.out.println("str是否是Object类对象:"+val6);

运行结果:

3是否等于4false
3是否大于4false
3是否小于4true
9是否大于等于9true
8是否小于等于9true
str是否是Object类对象:true

注意:instanceof基本类型不能使用,只能引用类型进行比较,比较的是class类对象。

逻辑运算符

运算符说明
&逻辑与
|逻辑或
&&短路与
||短路或
!逻辑非
^逻辑异或

注意:逻辑运算是布尔值(boolean)之间进行运算,返回值也是布尔值。

参考代码:

boolean val1 = true & false;
System.out.println("逻辑与 val1:"+val1);boolean val2 = true | false;
System.out.println("逻辑或 val2:"+val2);boolean val3 = true && false;
System.out.println("短路与 val3:"+val3);boolean val4 = true || false;
System.out.println("短路或 val4:"+val4);boolean val5 = !true;
System.out.println("逻辑非 val5:"+val5);boolean val6 = true ^ false;
System.out.println("逻辑异或 val6:"+val6);boolean val7 = false ^ false;
System.out.println("逻辑异或 val7:"+val7);boolean val8 = true ^ true;
System.out.println("逻辑异或 val8:"+val8);

运行结果:

逻辑与 val1:false
逻辑或 val2:true
短路与 val3:false
短路或 val4:true
逻辑非 val5:false
逻辑异或 val6:true
逻辑异或 val7:false
逻辑异或 val8:false

注意:异或两个布尔值都相同时,为false,反之为true。

& 和 &&的区别:

  • & :左边无论真假,右边都会进行运算。
  • && :若左边不为真,则右边不参与运算,反之参与运算。

| 和 ||的区别:

  • | :左边无论真假,右边都会进行运算。
  • || :若左边为真,则右边不参与运算,反之右边参与运算。

异或(^)与或(|)的不同之处是,异或当左右都为true时,结果为false。

位运算符

运算符说明
<<左位移
>>右位移
>>>无符号右移
&与运算
^异或运算
~取反运算

注意:位运算是直接对整数的二进制进行运算,会先将整数转换为二进制码。

扩展:

  • 对于左位移,相当于是乘于2的几次方
    例如:11<<2,相当于11*2^2 = 11 * 4 = 44;
  • 对于右位移,相当于是除于2的几次方
    例如:8>>1,相当于8/2^1 = 8 / 2 = 4;

三元运算符

语法:

(布尔表达式)?表达式1:表达式2

布尔表达式为true时,运算结果是表达式1,否则是表达式2。

参考代码:

//3大于4返回3,否则返回4
int val = 3 > 4? 3:4;
System.out.println("三元运算结果:"+val);

运算结果:

三元运算结果:4

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

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

相关文章

debian中vim的使用

debian使用vi中经常出现m apt install vim vim不能用鼠标粘贴 vim /etc/vim/vimrc 在末尾加入以下内容&#xff1a; let skip_defaults_vim 1 if has(mouse)set mouse-a endif保存文件即可

Git 精简快速使用

安装 Git 忽略&#xff0c;自行搜索 新建项目&#xff0c;或者在仓库拉取项目&#xff0c;进入到项目目录 Github 给出的引导&#xff0c;新项目和旧项目 echo "# testgit" >> README.md git init git add README.md git commit -m "first commit"…

.NET Nuget包推荐安装

文章目录 前言通用WPFWebApiBlazor 前言 我这里的包主要是.NET Core的&#xff0c;.NET Framework可能不支持。 通用 Newtonsoft.Json&#xff1a;最常用的C#和Json对象互转的包。支持匿名对象&#xff0c;但是不支持Enum枚举类型&#xff0c;显示的是Enum的数值&#xff0c…

MySQL强制使用索引的两种方式及优化索引,使用MySQL存储过程创建测试数据。

一、MySQL强制使用索引的两种方式 1、使用 FORCE INDEX 语句&#xff1a; explainselect*fromtbl_test force index (index_item_code)where(item_code between 1 and 1000) and (random between 50000 and 1000000)order byrandomlimit 1; 使用 FORCE INDEX&#xff08;索引…

ARM 和 AMD 架构的区别

ARM 架构和 AMD 架构是两种不同的计算机处理器架构&#xff0c;它们有以下几个主要区别&#xff1a; 设计出发点&#xff1a; ARM 架构&#xff1a;ARM 架构最初是为嵌入式系统设计的&#xff0c;旨在提供低功耗和高效能的解决方案。它主要应用于移动设备、嵌入式系统和物联网设…

链表(单链表、双链表)

前言&#xff1a;链表是算法中比较难理解的部分&#xff0c;本博客记录单链表、双链表学习&#xff0c;理解节点和指针的使用&#xff0c;主要内容包括&#xff1a;使用python创建链表、实现链表常见的操作。 目录 单链表 双链表 单链表 引入链表的背景&#xff1a; 先来看…

使用ElementUI结合Vue完善主页的导航菜单和书籍管理以及后台数据分页查询

目录 动态树 数据表 案列 书籍管理 动态树 动态树&#xff08;Dynamic tree&#xff09;是一种数据结构&#xff0c;它可以在树中动态地插入、删除和修改节点。与静态树不同&#xff0c;静态树的节点是固定的&#xff0c;一旦构建完成就无法再进行修改。而动态树可以在运行时…

Java 8中的Stream API

Java 8引入了一种全新的数据处理方式&#xff1a;Stream。Stream API提供了一种功能强大、高效、可复合、并行处理集合数据的方式。使用Stream API&#xff0c;我们可以轻松地对集合进行筛选、排序、过滤、映射等操作。在本教程中&#xff0c;我们将深入介绍Stream API的原理、…

任意文件的上传和下载

1.任意文件下载&#xff08;高危&#xff09; 定义 一些网站由于业务需求&#xff0c;往往需要提供文件查看或文件下载功能&#xff0c;但若对用户查看或下载的文件不做限制&#xff0c;则恶意用户就能够查看或下载任意敏感文件&#xff0c;这就是文件查看与下载漏洞。 可以下载…

缓存更新策略

redis的缓存更新策略: 先删除缓存,在更新数据库,缺点:当线程1进行一个更新的操作,先进行缓存删除,在修改数据库,但是修改数据库之前,线程2 进行查询缓存的操作,未命中,查找数据库,写入缓存,线程1修改完成后,但是此时缓存中的数据还是旧数据,会出现数据不一致问题,只有等这个缓…

L10 数据库

1&#xff0c; 数据库的安装 sudo dpkg -i *.deb 2, 数据库命令&#xff1a; 1&#xff09;系统命令 &#xff0c; 都以.开头 .exit .quit .table 查看表 .schema 查看表的结构 2&#xff09;sql语句&…

OpenCV显示10bit Raw数据

参考&#xff1a;10 12 14bit图像存储格式&#xff0c;利用Opencv显示10bit Raw数据,并根据鼠标的移动显示对应位置的灰度值。其他bit位数的Raw数据方法类似。 代码实现&#xff1a; #include<opencv2/opencv.hpp> #include<iostream> #include<opencv/highgu…

@Valid和 @Validated

Valid 和 Validated 是用于在 Spring 框架中进行数据验证的注解。 Valid 是 Java 标准库&#xff08;javax.validation&#xff09;中的注解&#xff0c;用于标记需要进行数据验证的对象或方法参数。它可以应用于方法参数、方法返回值、字段或方法级别。当使用 Valid 注解时&a…

【Vue.js】使用Element入门搭建登入注册界面axios中GET请求与POST请求跨域问题

一&#xff0c;ElementUI是什么&#xff1f; Element UI 是一个基于 Vue.js 的桌面端组件库&#xff0c;它提供了一套丰富的 UI 组件&#xff0c;用于构建用户界面。Element UI 的目标是提供简洁、易用、美观的组件&#xff0c;同时保持灵活性和可定制性 二&#xff0c;Element…

一创聚宽的实盘就要关闭了,有没有好用的实盘平台推荐

挺多的&#xff0c;比较普遍的是QMT和Ptrade&#xff0c;python语言&#xff0c;易上手&#xff0c;通用性好&#xff0c;要说适用性可以考虑Ptrade&#xff0c;问一下你的客户经理有没有&#xff0c;用Ptrade的券商也多&#xff0c;如果之前用一创聚宽你可以无缝切换&#xff…

【工具使用】Audition软件导入.sesx文件报错问题

一&#xff0c;简介 本文主要介绍了在使用Audition导入新的wav文件后&#xff0c;保存&#xff0c;然后再打开.sesx文件时报错&#xff1a;“ 错误: 文件已损坏或使用了不受支持的格式 XML FATAL ERROR: (line: 2835, col: 69) [ D:\Project\AE_Y2311\16channel_test\16_chann…

【趣味JavaScript】5年前端开发都没有搞懂toString和valueOf这两个方法!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…

linux易忘命令(如:端口、进程、文件、内存、vim)持续更新

路径&#xff1a;pwd 开放端口&#xff1a;firewall-cmd --zonepublic --add-port<端口号>/tcp --permanent 重启防火墙&#xff1a;systemctl restart firewalld 查看防火墙开放的端口&#xff1a;firewall-cmd --list-ports --permanent 解压&#xff1a; unzip *.…

基于微信小程序的语言课学习系统设计与实现(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口

早在 2021 年 9 月&#xff0c;以太坊创始人 Vitalik Buterin 就曾提出了 EIP-4337&#xff08;账户抽象&#xff09;提案&#xff0c;并在去年 10 月对该提案进一步更新&#xff0c;引发行业的进一步关注。在今年 3 月&#xff0c;EIP-4337 提案正式通过审计&#xff0c;并成为…