不要抱怨,不如抱 Java 运算符吧 (1)

news2024/11/15 1:45:39

本篇会加入个人的所谓‘鱼式疯言’
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!

在这里插入图片描述

前言

天空一声巨响,小编闪亮登场 😊 😊 😊
在本篇文章中,小编将带你走进 Java 运算符的 “欢乐谷” 中畅玩,
下面有请友友们移步目录区开始深情拥抱我们的 Java 运算符 吧 💕 💕 💕

目录

  1. 运算符的概念
  2. 算术运算符大家庭
  3. 关系运算符
  4. 逻辑运算符

一. 运算符的概念

计算机的最基本的用途之一就是执行 数学运算
et :

public static void main(String[] args) {

        int a=10;
        int b=20;
        
        int c=a+b;
        boolean d= a<b;
}

上述+ 和< 等就是运算符,即:对 操作数 进行操作时的符号,不同运算符操作的 含义不同
作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。 Java中运算符 可分为以下:

  • 算术运算符(+ - */)
  • 关系运算符(< > ==)
  • 逻辑运算符
  • 位运算符
  • 条件运算符等…

二. 算术运算符大家庭

1. 基本四则运算

小伙伴应该都知道我们的 Java 的与 C语言 类似
我们的基本四则运算符无非就是以下三种咯 💖 💖 💖

加减乘除模 (+ - * / %)

<2>. 栗子一

public static void main(String[] args) {
    int a = 20;
    int b = 10;

    System.out.println(a + b); // 30

    System.out.println(a - b); // 10

    System.out.println(a * b); // 200

    System.out.println(a / b); // 2

    System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数
}

在这里插入图片描述
细节如下,待小编 一 一 举例分析 💕 💕 💕

鱼式疯言

温馨提示 :

  • 都是 二元运算符 ,使用时必须要有左右 两个操作数
  • int / int 结果还是 int 类型,而且会向下 取整
  • 做除法和取模时,右操作数不能为 0
  • % 不仅可以对整型取模,也可以对 double类型 取模,但是没有意义,一般都是对整型取模的

证明过程如下 :

<3>. 栗子二

public static void main(String[] args) {

    int a = 3;
    int b = 2;

    // 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
    System.out.println(a / b);

    // 如果要得到数学中的结果,可以使用如下方式
    double d = a*1.0 / b;

    System.out.println(d);
}

在这里插入图片描述
从中小伙伴们是不是可以得出这样的结论呢 ! ! !

int / int 结果还是 int 类型,而且会 向下取整

<4>. 栗子三

除法取模 时,如果左操作数为 整数 ,右操作数不能为 0

public static void main(String[] args) {
    int a = 1;
    int b = 0;
    System.out.println(a / b);
}

在这里插入图片描述

但在Java中如果是运行左操作为 浮点数 ,右操作数为 0

   public static void main(String[] args) {
        double a = 1.0;
        int b = 0;
        System.out.println(a / b);
    }

在这里插入图片描述
突然来个小插曲 😃 😃 😃
这是小爱同学就有疑惑了,这个 Infinity 是什么含义呢 🤔 🤔 🤔

在这里插入图片描述

鱼式疯言

其实啊,在我们Java中 Infinity 就是代表算出的结果就是 无限 的含义

<5>. 栗子四

% 不仅可以对 整型 取模,也可以对 double 类型取模,但是没有意义,一般 都是对整型取模的

   public static void main(String[] args) {
        System.out.println(11.5 % 2.0);
    }

在这里插入图片描述

<6>. 栗子五

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

   public static void main(String[] args) {
        System.out.println(1+0.2); 
        // +的左侧是int,右侧是double,在加之前int被提升为double
        // 故:输出1.2
    }

2. 增量运算符

<1>. 简介

该种类型运算符操作完成后,会将操纵的结果赋值左操作数

<2>. 栗子一

public static void main(String[] args) {
              int a = 1;

        a += 2; // 相当于 a = a + 2
        System.out.println(a); // 输出3

        a -= 1; // 相当于 a = a - 1
        System.out.println(a); // 输出2

        a *= 3; // 相当于 a = a * 3
        System.out.println(a); // 输出6

        a /= 3; // 相当于 a = a / 3
        System.out.println(a); // 输出2

        a %= 3; // 相当于 a = a % 3
        System.out.println(a); // 输出2


    }

从中小伙伴是不是能得出一下结论呢 ❤️ ❤️ ❤️

鱼式疯言

