【Java探索之旅】运算符解析 算术运算符,关系运算符

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【Java探索之旅】运算符解析 算术运算符,关系运算符

📑前言

Java中运算符是非常重要的概念,它们用于对变量进行操作和比较,是实现各种算法和逻辑的基础。本文将介绍Java中的算术运算符和关系运算符,解释它们的基本用法和注意事项,帮助读者更好地理解和运用这些运算符。

一、什么是运算符

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

int a = 10;
int b = 20;
a < b;
b > a;
a + b;
a * b;

上述 + * > < 等就是运算符

即:对操作数进行操作时的符号,不同运算符操作的含义不同。作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - */)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等.

二、算术运算符

2.1 基本四则运算(±*/%)

int a = 10;
int b = 5;
System.out.println(a+b);    //15
System.out.println(a-b);    //5
System.out.println(a*b);    //50
System.out.println(a/b);    //2
System.out.println(a%b);    //取模,相当于数学除法中的取余数

注意:

  • 都是二元运算符,使用时必须要有左右两个操作数
  • int / int 结果还是int类型,而且会向下取整

int a = 3;
int b = 2;
System.out.println(a/b);    
//数学中应该输出1.5,java会向下取整,即小数点之后全部舍弃了(相当于是两个整数的除法,输出的结果也就是整数)
//想要实现数学中的除法可以使用下面方法(只要两边有一个数是浮点数,那么输出的结果就是浮点数)
double d = a * 1.0 / b;
System.out.println(d);
  • 做除法和取模时,右操作数不能为0

int a = 3;
int b = 0;
System.out.println(a/b);
System.out.println(a%b);

否则就会报错:

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

System.out.println(11.5%2); //1.5
  • 两侧操作数类型不一致时,向类型大的提升

System.out.println(1+0.5);//1是int类型,0.5是double类型,在运算的时候,1会先提升为double类型再参与计算1.0+0.5=1.5

2.2 增量运算

+= -= *= %=该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。

int a = 8;
a -= 1; //相当于 a = a - 1
System.out.println(a);
a += 2; //相当于 a = a + 2
System.out.println(a);
a *= 5; //相当于 a = a * 5
System.out.println(a);
a /= 3; //相当于 a = a / 3
System.out.println(a);
a %= 2; //相当于 a = a % 2
System.out.println(a);

**注意:**只有变量才能使用该运算符,常量不能使用。

2.3 自增运算

++是给变量的值+1,–是给变量的值-1

int a = 7;
a++;    //后置++,表示给a的值+1
++a;    //前置++,表示给a的值+1
System.out.println(a++);    //后置++,先使用再++,先输出a原来的值,然后再对a进行+1
System.out.println(--a);    //前置++,先++再使用,先对a原本的值进行+1,然后再对其输出
int b = 6;
b--;    //后置--,表示给a的值-1
--b;    //前置--,表示给a的值-1
System.out.println(--b);    //前置--,先--再使用,先对b原来的值-1,然后再输出
System.out.println(b--);    //后置--,先使用再--,先输出b原来的值,然后再对b进行-1

注意:

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

三、关系运算符

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

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

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

🌤️全篇总结

本篇详细Java中的算术运算符和关系运算符,包括基本的四则运算、增量运算、自增自减运算以及关系运算符的使用方法和注意事项。看到这里相信你已经可以熟练地运用这些运算符,编写出更加高效和准确的Java程序。在日常的编程实践中,灵活运用这些运算符将为您的代码逻辑增添无穷活力!

33dcadccda9a4327a9541c4fd95c09fd.png

目录
相关文章
|
3天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
15 2
|
7天前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
49 6
|
4天前
|
存储 算法 Java
Java Set深度解析:为何它能成为“无重复”的代名词?
Java的集合框架中,Set接口以其“无重复”特性著称。本文解析了Set的实现原理,包括HashSet和TreeSet的不同数据结构和算法,以及如何通过示例代码实现最佳实践。选择合适的Set实现类和正确实现自定义对象的hashCode()和equals()方法是关键。
15 4
|
7天前
|
Java 编译器 数据库连接
Java中的异常处理机制深度解析####
本文深入探讨了Java编程语言中异常处理机制的核心原理、类型及其最佳实践,旨在帮助开发者更好地理解和应用这一关键特性。通过实例分析,揭示了try-catch-finally结构的重要性,以及如何利用自定义异常提升代码的健壮性和可读性。文章还讨论了异常处理在大型项目中的最佳实践,为提高软件质量提供指导。 ####
|
10天前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
11 0
|
8天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
17天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
4天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
23 9
|
7天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####

推荐镜像

更多