你好!今天我们来看看一个非常重要的话题,即Java中的数字运算。数字在编程中无处不在。如果您深入研究学校课程,您会记得计算机上的所有信息都是以数字格式(零和一的组合)呈现的,也称为二进制代码。 编程中有很多关于数字的操作,因此我们将通过示例来了解其中最重要的操作:)
算术运算
让我们从最简单的事情开始——算术运算。这些是众所周知的加法(+)、减法(-)、乘法(*)和除法(/)。public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
控制台输出:
1032
966
32967
30
这些你都已经用过了。您可以向它们添加一个操作%
- 除法的余数。
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
控制台输出:
1
在这个例子中,我们将 33 除以 2。结果,我们得到 16,并且还剩下一个不能被 2 - 1 整除的额外“尾巴”。这个“尾巴”将是“除法余数”运算的结果。Java(以及数学)实现比较运算符。您可能在学校也认识他们:
- 等于 (
==
) - 更多的 (
>
) - 较少的 (
<
) - 大于或等于 (
>=
) - 小于或等于 (
<=
) - 不等于 (
!=
)
==
,并且没有一个符号=
。Java 中的单位符号=
是一个赋值运算符,其中一个变量被赋予一个数字、字符串或另一个变量的值。
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// expect false to be printed to the console
}
}
控制台输出:
999
哎呀!这显然不是我们所期望的结果。这是一种完全不同类型的数据:我们期望看到boolean
,但得到的是数字。这是因为括号中我们进行的是赋值操作,而不是比较操作。 x=y
值y
(999) 被分配给变量x
,然后我们将其打印x
到控制台。正确选项:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
控制台输出:
false
现在我们已经正确比较了两个数字!:) 赋值操作 ( =
) 的另一个特点是它可以“链式”完成:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
控制台输出:
256
请记住:分配是从右到左进行的。该表达式 ( x = y = z
) 将分步骤执行:
- y = z,即 y = 256
- x = y,即 x = 256
一元运算
它们被称为“unary”,源自单词“uno”——“一个”。他们之所以得到这个名字,是因为与以前的不同,他们是在一个号码上进行的,而不是在多个号码上进行的。这些包括:-
一元减。它反转数字的符号。
public class Main { public static void main(String[] args) { int x = 999; // change the sign for the first time x = -x; System.out.println(x); // change the sign a second time x= -x; System.out.println(x); } }
控制台输出:
-999 999
我们使用了一元减号两次。结果我们的数字先是负数,然后又变成正数了!
-
递增 (
++
) 和递减 (--
)一次操作
++
将数字加一,一次操作--
将数字减少相同的单位。public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
控制台输出:
1000 999
x++
- 后缀表示法 ++x
- 前缀表示法 如果将加号和减号放在数字之前或之后,根本区别是什么?让我们看一个例子:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
控制台输出:
999
有什么不对!我们想要加x
1 并为变量分配一个新值y
。即y应该等于1000。但是我们得到了不同的结果——999。原来并x
没有增加,增量操作不起作用?它是如何运作的。要验证这一点,请尝试在最后将 x 打印到控制台:)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
控制台输出:
999
1000
事实上,这就是后缀操作被这样调用的原因:它在主表达式之后执行。也就是说,在我们的例子中: int y = x++;
首先它被执行 y = x
(变量 y 将被赋予其原始值x
),然后才被执行 x++
。如果我们对此行为不满意怎么办?您需要使用前缀表示法:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
在这种情况下,它会首先起作用 ++x
,并且只有在那之后才起作用。 y = x;
这种差异值得立即记住,以免在实际程序中犯错误,其中所有行为都可能因此而颠倒:)
联合经营
另外,Java中还有所谓的组合操作。他们使用两种操作的组合:- 任务
- 算术运算
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
控制台输出:
1032
x += y
方法x = x + y
。只是为了简洁起见,使用了连续的两个字符。这也适用于-=
、*=
、/=
和的组合%=
。
逻辑运算
除了对数字的操作之外,Java 还对布尔变量 -true
和进行操作false
。这些操作是使用逻辑运算符执行的
-
!
—“非”运算符。反转布尔变量的值public class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
控制台输出:
false
-
&&
— 运算符“AND”。true
仅当两个操作数均为 时才返回值true
。public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
控制台输出:
false true
第一个运算的结果是
false
,因为其中一个条件为假,即 100 > 200。该运算符要求所有条件都为真(例如第二行)&&
才能返回。true
-
||
—“或”运算符。true
当至少一个操作数为 true 时返回。我们之前的示例的工作方式有所不同:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
控制台输出:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION