【Java】基础篇-运算符与表达式-自增自减

简介: 【Java】基础篇-运算符与表达式-自增自减

 😸个人主页👉神兽汤姆猫

📖系列专栏🔥编程语言环境配置JavaJava面试    

💕如果此篇文章对您有帮助的话,请点赞转发收藏这对我有很大的帮助。

运算符:对常量或变量进行操作的符号。

表达式:用运算符把常量或变量连接起来符合Java语法的式子即是表达式。

不同运算符连接的表达式体现的是不同类型的表达式

int a = 10;
int b = 20;
int c = a + b;

image.gif

以上案例中,+是运算符,且是算数运算符。a + b是表达式,由于+是算数运算符,故此表达式称为算数表达式。

算数运算符

符号 作用 说明
+ 就是你能理解日常生活的加
- 就是你能理解日常生活的减
* 同 x号
/ 同÷号。整数相除,结果只能得整数,如果想得到有小数得结果,必须加入浮点类型(小数)的运算。取得是商。
% 取余/取模 获取是两个数据做除法的余数/取余数

字符+操作

ASCII码表:美国信息交换表中代码,是计算机中字节到字符得一套对应关系。

int a = 10;
char b = 'a';
System.out.println(a + b);

image.gif

在上例中,a+b的运算中,a为int类型,b为char类型

Java基础篇类型转换专题,提到过(当 byte、short、char、int在一起运算时,都会提升至int后,在进行运算)

char提升int的过程之中,就是查找ASCII码表中字符所对应的数值表示形式

字符a查找到数值的97之后,在和数值10进行运算,结果为107,即输出结果为:107

字符串+操作

+操作出现字符串时,这个+就是[字符串连接符],而不是算数运算。

+操作时,如果出现字符串,则为连接运算符,否则为算数运算。当连续进行+操作时,从左到右逐个执行。

public static void main(String[] args) {
    System.out.println("神兽汤姆猫"+ 1314);//神兽汤姆猫1314
    System.out.println("神兽汤姆猫"+ false);//神兽汤姆猫false
    System.out.println("神兽汤姆猫"+ 77.88);//神兽汤姆猫77.88
    System.out.println(520+1314+"神兽汤姆猫");//1834神兽汤姆猫,在+操作时,如果出现字符串,则为连接运算符,否则为算数运算。当连续进行+操作时,从左到右逐个执行
    System.out.println("9+9="+8+7);//9+9=87
    System.out.println("9+9="+(8+7));//加括号,提升优先级,即可得到8+7=15,也就是9+9=15
}

image.gif

案例:输入四位数,并将其拆分为个位、十位、百位、千位,并输出。

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个四位的数");
        int num = sc.nextInt();
        //个位数
        int ge =num % 10;
        //十位数
        int shi = num /10 %10;
        //百位数
        int bai = num /10 /%10 10;
        //千位数
        int qian = num /10 /10 /%10 10;
        //
        System.out.println("整数"+num+"的个位是"+ ge);
        System.out.println("整数"+num+"的十位是"+ shi);
        System.out.println("整数"+num+"的百位是"+ bai);
        System.out.println("整数"+num+"的千位是"+ qian);
    }
}

image.gif

自增自减运算符

符号 作用 备注
++ 自增 变量值自身加1
-- 自减 变量值自身减1

+ +- -既可以放在变量前,也可以放在变量后

注意:单独使用时,+ +- -无论是放在变量前和变量后,结果是一样的

参与操作时

++在前:先对变量做自增(++)或自减(--),然后在拿变量参与操作。

++在后:先对变量原本值,取出参与操作,随后在进行自增(++),自减(--)

最常见方式为单独使用。

+ +- -只可以操作变量,不可以操作常量。

public static void main(String[] args) {
   //单独使用时,如下,一句代码中只做了++或--
    int a = 10;
    a++;// a = a +1
    System.out.println(a);//11
    int c = 10;
    ++c;// a = a +1
    System.out.println(c);//11
    int b = 10;
    b--;// a = a -1
    System.out.println(b);//9
    int d = 10;
    --d;// a = a -1
    System.out.println(d);//9
}

image.gif

