Java中*的含义是什么?

4

我在Android源代码中看到了一个陌生的符号:*=

例如:density *= invertedRatio;

我不熟悉这个星号等于符号。有人能解释一下吗?


2
其他人已经回答了你的问题,但我觉得你也可以写“variable ++”或“variable --”,这意味着变量计数增加1或减少1。 - Jave
4个回答

21

在Java中,*= 被称为乘法复合赋值运算符。

它是以下操作的快捷方式:

density = density * invertedRatio;

同一缩写可能适用于以下情况,例如:

String x = "hello "; x += "world" // results in "hello world"
int y = 100; y -= 42; // results in y == 58

等等,诸如此类。


16

density *= invertedRatio;density = density * invertedRatio;的简写形式。

这种表示法来自于C语言。


1
我可能会称其为语法糖而不是首字母缩写。 :p - user500074
来自C语言?这就是为什么我认为它看起来非常类似于指针的原因!但实际上并不是... - IgorGanapolsky
1
请注意可能会插入一个神奇的转换。例如,如果“density”是“short”,它仍然可以编译并且甚至可能工作。 - Tom Hawtin - tackline

8

这是一种简写的赋值运算符,它采用以下形式:

variable op= expression;

是缩写的意思

variable = variable op expression;

因此,
density *= invertedRatio;

等同于

density = density * invertedRatio;

请查看以下链接以获取更多信息:

Java中如何使用赋值运算符


2
这并不是严格正确的,参见https://dev59.com/BGoy5IYBdhLWcg3wMLSj。 - xxpor
@xxpor 感谢您的见解!这是一条新知识。对评论点个赞。 - Jomoos

3

就像Da所说的那样,它是density = density * invertedRatio;的缩写——这不是Android特有的,而是标准的Java语言。在许多类似于C语法的编程语言中,你会发现这种(以及类似的)运算符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接