분명히 콜론은 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) For-each 루프 ( 튜토리얼 ) :
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 문의 사례 ( Tutorial ) :
switch (type) {
case WHITESPACE:
case RETURN:
break;
case NUMBER:
print("got number: " + value);
break;
default:
print("syntax error");
}
6) 메서드 참조 ( Tutorial )
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 및 삼항 연산자 모두 콜론을 사용할 가능성이 있습니다.
답변
추가하기 만하면 for-each 루프에서 사용할 때 “:”는 기본적으로 “in”으로 읽을 수 있습니다.
그래서
for (String name : names) {
// remainder omitted
}
“각 이름 IN 이름에 대해 …”로 읽어야합니다.
답변
“:”를 통합하지 않도록이 for-each 루프를 다른 방식으로 작성하는 방법은 무엇입니까?
그 가정하면 list
A는 Collection
예 …
public String toString() {
String cardString = "";
for (Iterator<PlayingCard> it = this.list.iterator(); it.hasNext(); /**/) {
PlayingCard c = it.next();
cardString = cardString + c + "\n";
}
}
:
이 맥락에서 연산자가 아닌 현명한 점을 추가해야합니다 . 연산자는 표현식에서 작업을 수행 하고 JLS에 따르면 명령문 ( ... )
의 for
내용은 표현식이 아닙니다.
답변
for 루프에서 객체 목록을 반복하는 데 사용됩니다.
for (Object o: list)
{
// o is an element of list here
}
for <item> in <list>
파이썬 으로 생각하십시오 .
답변
특정 경우에는
String cardString = "";
for (PlayingCard c : this.list) // <--
{
cardString = cardString + c + "\n";
}
this.list
컬렉션 (목록, 집합 또는 배열)이고 해당 코드 c
는 컬렉션의 각 요소에 할당 됩니다.
따라서 this.list
컬렉션 { “2S”, “3H”, “4S”} 인 cardString
경우 끝에는 다음 문자열이됩니다.
2S
3H
4S
답변
일반적으로 삼항 할당 연산자에서 볼 수 있습니다.
통사론
variable = `condition ? result 1 : result 2;`
예:
boolean isNegative = number > 0 ? false : true;
이것은 본질적으로 if else와 “동등”합니다.
if(number > 0){
isNegative = false;
}
else{
isNegative = true;
}
다른 포스터에서 제시 한 예 외에
또한 :를 사용하여 계속 및 중단과 함께 사용할 수있는 블록의 레이블을 나타낼 수 있습니다.
예를 들면 :
public void someFunction(){
//an infinite loop
goBackHere: { //label
for(int i = 0; i < 10 ;i++){
if(i == 9 ) continue goBackHere;
}
}
}