【Java基础学习打卡18】运算符(上)


前言

本文主要介绍运算符和表达式,及运算符中的算术运算符。在 Java 编程中,运算符起着非常重要的作用,它们用于对数据进行操作和计算。运算符可以帮助我们进行数学运算、逻辑判断、赋值操作等,是编写复杂程序和表达式的基础。


一、运算符和表达式

1.运算符

运算符是一种用来执行特定操作的符号或符号组合。 在计算机编程中,运算符用于操作数(变量、常量或表达式)之间的运算,以产生一个结果。

常见的运算符包括:

  • 算术运算符
  • 赋值运算符
  • 自增自减运算符
  • 关系运算符
  • 逻辑运算符
  • 三元运算符

这只是一部分常见的运算符,不同的编程语言可能会有更多特定的运算符。在编程中,合理使用运算符可以实现各种复杂的计算和逻辑操作。

2.表达式

表达式是由操作数和运算符组成的代码结构,用于计算一个值。 表达式能够执行诸如数学运算、逻辑判断、变量赋值等各种计算操作。

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

在上述代码中,定义了 ab 变量,也就是操作数,在代码 int c = a + b; 中,+ 号是运算符,并且是算术运算符,表示相加。那么 a+b 就是表达式,由于使用 + 号这个算术运算符,所以这个表达式叫做算术表达式。

Java 语言支持多种类型的表达式,包括算术表达式、关系表达式、逻辑表达式、赋值表达式等。

二、算术运算符

算术运算符用于执行基本的数学运算,Java 是支持所有的基本算术运算符的,包括加(+)、减(-)、乘(*)、除(/)、取余(%)。

1.加法运算符

加法运算符(+):用于执行加法运算,将两个操作数相加并返回结果。

public static void main(String[] args) {
    // 定义两个整型变量
    int a = 10;
    int b = 20;
    // 进行加法运算,结果为30
    int c = a + b;
    System.out.println(c);
}

+ 号除了有加法运算功能外,还可以作为字符串的连接符。

public static void main(String[] args) {
	int a = 10;
	System.out.println("你的等级为:" + a);	
}

运行结果为:
在这里插入图片描述
当加号(+)的其中一个操作数是字符串时,Java 会自动将另一个操作数转换为字符串,然后执行字符串的连接操作。

2.减法运算符

减法运算符(-):用于执行减法运算,将第一个操作数减去第二个操作数并返回结果。

public static void main(String[] args) {
    // 定义两个整型变量
	int a = 10;
	int b = 20;
    // 进行减法运算,结果为-10
	int c = a - b;
	System.out.println(c);	
}

3.乘法运算符

乘法运算符(*):用于执行乘法运算,将两个操作数相乘并返回结果。注意这里的乘法运算符是星号(*),不是数学中的乘号(x)。

public static void main(String[] args) {
    // 定义两个整型变量
	int a = 10;
	int b = 20;
    // 进行乘法运算,结果为200
	int c = a * b;
	System.out.println(c);	
}

4.除法运算符

除法运算符(/):用于执行除法运算,将第一个操作数除以第二个操作数并返回结果。要注意这里的除法运算符号是(/),不是数学中的除号( ÷ \div ÷)。

还有几点需要注意:

  • 当除法运算符的两个操作数都是整数类型,那么计算结果也是整数,这是结果值会直接截断,取整数部分。
  • 当除法运算符的两个操作数有一个浮点类型,或两个都是浮点类型,则计算结果也是浮点类型,即整数带小数。
  • 当除法运算符的两个操作都是整数类型,除数不可以为 0,程序运行报错:/ by zero
  • 当除法运算符的两个操作数有一个浮点类型,或两个都是浮点类型,除数可以是 0 或 0.0,计算结果为 Infinity(无穷)。
public static void main(String[] args) {
	// 操作数都为整数类型
	int a = 3;
	int b = 2;
	int c = a / b;
	// 计算结果为1,只取整数部分,不进行四舍五入
	System.out.println(c);
	// 除数不能为0,否则运行报错java.lang.ArithmeticException: / by zero
	//System.out.println(a / 0);

	// 操作数至少有一个为浮点类型
	float x = 1.8f;
	float y = 0.7f;
	float z = x / y;
	// 计算结果有小数部分,但要注意浮点类型的精度
	System.out.println(z);
	// 结果为Infinity
	System.out.println(x / 0);	
}

运行结果为:

在这里插入图片描述

5.取余运算符

取余运算符(%):也叫取模运算符,用于执行取余运算,将第一个操作数除以第二个操作数并返回余数。

取余运算是在两个数相除得到的结果取余数部分,所以取余运算先要进行除法运算,那么除法中的注意事项在取余运算中同样生效,只不过当取余运算符的两个操作数有一个浮点类型,或两个都是浮点类型,除数可以是 0 或 0.0,计算结果为 NaN(非数)。

public static void main(String[] args) {
	// 操作数都为整数类型
	int a = 3;
	int b = 2;
	int c = a % b;
	// 计算结果为1,只取余数部分
	System.out.println(c);
	// 除数不能为0,否则运行报错java.lang.ArithmeticException: / by zero
	//System.out.println(a % 0);

	// 操作数至少有一个为浮点类型
	float x = 1.8f;
	float y = 0.7f;
	float z = x % y;
	// 计算结果为小数,但要注意浮点类型的精度
	System.out.println(z);
	// 结果为NaN
	System.out.println(x % 0);	
}

运行结果为:

在这里插入图片描述

6.表达式类型自动提升

在 Java 中,表达式类型自动提升是指在进行运算时,如果两个操作数具有不同的数据类型,Java 会根据一定的规则将其中一个操作数的类型转换为另一个操作数的类型,以便进行运算。

具体自动提升规则如下:

  • byteshortchar 类型提升为 int 类型
  • 整个算术表达式的数据类型自动提升到表达式中最高等级操作数相同的类型,等级顺序为:byte、short、char→int→long→float→double

如果两个操作数的类型不同,但它们都是整数类型,Java 会将它们都转换为更高精度的整数类型。例如,byteint 相加时,byte 会被自动提升为 int 类型。

byte a = 5;
int b = 10;
int c = a + b; // byte类型的a会被自动提升为int类型

如果一个操作数是整数类型(byteshortintlong),另一个操作数是浮点数类型(floatdouble),则整数类型会被自动提升为浮点数类型。这是因为浮点数类型的表示范围更广。

int a = 5;
double b = 3.14;
double result = a + b; // int类型的a会被自动提升为double类型

如果一个操作数是整数类型,另一个操作数是 char 类型,那么 char 类型会被自动提升为整数类型。

int a = 65;
char b = 'A';
int c = a + b; // char类型的b会被自动提升为int类型

需要注意的是,自动提升只是临时性地将操作数的类型提升为适合的类型用于计算,并不会改变操作数本身的类型。因此,如果需要将提升后的结果赋值给原始类型的变量,可能需要进行强制类型转换。

自动提升在 Java 中确保了在运算时数据的精度和范围不会丢失,同时提供了更灵活的表达式计算。


总结

运算符是一种用来执行特定操作的符号或符号组合。而表达式是由操作数和运算符组成的代码结构,用于计算一个值。注意表达式只能产生一个值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程火箭车

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值