滚雪球学Java(09-8):Java中的单目运算符,你真的掌握了吗?

简介: 【2月更文挑战第19天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!

在这里插入图片描述

  咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~


🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

@[toc]

前言

  Java是一门功能强大的编程语言,适用于各种类型的编程。在Java中,单目运算符是一种对单个操作数进行操作的运算符。本文将着重介绍Java中的单目运算符,并提供一些实用的案例应用。

摘要

  本文主要介绍Java中的单目运算符,包括递增、递减、正负号、逻辑非等常用运算符。通过对这些运算符的深入了解,我们可以更好地理解Java中的运算符,从而更加熟练地使用Java进行编程。

Java-单目运算符

简介

  在Java中,单目运算符是一种只操作一个操作数的运算符。Java中的单目运算符包括递增(++)、递减(--)、正负号(+、-)和逻辑非(!)等运算符。这些运算符可以用于不同的数据类型,包括整型、浮点型、布尔型等。

源代码解析

递增和递减运算符

  递增和递减运算符用于对变量的值进行增加或减少操作。递增运算符(++)将变量的值加上1,递减运算符(--)将变量的值减去1。这两个运算符都可以前缀或后缀使用。

  前缀使用时,递增和递减运算符先对变量进行计算,然后将计算后的值赋给变量。后缀使用时,则是先将变量的值赋给另一个变量,然后再对原变量进行计算。

int i = 0;
int j = ++i;    // i=1, j=1
int k = i--;    // i=0, k=1

正负号运算符

  正负号运算符(+、-)用于对变量的值进行正负号的操作。当加上正号(+)时,变量的值保持不变;当加上负号(-)时,变量的值变为相反数。

int i = 5;
int j = -i;    // j = -5

逻辑非运算符

  逻辑非运算符(!)用于对布尔型变量进行取反操作。如果布尔型变量的值为true,则取反后的值为false;如果布尔型变量的值为false,则取反后的值为true。

boolean b = true;
boolean c = !b;    // c = false

应用场景案例

递增和递减运算符的应用

  递增和递减运算符可以用于循环语句中,实现循环计数器的自增或自减。

for (int i = 0; i < 10; i++) {
   
   
    System.out.println(i);
}

正负号运算符的应用

  正负号运算符可以用于计算两个数的加减法。

int a = 5, b = -3;
int c = a + b;    // c = 2

逻辑非运算符的应用

  逻辑非运算符可以用于条件语句中,实现条件的取反操作。

boolean isLogged = false;
if (!isLogged) {
   
   
    System.out.println("请先登录");
}

优缺点分析

  Java中的单目运算符简单易用,能够快速地实现对变量的操作。但是,过多地使用单目运算符会导致程序的可读性变差,不利于程序的维护和升级。

类代码方法介绍

以下是Java中常用的单目运算符:

int a = 5, b = -3;
int c = ++a;    // a=6, c=6
int d = b--;    // b=-4, d=-3
int e = +a;    // e=6
int f = -b;    // f=4
boolean g = true;
boolean h = !g;    // h=false

测试用例

测试代码演示

package com.demo.javase.day09;

/**
 * Java之单目运算符案例演示
 *
 * @Author bug菌
 * @Date 2023-11-08 23:24
 */
public class UnaryOperatorTest {
   
   

    public static void main(String[] args) {
   
   
        int a = 5, b = -3;
        System.out.println("a=" + a + ", b=" + b);
        a++;
        System.out.println("a++=" + a);
        b--;
        System.out.println("b--=" + b);
        int c = ++a;
        System.out.println("++a=" + c);
        int d = b--;
        System.out.println("b--=" + d);
        int e = +a;
        System.out.println("+a=" + e);
        int f = -b;
        System.out.println("-b=" + f);
        boolean g = true;
        boolean h = !g;
        System.out.println("!g=" + h);
    }
}

测试结果

  根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

在这里插入图片描述

测试代码分析

  根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。

  该代码演示了 Java 中的单目运算符,包括自增(++)、自减(--)、取反(!)、正号(+)和负号(-)等。运行该代码可以得到如下输出:

a=5, b=-3
a++=6
b--=-4
++a=7
b--=-4
+a=7
-b=4
!g=false

  其中,自增运算符 a++ 和 ++a 的区别在于 a++ 先赋值后自增,而 ++a 先自增后赋值,因此执行完 int c = ++a; 后, a 的值为 7,c 的值也为 7。同理,b-- 和 --b 的区别在于 b-- 先赋值后自减,而 --b 先自减后赋值。

  正号(+)和负号(-)主要作用是对数值进行符号的转换,例如执行 int f = -b; 后,f 的值为 4。

  取反(!)主要作用在布尔类型中,将 true 转为 false,false 转为 true,例如执行 boolean h = !g; 后,h 的值为 false。

全文小结

  本文介绍了Java中的单目运算符,包括递增、递减、正负号、逻辑非等运算符。通过对这些运算符的深入了解,我们可以更好地理解Java中的运算符,从而更加熟练地使用Java进行编程。本文还提供了一些实用的案例应用,帮助读者更好地掌握单目运算符的使用方法。

总结

  单目运算符是Java中重要的运算符之一,可以用于对变量的值进行增加、减少、取反等操作。适当地使用单目运算符可以提高程序的效率和可读性。然而,过多地使用单目运算符会导致程序的可读性变差,不利于程序的维护和升级。因此,在编写Java程序时,需要根据具体情况选择适当的运算符,以达到最优的效果。

  ...

  好啦,这期的内容就基本接近尾声啦,若你想学习更多,可以参考这篇专栏总结《「滚雪球学Java」教程导航帖》,本专栏致力打造最硬核 Java 零基础系列学习内容,🚀打造全网精品硬核专栏,带你直线超车;欢迎大家订阅持续学习。

附录源码

  如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你


  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

📣关于我

  我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


目录
相关文章
|
3天前
|
存储 Java
java中的常见运算符的计算方式
本文介绍了计算机中二进制数的原码、反码和补码的概念及其转换方式。原码是符号位加真值的绝对值;反码中正数不变,负数其余位取反;补码在反码基础上加1。文章还详细解释了Java中的常见运算符(如按位与、或、异或、移位等)如何基于二进制进行计算,并探讨了使用补码的原因,包括统一符号位处理和扩展表示范围。通过具体代码示例帮助理解这些概念。
java中的常见运算符的计算方式
|
3月前
|
算法 Java 测试技术
🌟Java 零基础 | 详解 单目运算符
【10月更文挑战第14天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
64 7
|
3月前
|
Java 测试技术 开发者
🌟Java 零基础 | 深入理解三目运算符
【10月更文挑战第13天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
93 3
|
3月前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
28 1
|
3月前
|
安全 Java 测试技术
🌟 Java 零基础 | 详解 instanceof 运算符
【10月更文挑战第1天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
66 1
|
8天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
10天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
10天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
11天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
33 3
|
11天前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
92 2