冒号(:)操作员做什么?
显然,冒号在Java中以多种方式使用。有人会介意解释它的作用吗?
例如:这里:
String cardString = "";
for (PlayingCard c : this.list) // <--
{
cardString += c + "\n";
}
您将如何以不同的方式编写此循环,以便不合并 ?for-each
:
显然,冒号在Java中以多种方式使用。有人会介意解释它的作用吗?
例如:这里:
String cardString = "";
for (PlayingCard c : this.list) // <--
{
cardString += c + "\n";
}
您将如何以不同的方式编写此循环,以便不合并 ?for-each
:
在 Java 代码中有几个地方使用冒号:
1) 跳出标签(教程):
label: for (int i = 0; i < x; i++) {
for (int j = 0; j < i; j++) {
if (something(i, j)) break label; // jumps out of the i loop
}
}
// i.e. jumps to here
2) 三元条件(教程):
int a = (b < 4)? 7: 8; // if b < 4, set a to 7, else set a to 8
3) 对于每个循环(教程):
String[] ss = {"hi", "there"}
for (String s: ss) {
print(s); // output "hi" , and "there" on the next iteration
}
4) 断言(指南):
int a = factorial(b);
assert a >= 0: "factorial may not be less than 0"; // throws an AssertionError with the message if the condition evaluates to false
5) 开关语句中的情况(教程):
switch (type) {
case WHITESPACE:
case RETURN:
break;
case NUMBER:
print("got number: " + value);
break;
default:
print("syntax error");
}
6) 方法参考(教程))
class Person {
public static int compareByAge(Person a, Person b) {
return a.birthday.compareTo(b.birthday);
}}
}
Arrays.sort(persons, Person::compareByAge);
没有“冒号”运算符,但冒号出现在两个位置:
1:在三元算子中,例如:
int x = bigInt ? 10000 : 50;
在本例中,三元运算符充当表达式的“if”。如果 bigInt 为真,则 x 将获得分配给它的 10000。如果没有,则为 50。这里的冒号表示“else”。
2:在 for-each 循环中:
double[] vals = new double[100];
//fill x with values
for (double x : vals) {
//do something with x
}
这会依次将 x 设置为“vals”中的每个值。因此,如果 vals 包含 [10, 20.3, 30, ...],则 x 在第一次迭代时为 10,在第二次迭代中为 20.3,依此类推。
注意:我说它不是运算符,因为它只是语法。它本身不能出现在任何给定的表达式中,并且只是 for-each 和三元运算符都使用冒号的机会。