강의에서 나오는 파이썬 코드를 자바 코드로 바꾸면서 정리하던 도중에
파이썬에서는 바로 출력할 수 있는 것을 자바에서는 불가능 한 것을 보고 짧게 정리해봤다.
코드
1
2
3
4
def print_twice(arr) :
for n in arr :
for x in arr :
print(x, n)
위 코드를 자바 코드로 바꾸려고 하면 아래와 같이 에러가 뜬다.
1번은 안되고 2번은 되는 이유는 뭘까?
그 이유는 파이썬은 구현되어있는데 자바는 구현이 안되어 있기 때문이다.
🤔 그게 무슨말이지??
System.out.println
을 타고 들어가면 오버라이드 된게 뜬다.
1
2
3
4
5
6
7
8
9
10
public void println(int x) {
if (getClass() == PrintStream.class) {
writeln(String.valueOf(x));
} else {
synchronized (this) {
print(x);
newLine();
}
}
}
해당 코드들을 보면 println은 하나만 출력된다.
그래서 String
이든 int
든 여러 개를 출력 시키려고 하면 에러가 뜨기 때문에
둘다 출력 시키려고 하면 2번과 같이 문자열 포매팅을 써서 출력 시키는 것이다.
1
2
3
4
5
6
7
8
9
10
String[] arr = {"hae", "dal", "coco", "lulu", "hihi", "lala", "inging"};
public void printAll() {
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr.length; j++) {
System.out.printf("%d, %d", i, j);
//System.out.println(String.format("%d, %d", i, j));
}
}
}
🐣 return값도 하나 씩만 출력시키므로 2개 이상 return 하고 싶으면 Map, Dto, Vo 같은 객체를 만들어서 보내면 된다.