在Java中,i = i++;相当于什么?
时间: 2024-03-28 19:38:10 浏览: 12
在 Java 中,i = i++ 实际上相当于 i = i,也就是说这个操作不会改变 i 的值。
具体原因是因为 i++ 是一个后缀运算符,它会先将 i 的值赋给表达式,然后再将 i 的值加 1。而在 i = i++ 中,先执行了 i = i,将 i 的值赋给了表达式,然后再执行 i++ 将 i 的值加 1。由于 i++ 的结果没有被使用,所以 i 的值没有发生变化。
相关问题
int i = 0; i=i++;
在表达式`i=i++;`中,使用了后缀递增运算符(`++`)。
在这种情况下,`i++`的行为是先将`i`的值赋给表达式的结果,然后将`i`的值加1。但是,由于赋值操作的右侧也是`i++`,这就导致了一个问题。
根据Java语言规范,对于这种情况,赋值操作符的右侧表达式在赋值操作之前会被完全计算出来。因此,在执行赋值操作之前,`i++`的结果已经被计算出来了,并且将其赋给了`i`。然后,赋值操作将这个已经计算出的结果再次赋给了`i`。这样,`i`的值没有变化。
因此,表达式`i=i++;`实际上并不会使`i`的值增加。它相当于将原来的`i`值重新赋给了自己。
求s=a+aa+aaa+aa...a的值,其中a是一个数字,如2+22+222+2222+22222(此时共有5个数相加),相加的数的个数由键盘控制。java代码
下面是一种 Java 代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入相加的数的个数:");
int n = in.nextInt();
System.out.print("请输入数字 a:");
int a = in.nextInt();
int s = 0, t = a;
for (int i = 1; i <= n; ++i) {
s += t;
t = t * 10 + a;
}
System.out.println("s = " + s);
}
}
解释:首先通过 Scanner 类获取用户输入的参数,其中 n 表示相加的数的个数,a 表示数字 a 的值。然后使用两个变量 s 和 t,分别表示累加和和每一项的值,初始时 t 的值为 a。从 1 到 n 遍历每一项,每次将 t 加入 s 中并更新 t 的值为 t*10+a(相当于在 t 的末尾添加一个 a)。最后输出累加和 s 的值即可。