温馨提示:

  • 只有变量才能使用的该运算符,常量是不能使用的
  • 该运算符是会发生整型提升的

不妨和小编看看下这个栗子或许就明白了

<3>. 栗子二

如果我们使用普通的操作符就会发生这种情况

在这里插入图片描述

 public static void main(String[] args) {
        byte a=10,b=20;
        a+=b;
        System.out.println(a);

    }

在这里插入图片描述
从中宝子们就可以看出
我们用增量操作符时就不会报错
显而易见

该运算符是会发生整型提升的

3. 自增 / 自减运算符

<1>. 简介

++ 是给 变量 的值 +1 , — — 是给 变量 的值 —1

<2>. 举个栗子

public static void main(String[] args) {
    int a = 1;
    a++; // 后置++ 表示给a的值加1,此时a的值为2


    System.out.println(a++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2
    System.out.println(a); // 输出3

    ++a; // 前置++ 表示给a的值加1
    System.out.println(++a); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5
    System.out.println(a); // 输出5
    // --操作符给操作-1,与++含义类似
}

在这里插入图片描述
++ 和 - - 固然好用,但一定要注意以下细节哦

鱼式疯言

温馨提示:

  • 如果单独使用,【前置++】和【后置++】没有任何区别
  • 如果混合使用,【前置++】 +1,然后使用变量 +1 之后的值, 【后置++】使用 变量 原来的值, 表达式结束时给变量+1
  • 只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改

三 . 关系运算符

<1>. 简介

关系运算符主要有六个: == 、 != 、 < 、> 、<=
>= ,其计算结果是 true 或者 false

<2>. 栗子一

 public static void main(String[] args) {
        int a = 10;
        int b = 20;
        // 注意:在Java中 = 表示赋值,要与数学中的含义区分
        // 在Java中 == 表示相等
        System.out.println(a == b); // false
        System.out.println(a != b); // true
        System.out.println(a < b); // true
        System.out.println(a > b); // false
        System.out.println(a <= b); // true
        System.out.println(a >= b); // false
    }

在这里插入图片描述
从中小伙伴赞不赞同小编下面的观点呢 💖 💖 💖

鱼式疯言

温馨提示:

  1. 关系运算符得出的结果(返回值)是 布尔类型不是返回 1 或 0 哦

  2. 当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的

那小爱同学就问:那该怎么写呢 ???
那就不得不用到我们下一节的 逻辑运算符 啦 😎 😎 😎

四. 逻辑运算符

<1>. 简介

逻辑运算符主要有三个: &&、 ||、 ! ,运算结果都是 boolean 类型。

小面让小编一 一带着小伙伴们分析分析0 💖 💖 💖

1. 逻辑与 &&

<1>. 简介

语法规则:表达式1 && 表达式2

左右表达式必须是 boolean 类型的结果。

相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。

两个表达式都为 ,结果才是

只要有一个是 ,结果就是

鱼式疯言

画个小图理解一下下呗

在这里插入图片描述

<2>. 举个栗子

  public static void main(String[] args) {
        int a = 1;
        int b = 2;

        System.out.println(a == 1 && b == 2); // 左为真 且 右为真 则结果为真

        System.out.println(a == 1 && b > 100); // 左为真 但 右为假 则结果为假

        System.out.println(a > 100 && b == 2); // 左为假 但 右为真 则结果为假

        System.out.println(a > 100 && b > 100); // 左为假 且 右为假 则结果为假
    }

在这里插入图片描述
由此总结一点

鱼式疯言

两个表达式都为真,结果才是只要有一个是假,结果就是

2. 逻辑或 ||

<1>.简介

语法规则:表达式1 || 表达式2

左右表达式必须是 boolean 类型的结果。

怎么说呢,就给友友们举个栗子吧

相当于现实生活中的或

比如:买房子交钱时,全款 或者 按揭都可以,如果全款或者按揭,房子都是你的,

否则站一边去。 😁 😁 😁

鱼式疯言

有图有真相 :

在这里插入图片描述

<2>.举个栗子

public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a == 1 || b == 2); // 左为真 且 右为真 则结果为真
        System.out.println(a == 1 || b > 100); // 左为真 但 右为假 则结果也为真
        System.out.println(a > 100 || b == 2); // 左为假 但 右为真 则结果也为真
        System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为假
    }

在这里插入图片描述

和上类一样,但小编还是在这里啰嗦几句 💖 💖 💖

鱼式疯言

左右表达式至少有一个为真,则结果为真

3. 逻辑非 !

<1>. 简介

语法规则:! 表达式