public static void main(String[] args) {
    //如果参与操作,则:
    //++在前:先对变量做自增(++)或自减(--),然后在拿变量参与操作
    //++在后:先对变量原本值,取出参与操作,随后在进行自增(++),自减(--)
    int a = 10;
    int b = ++a;//先对变量做自增(++)或自减(--),然后在拿变量参与操作
    System.out.println(a);//11
    System.out.println(b);//11
    int aa = 10;
    int bb = aa++;////++在后:先对变量原本值,取出参与操作,随后在进行自增(++),自减(--)
    System.out.println(aa);//11
    System.out.println(bb);//10
    //
    int num = 1234;
    System.out.println(num++);//1234
    System.out.println(num);//1235
}

image.gif

赋值运算符

符号 作用 示例 备注
= 赋值 a=10,将10赋值给变量a 将符号右侧的数据,赋值给左边
+= 加后赋值 a+=b,将a+b的值,赋值给a 将符号左右两边的数据,做加法运算,结果赋值给左边
-= 减后赋值 a-=b,将a-b的值,赋值给a 将符号左右两边的数据,做减法运算,结果赋值给左边
*= 乘后赋值 a*=b,将axb的值,赋值给a 同理
/= 除后赋值 a/=b,将a÷b的商,赋值给a 同理
%= 取余后赋值 a%=b,将a÷b的余,赋值给a 同理

扩展的赋值运算符隐含了强制类型转换

关系运算符

符号 作用 示例 备注
== 相等 a = =b,判断a和b的值是否相等,成立为true,不成立为false
!= 不相等 a != b,判断a和b的值是否不想等,成立为true,不成立为false
> 大于 a > b,判断a是否大于b,成立为true,不成立为false
>= 大于等于 a >= b,判断a是否大于等于b,成立为true,不成立为false
< 小于 a < b,判断a是否小于b,成立为true,不成立为false
<= 小于等于 a <= b,判断a是否小于等于b,成立为true,不成立为false
public static void main(String[] args) {
    System.out.println(10 > 30);//false
    System.out.println(10 >= 30);//false
    System.out.println(10 <= 30);//true
    System.out.println(10 < 30);//true
    System.out.println(10 != 30);//true
    System.out.println(10 == 30);//false
}

image.gif

逻辑运算符

在生活中如果我们需要表达某个数据a,大于10,小于20,我们一般这样表示:10<a<20,但这只符合生活中数学语法。

在Java中,我们则需要对其进行拆解再合并进行表达。

拆解:a>10和a<20

合并:a>10&a<20 //a>10并且a<20

作用:用于[整合]多个比较表达式的条件:

连接多个比较表达式

连接true或false

最终得到的结果都是boolean类型的true或false

符号 作用 备注
&(逻辑与) 并且 遇到false则false,只有符号左右两边同时为true,结果才为true
|(逻辑或) 或者 遇到true则true,只有符号左右两边同时为false,结果才为false
!(逻辑非) 取反 反过来
^(逻辑异或) 相同为false,不同为true
public static void main(String[] args) {
    System.out.println("------以下为与&的示例输出-------");
    System.out.println(true & true);//true
    System.out.println(false & false);//false
    System.out.println(true & false);//false
    System.out.println(false & true);//false
    System.out.println("------以下为或|的示例输出-------");
    System.out.println(true | true);//true
    System.out.println(false | false);//false
    System.out.println(true | false);//true
    System.out.println(false | true);//true
    System.out.println("------以下为非!的示例输出-------");
    System.out.println(! true);//false
    System.out.println(!! true);//true
    System.out.println("------以下为异或^的示例输出-------");
    System.out.println(true ^ true);//false
    System.out.println(false ^ false);//false
    System.out.println(true ^ false);//true
    System.out.println(false ^ true);//true
    //理解异或,以当前现实婚姻情况为前提,假设false为男,true为女,男女可以,男男或者女女就不可以。
}

image.gif

短路逻辑运算符

符号 作用 备注
&& 短路与 和&作用相同,都是并且的作用,但是有短路效果
|| 短路或 和| 作用相同,都是或者的作用,但是有短路效果

&和&&的区别?:

&没有短路效果,无论符号左边是true还是false,右边都要继续执行。

&&具有短路效果,符号左边为false时,右边就不执行了。如果符号左边为true,右边则要继续执行。

