Java基本知识之运算符

2023-11-05

算数运算符

注意一下这个:

运算类型 结果
a=2,b=++a a=3,b=3
a=3,b=a++ a=3,b=2

数字++:先自增1,后运算

++数字:先运算,后自增1

public class Hello {
   public static void main(String[] args) {
      int a = 2;
      int b = ++a;
      int c = 5;
      int d = c++;
      System.out.println(a + " " + b + " " + c + " " + d);
   }
}

输出结果:
3 3 6 5

赋值运算符

  • 符号:=
    • 当”=“两侧数据类型不一样时,用自动数据类型转换或者强制类型转换。
    • 支持连续赋值。

比较运算符

== != < > <= >=
主要区分好=和==。

逻辑运算符

&一逻辑与 |一逻辑或
!一逻辑非 &&一短路与
||一短路或 ^一逻辑异或

photo1

注意:

  • 逻辑运算符操作的都是bool类型

区分&和&&

public class LogicTest {
   public static void main(String[] args) {
      boolean b1 = false;
      int num1 = 10;
      if (b1 & (num1++ > 0)) {
         System.out.println("001");
      } else {
         System.out.println("002");
      }
      System.out.println("num1=" + num1);
      boolean b2 = false;
      int num2 = 10;
      if (b1 && (num2++ > 0)) {
         System.out.println("001");
      } else {
         System.out.println("002");
      }
      System.out.println("num2=" + num2);
   }
}

结果:

002
num1=11
002
num2=10

结论:

  • 二者计算结果相同
  • 当两个都是true时,二者都会执行后面的运算
  • &当第一个条件是false仍然会判断后一个条件,&&当第一个条件是false就不再看后面的条件了

区分|和||

public class LogicTest {
   public static void main(String[] args) {
      boolean b1 = true;
      int num3 = 10;
      if (b1 | (num3++ > 0)) {
         System.out.println("001");
      } else {
         System.out.println("002");
      }
      System.out.println("num3=" + num3);
      boolean b2 = true;
      int num4 = 10;
      if (b1 || (num4++ > 0)) {
         System.out.println("001");
      } else {
         System.out.println("002");
      }
      System.out.println("num4=" + num4);
   }
}

运行结果:

001
num3=11
001
num4=10

结论:

  • |与||的运算结果相同
  • 当符号左边是false时,二者都会执行符号右边的运算
  • 当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算

位运算符

运算符 运算 例子 含义
<< 左移 3 << 2 = 12 3 * 2 * 2 = 12
>> 右移 3 >> 1 = 1 3 / 2 = 1
>>> 无符号右移 3 >>> 1 = 1 3 / 2 = 1
& 与运算 6 & 3 = 2
| 或运算 6 |3 = 7
^ 异或运算 6 ^ 3 = 5
~ 取反运算 ~6 = -6

结论:

  • 位运算符操作的都是整型的数据

  • << :在一定范围内,每向左移1位,相当于*2
    >> :在一定范围内,每向右移1位,相当于/2

三元运算符

(条件表达式)?表达式1:表达式2

说明:

  • 条件表达式的结果为boolean类型
  • 根据条件表达式真或假,决定执行表达式1还是表达式2
    • 如果表达式为TRUE,则执行表达式1
    • 如果表达式为FALSE,则执行表达式2
  • 表达式1和表达式2要求是一致的
public class SanYuanTest {
   public static void main(String[] args) {
      int m = 5, n = 10;
      int max = (m > n) ? m : n;
      System.out.println(max);
   }
}

结果:10

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java基本知识之运算符 的相关文章