假,假真。

<2>. 举个栗子

public static void main(String[] args) {
    int a = 1;
    System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
    System.out.println(!(a != 1)); // a != 1 为false,取个非就是true
}

在这里插入图片描述

4 .逻辑运算符的实际运用

如果我们需要

a<x<b

x <a 或者 a>b

那该怎么敲出我们的代码呢 💕 💕 💕

不妨看小编的下面这段代码吧

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    // 注意:在Java中 = 表示赋值,要与数学中的含义区分
    // 在Java中 == 表示相等
    System.out.println(a >= 10 && a<20); //  10 <= b < 20  true
    System.out.println(b<-1 || b>30); //    b<-1 或者 b>30  false

}

在这里插入图片描述

5.短路求值

啥是 短路求值 呢,不妨宝子们先看个栗子呗 😍 😍 😍

<1>. 栗子一

public static void main(String[] args) {
    System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
    System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
}

在这里插入图片描述
从中可以看出
我们都知道, 计算 10 / 0 会导致程序抛出 异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值.

所以 友友们就可以总结出 短路求值 的概念了

对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算 右侧表达式.

对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.

鱼式疯言

但我们 Java 还有个 特殊用法

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

就像下面这个栗子 一般,我们不支持短路求值就会报错 💖 💖 💖

<2>. 栗子二

public static void main(String[] args) {
    System.out.println(10 > 20 & 10 / 0 == 0); // 程序抛出异常
    System.out.println(10 < 20 | 10 / 0 == 0); // 程序抛出异常
}

在这里插入图片描述

本篇内容就到这里就先告一段落了,下面让小编来梳理并总结下在本篇文章中收获了哪些知识点吧 💖 💖 💖

总结

  • 运算符的概念:简单说明的运算的概念以及作用
  • 算术运算符大家庭:详细的解析力 不同运算符的使用方法以及注意事项
  • 关系运算符:了解关系运算符的简单运用和返回值的本质
  • 逻辑运算符:知晓了逻辑运算并配合我们关系运算符的实际运用

如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正

希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖

在这里插入图片描述

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

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

相关文章

LLMChain使用 | RouterChain的使用 - 用本地大模型搭建多Agents

单个本地大模型搭建参考博客 单个Chain&#xff1a;面对一个需求&#xff0c;我们需要创建一个llmchain&#xff0c;设置一个prompt模板&#xff0c;这个chain能够接收一个用户input&#xff0c;并输出一个结果&#xff1b;多个Chain&#xff1a;考虑到同时面对多个需求&#x…

十六、多边形填充和绘制

项目功能实现&#xff1a;对多边形进行轮廓绘制和填充 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 mult-drawing.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class Mult_Drawing { public:void mult_drawing(); };#pragma onc…

Employee Management系统存在Sql注入 附源代码

免责声明&#xff1a;本文所涉及的信息安全技术知识仅供参考和学习之用&#xff0c;并不构成任何明示或暗示的保证。读者在使用本文提供的信息时&#xff0c;应自行判断其适用性&#xff0c;并承担由此产生的一切风险和责任。本文作者对于读者基于本文内容所做出的任何行为或决…

C++日志库plog使用指南

前言 之前介绍过一个C语言日志库 轻量级c语言开源日志库log.c介绍&#xff0c;源代码只有不到200行&#xff0c;使用非常方便。但是也存在很多缺点&#xff0c;比如日志时间只支持打印到秒&#xff0c;没有作多线程处理&#xff0c;不支持日志回滚。在小型项目或者测试demo中使…

如何将cocos2d-x js打包部署到ios上 Mac M1系统

项目环境 cocos2d-x 3.13 xcode 12 mac m1 big sur 先找到你的项目 使用xcode软件打开上面这个文件 打开后应该是这个样子 执行编译运行就好了 可能会碰到的错误 在xcode11版本以上都会有这个错误&#xff0c;这是因为iOS11废弃了system。 将上面代码修改为 #if (CC_TARGE…

打败茅台的“老酒”

作者&#xff1a;翻篇 琥珀酒研社快评&#xff1a; 最可恨的 从来不是什么强大敌人 而是美名其曰的猪队友 要不怎么有网友说 酒鬼酒太惨了 当年要不是败给内鬼 又曝出塑化剂事件 错过白酒发展的黄金十年 不说打败茅台、五粮液 但成为另一个茅台、五粮液 那完全有希…

【智慧零售】门店管理设备解决方案,为企业数字化运营升级赋能