即:

    1. 逻辑与&:无论左边真假,右边都要执行。
    2. 短路与&&:如果左边为真,右边执行。如果左边为假,右边不执行
    3. 逻辑或|:无论左边真假,右边都要执行。
    4. 短路或||:如果左边为假,右边执行。如果左边为真,右边不执行。  

    三元运算符

    格式: 关系表达式 ? 表达式1: 表达式2;

    执行流程:

      1. 先计算关系表达式的值
      2. 值为true,取表达式1的值
      3. 值为false,取表达式2的值

      案例:差莱坞有三个鸡,我们通过称重,知道它们重量分别为29Kg、30Kg、70Kg,我们需要使用程序来获取最重的那个

      public static void main(String[] args) {
          //定义三个变量存储鸡的体重,单位为kg,但现在我们只需要体现数值,分别命名ikun a、ikun b、ikun c
          int a = 29;//定义变量保存体重
          int b = 30;//定义变量保存体重
          int c = 70;//定义变量保存体重
          //用三元运算符,比较前两个变量,获取最大值。使用临时变量(tempD)进行存储结果
          int tempD = (a>b) ? a : b;//比较前两个变量,获取最大值
          //用三元运算符,让较大的值和第三个变量c比较,获取最大值
          int d = (tempD>c) ? tempD : c;//较大值和第三个变量比较,获取最大值
          //或者将上面的两条三元运算符整合为一条,具体如下所示:
          int result = a > b ? a : b > c ? a > b ? a : b : c;
          System.out.println(d);//输出结果:
          System.out.println(result);//第二种输出结果:
      }

      image.gif

      💕如果此篇文章对您有帮助的话,请点赞转发收藏这对我有很大的帮助。

      相关文章
      |
      9月前
      |
      Java Go 开发工具
      【Java】(4)五种运算符的说明(&&、||、>=、>、<=、<)、4种控制语句(if、for、while、dowhile)、输入和输出说明
      扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的的类型byte类型,无论怎么进行加或追减,最终该变量的数据类型还是byte类型。注:一个表达式中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果。当用户输入的时候,并且最终敲回车键的时候,键入的信息会自动赋值给a。并且,连接运算之后的结果还是一个字符串类型。表达式1 : 表达式2。
      299 2
      |
      11月前
      |
      Java 编译器 API
      Java Lambda表达式与函数式编程入门
      Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
      |
      11月前
      |
      存储 缓存 算法
      Java数据类型与运算符深度解析
      本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
      |
      11月前
      |
      安全 Java API
      Java中的Lambda表达式:简洁与功能的结合
      Java中的Lambda表达式:简洁与功能的结合
      578 211
      |
      11月前
      |
      安全 Java
      Java中的Switch表达式:更简洁的多路分支
      Java中的Switch表达式:更简洁的多路分支
      767 211
      |
      11月前
      |
      Java 编译器
      Java 17 Switch表达式:更简洁、更强大的流程控制
      Java 17 Switch表达式:更简洁、更强大的流程控制
      1247 111
      |
      12月前
      |
      设计模式 数据采集 Java
      Java正则表达式的基础知识,进阶至熟练掌握。
      通过大量的练习来熟悉它们的识别模式、如何设计模式来解决实际问题,才能够逐步达到熟练掌握。更多的是通过实践、编写代码和解决真实问题来完善技能。在这方面,没有快速的捷径,唯有刻意练习和长时间的代码实践。
      237 0
      |
      自然语言处理 Java Apache
      在Java中将String字符串转换为算术表达式并计算
      具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
      515 14
      |
      SQL JSON 安全
      Java 8 + 中 Lambda 表达式与 Stream API 的应用解析
      摘要:本文介绍了Java 8+核心新特性,包括Lambda表达式与Stream API的集合操作(如过滤统计)、函数式接口的自定义实现、Optional类的空值安全处理、接口默认方法与静态方法的扩展能力,以及Java 9模块化系统的组件管理。每个特性均配有典型应用场景和代码示例,如使用Stream统计字符串长度、Optional处理Map取值、模块化项目的依赖声明等,帮助开发者掌握现代Java的高效编程范式。(150字)
      280 1