분명히 콜론은 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) 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);
assert
는 "프로그램을 종료"하지 않습니다. 그것은을 던졌습니다 AssertionError
. 유일한 나머지 비 데몬 스레드의 스택에 던져지고 잡히지 않은 경우에만 프로그램이 종료됩니다.
"콜론"연산자는 없지만 콜론은 두 위치에 나타납니다.
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
내용은 표현식이 아닙니다.
list
의 인스턴스 라고 가정 할 필요가 없습니다 Collection
. Iterable
향상된 for 루프에서 사용할 수 있는지 여부 의 인스턴스 여야합니다. 즉, iterator()
응답에서 호출 하는 메서드를 갖게됩니다 .
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;
}
}
}
새로운 약식 for / loop에서 사용됩니다.
final List<String> list = new ArrayList<String>();
for (final String s : list)
{
System.out.println(s);
}
삼항 연산자
list.isEmpty() ? true : false;
콜론은 for-each 루프에서 사용하고 있습니다.이 예제를 시도해보세요.
import java.util.*;
class ForEachLoop
{
public static void main(String args[])
{`enter code here`
Integer[] iray={1,2,3,4,5};
String[] sray={"ENRIQUE IGLESIAS"};
printME(iray);
printME(sray);
}
public static void printME(Integer[] i)
{
for(Integer x:i)
{
System.out.println(x);
}
}
public static void printME(String[] i)
{
for(String x:i)
{
System.out.println(x);
}
}
}