2023年我国零售总额超47万亿元&#xff0c;广阔的市场提供了更多机遇&#xff0c;同时随着日趋激烈的竞争&#xff0c;企业也正面临着一些挑战&#xff1a;如何才能有效提升门店生产效率&#xff1f;降低门店运营成本&#xff1f;提高市场竞争力&#xff1f; 零售企业认识到通…

Vue3 + Ts (使用lodash)

安装 npm i --save lodash使用 import _ from lodash⚠️报警告&#xff1a;&#xff01;&#xff01;&#xff01; 此时还需要安装ts声明文件库 npm install types/lodash -D安装之后重启Vscode还是会提示上面的警告&#xff0c;此时还需在tsconfig.ts里面配置 {"c…

QT day2 2.21

1.使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 代码&#xff1a; #include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(pa…

C语言文件操作学习【2】—— 文件的顺序读写

顺序读写函数介绍 函数名功能适用于fgetc字符输入函数所有输入流fputc字符输出函数所有输出流fgets文本行输入函数所有输入流fputs文本行输出函数所有输出流fscanf格式化输入函数所有输入流fprintf格式化输出函数所有输出流fread二进制输入文件fwrite二进制输出文件 上面说的…

Cartographer框架简述

catographer框架分为前端和后端 前端包括雷达数据处理&#xff1b;位姿预测&#xff1b;扫描匹配和栅格地图更新。 后端包括后端&#xff1a;线程池任务与调度&#xff1b;向位姿图添加节点&#xff0c;计算节点的子图内约束和子图间约束&#xff08;回环检测&#xff09;&…

HAL STM32 HW I2C DMA + SSD1306/SH1106驱动示例

HAL STM32 HW I2C DMA SSD1306/SH1106驱动示例 &#x1f4cd;硬件I2C DMA驱动参考&#xff1a;https://blog.csdn.net/weixin_45065888/article/details/118225993 &#x1f4cc;github上的相关项目&#xff1a;https://github.com/taburyak/STM32_OLED_SSD1306_HAL_DMA &am…

typescript映射类型

ts映射类型简介 TypeScript中的映射类型&#xff08;Mapped Type&#xff09;是一种高级类型&#xff0c;它允许我们基于现有类型创建新的类型&#xff0c;同时对新类型的每个属性应用一个转换函数。通过使用映射类型&#xff0c;我们可以方便地对对象的属性进行批量操作&…

猫头虎分享已解决Bug || 系统更新失败(System Update Failure):UpdateError, UpgradeFailure

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

nginx详细教程

一、nginx简介 1. 概述 Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;在 BSD-like 协议下发行。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上 nginx 的并发能力在同类型的网页服务器中…

VMware连通问题

虚拟机配好后发现竟然到网关都不通做了一系列排查后 最后在真机上查看发现VMware的NAT服务没有开启 WinR输入services.msc&#xff0c;启动VMware NAT Service后问题就解决了&#xff01;

【软件架构】02-复杂度来源

1、性能 1&#xff09;单机 受限于主机的CPU、网络、磁盘读写速度等影响 在多线程的互斥性、并发中的同步数据状态等&#xff1b; 扩展&#xff1a;硬件资源、增大线程池 2&#xff09;集群 微服务化拆分&#xff0c;导致调用链过长&#xff0c;网络传输的消耗过多。 集…

L2 清点代码库----PTA(疑问)

上图转自新浪微博&#xff1a;“阿里代码库有几亿行代码&#xff0c;但其中有很多功能重复的代码&#xff0c;比如单单快排就被重写了几百遍。请设计一个程序&#xff0c;能够将代码库中所有功能重复的代码找出。各位大佬有啥想法&#xff0c;我当时就懵了&#xff0c;然后就挂…

基于SpringBoot+MyBatis-Plus的教务管理系统

基于SpringBootMyBatis-Plus的教务管理系统 教务管理系统开发技术功能模块代码结构数据库设计运行截图源码获取 教务管理系统 欢迎访问此博客&#xff0c;是否为自己的毕业设计而担忧呢&#xff1f;是否感觉自己的时间不够做毕业设计呢&#xff1f;那你不妨看一下下面的文章&a…

QFileDialog文件选择对话框

QFileDialog 类是 Qt 框架中用于处理文件对话框的一个类&#xff0c;它继承自 QDialog。QFileDialog 提供了标准的文件选择对话框&#xff0c;使用户能够选择文件或目录。这个类可以用于打开或保存文件&#xff0c;也可以用来选择目录。 主要功能 打开和保存文件&#xff1a;…