运算符区别:+=、==、+、++、=

Operator difference: +=, ==, +, ++, =

我正在学习如何使用 switch,但我使用了不同的运算符,程序不会 运行。只有 = 运算符工作。为什么其他运算符(+===+++)在这种情况下不起作用?

我是Java的初学者,请帮我解决这个幼稚的问题。

double shippingCost;

switch (shipping) {
  case "Regular":
    shippingCost + 0;
    break;
  case "Express":    
    shippingCost + 1.75;
    break;
  default:
    shippingCost + .50; 
}

return shippingCost;

您现在只是在制作表达式,您要做的是将表达式赋值给某物。

为了更好地理解代码

shippingCost + 1.75 

Returns 一些值,你要做的就是将它分配给某物。

如果您希望值等于值加上某物,正确的语法是

variable += value

所以在你的例子中你可能想要

shippingCost += 1.75

如果你想使用

==

您可以将 returns 视为一个布尔值,即真值或假值。您可以像使用任何值一样将其分配给变量。或者您可以简单地使用值。

None 这些添加是完整的陈述。我认为您的期望可能是 shippingCost+1 等会导致 shippingCost 增加 1,但事实并非如此——如果它增加了,那么仅仅做一些基本的数学运算就会让事情变得非常尴尬:

print(productCost + packagingCost + shippingCost);

如果执行求和将某些东西存储回变量中,这会很快变得混乱;每次打印时,所有这些变量都会增加

我们必须明确说明我们想要发生什么。如果您希望 shippingCost 增加一,我们必须计算并将结果存储回去:

shippingCost = shippingCost + 1;

或使用 ++,定义为 "increment the variable by one",或使用 +=,定义为 "increase the variable on the left by the value on the right"

以下是完整语句的其他示例:

shippingCost = 0;

shippingCost++;

shippingCost += 2;

if(shippingCost == 3)
  doSomething();

这不是声明:

shippingCost + 1;

除非您包含其他使用值结果的内容,如下所示:

shippingCost = shippingCost + 1;

double newShippingCost = shippingCost + 1;

print(shippingCost + 1);

在Java中计算结果而不对其进行任何操作不是合法的完整语句。我给出的例子是完整的陈述,对结果做了一些事情;大多数情况下,他们将结果(返回)存储到 shippingCost 变量中。从 0 开始,购物成本增加,然后再次增加,最后与值 3 进行比较(这会产生一个 true)

在Java + 运算结果需要赋值给一个目标变量,例如

a = 1+2;

+= 是一种简写,用于将值添加到一个变量并将结果分配给它自己。

a += 5; // is equivalent to a=a+5;

==只是用来比较的,比如

if(a==b) { //do something}

++ 用于递增一个数字,通常是整数

int a=1;
a++; //is equivalent to a=a+1;    a=2 after running this statment.

首先你要了解这些运算符的用法。 += 运算符通常在您想要同时求和和赋值任务时使用。例如,在给定的代码中,'+=' 运算符用于将值添加到变量并将其一次性存储在该变量中。

'==' 运算符用于比较目的,在本例中 switch 会自动在 background.Like 中进行比较,在我们的例子中,运输变量与不同的 case 语句进行比较。 '+' 运算符只是对一些值求和。在您的情况下,您只是将值添加到 shippingCost 变量,而不是将其存储在任何变量中。 '++' 运算符是将变量的值递增 1.

适用于我的示例代码如下: 需要更正的两件事是在您的代码中使用它之前用某个值初始化 shippingCost 变量,并分别使用 += 运算符或 + 和 = 运算符添加一些值并将其分配给变量。 希望对您有所帮助。

String shipping = "Regular"
double shippingCost=0;
switch (shipping) {
    case "Regular":
            shippingCost += 0;
            break;
    case "Express":    
            shippingCost += 1.75;
            break;
    default:
            shippingCost += .50; 
}
return shippingCost;

Only = operator worked. Why do the other operators (+=, ==, +, ++) not work in this case?

其他运算符会导致编译错误,但原因不同。


运算符 ==+ 进行比较或加法,产生一个新值,没有任何副作用。如果您将 a + b; 写成语句,那么该语句将不会影响您的程序执行的操作;理论上它可以将两个数字相加,但是 结果不会用于任何事情,因此该操作实际上什么都不做。

在这些情况下,编译器会报告错误,因为您不会有意编写什么都不做的代码,因此代码不能按照您的意图执行,而编译器会告诉您。


运算符 +=++ 确实有副作用,但它们会因不同的原因导致编译错误。当你声明一个像 double shippingCost; 这样没有初始值的局部变量时,你不能在表达式中使用这个变量,直到它被其他表达式 definitely assigned 稍后。

这意味着如果你写了类似 System.out.println(shippingCost); 的东西,你会得到一个编译错误,因为你试图打印一个变量的值,但是那个变量还没有赋值给它,所以没有可以打印的值。同样,如果您写 shippingCost += 1.75shippingCost++,那么您正在尝试向旧值添加一些内容,但是 没有要添加到 的旧值。因此存在编译错误。