Meaning of *= in Java

2019-02-24 22:14发布

问题:

I see an unfamiliar notation in the Android source code: *=

For example: density *= invertedRatio;

I am not familiar with the star-equals notation. Can somebody explain it?

回答1:

density *= invertedRatio; is a shortened version of density = density * invertedRatio;

This notation comes from C.



回答2:

In Java, the *= is called a multiplication compound assignment operator.

It's a shortcut for

density = density * invertedRatio;

Same abbreviations are possible e.g. for:

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

and so on.



回答3:

It is a shorthand assignment operator. It takes the following form:

variable op= expression;

is short form of

variable = variable op expression;

So,

density *= invertedRatio;

is equivalent to

density = density * invertedRatio;

See the following link for more info:

How to Use Assignment Operators in Java



回答4:

Just like Da said, it's short for density = density * invertedRatio; - it's nothing Android specific, it's standard Java. You will find this (and similar operators) in many languages with a C-like syntax.



标签: java notation