随机推荐

  • Div 高度、滚动条距 Div 顶部偏移量、Div 中文档总高度

    版权声明 分享是一种品质 开源是一种精神 https blog csdn net wangmx1993328 article details 84560051
  • 【ABviewer从零开始教学查看器篇③】打开文件之缩略图菜单

    ABViewer是一款高质量 高效率 低成本的多功能设计及工程文档管理工具 能为您提供全面的专业的浏览及编辑功能 同时支持30多种光栅和矢量图形格式 在小编看来 ABViewer是一款非常简单且实用的CAD文档查看与编辑器 对于使用小白可能
  • 【图像处理】MATLAB:亮度变换

    亮度变换 函数imadjust f imread breast digital Xray tif g1 imadjust f 0 1 1 0 阴暗反转图像 负片图像 等同于 g1 imcomplement f g2 imadjust f 0
  • 服务器重启后,Tomcat首页可以访问,具体项目访问不了,报Lifecycle error.Unable to connect to Redis server: /localhost:6379

    10 47 18 main ERROR standard Lifecycle error Unable to connect to Redis server localhost 6379 com fr third org redisson
  • uniapp图片上传

    首先 在页面中创建一个按钮 并绑定点击事件 用于选择图片
  • 手把手搭建k8s集群

    目录 集群机器配置 1 安装Docker 1 1 安装persistent data 和 lvm2 1 2 修改docker安装源以及安装docker 1 3 启动docker 1 4 切换docker镜像源 2 安装k8s 2 1 安装v
  • 数据库题目汇总(下)

    文章目录 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 第九题 第十题 第一题 编写一个sql语句 查询每一个部门中薪水最高的职工 结果返回部门编号dno 薪水最高的职工工号eno和薪水salary 以dno升序排列 se
  • 常用jar包用途说明

    jar包 用途 axis jar SOAP引擎包 commons discovery 0 2 jar 用来发现 查找和实现可插入式接口 提供一些一般类实例化 单件的生命周期管理的常用方法 jaxrpc jar Axis运行所需要的组件包 s
  • 使用vue上传或下载excel文件

    真实vue项目中使用的案例 excel的上传文件 安装axios
  • git远程分支代码拉取

    1 远程拉取gitlab 工程分支 并在本地建立分支 具体过程 新建一个空文件 初始化 git init 自己要与origin master建立连接 下划线远程仓库链接 git remote add origin http 192 168
  • Arduino前馈反向传播神经网络

    本文介绍了为Arduino Uno微控制器板开发的人工神经网络 这里描述的网络是前馈反向传播网络 可能是最常见的类型 它被认为是有监督或无监督学习的良好通用网络 该项目的代码以Arduino Sketch的形式提供 它是即插即用的 您可以将
  • c 连接mysql错误信息_使用C语言访问MySQL数据 —— 连接和错误处理

    2011 05 09 wcdj 可以通过许多不同的编程语言来访问MySQL 例如 C C Java Perl Python Tcl PHP等 本文主要总结使用C语言接口如何访问MySQL数据 一 连接例程 二 错误处理 一 连接例程 用C语
  • 数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods)

    概述 求解带约束的最优化问题 一类很重要的方法就是将约束添加到目标函数中 从而转换为一系列子问题进行求解 最终逼近最优解 关键问题是如何将约束进行转换 本节主要介绍 1 二次惩罚方法 2 非平滑惩罚方法 3 增广拉格朗日方法 二次惩罚方法
  • c++ 实现智能指针shared_ptr

    sharedPtr h ifndef sharedPtr H define sharedPtr H class sharedPtr public sharedPtr sharedPtr int sharedPtr const sharedP
  • 八大排序算法(原理+代码详解)Python版

    一 前言 排序算法是最经典的算法知识 往往面试题中或数据结构中会涉及有关排序的算法 掌握排序算法的思想及其原理有助于化解排序方面的难题 下面介绍几种Python语言中常见的排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序 希尔排序
  • 推荐的自动标注工具

    之前研究了Android AutoLayout的使用 不过项目开发过程中提供的设计图往往没有标注完整的UI 这时候需要开发工程师自己搞定了 于是搜索并尝试了一下 找到一些方便的自动标注工具 同时作下记录 方便后来者借鉴与使用 一 一套免费的
  • DocX 生成Word

    当然 这里是一个使用DocX库在 NET Core中操作Word文档的简单示例 首先 确保你在项目中安装了DocX库 你可以在NuGet包管理器中搜索并安装DocX 然后 使用以下代码来创建一个简单的Word文档并添加一些内容 using
  • 有关Centos7的网络配置问题(桥接模式)

    在经过了NAT模式配置的多重灾难后 本小白得知 桥接模式还可以ping通主机 于是做了一个大胆的决定 转为桥接模式 接下来记录一下我的过程 PS 指路 NAT模式下网络配置 1 打开网络适配器 禁用两块虚拟网卡 2 打开VMware Wor
  • springboot+mysql汉服销售系统-计算机毕业设计源码95171

    目 录 摘要 1 绪论 1 1开发背景 1 2国内外研究慨况 1 3springboot框架介绍 1 4论文结构与章节安排 2 Springboot汉服销售系统小程序系统分析 2 1 可行性分析 2 1 1 技术可行性分析 2 1 2 经济
  • Java基本知识之运算符

    算数运算符 注意一下这个 运算类型 结果 a 2 b a a 3 b 3 a 3 b a a 3 b 2 数字 先自增1 后运算 数字 先运算 后自增1 public class Hello public static void main