Home Print
Post
Cancel

Print

print

강의에서 나오는 파이썬 코드를 자바 코드로 바꾸면서 정리하던 도중에

파이썬에서는 바로 출력할 수 있는 것을 자바에서는 불가능 한 것을 보고 짧게 정리해봤다.



코드

1
2
3
4
def print_twice(arr) :
    for n in arr :
        for x in arr :
            print(x, n)

위 코드를 자바 코드로 바꾸려고 하면 아래와 같이 에러가 뜬다.


image



1번은 안되고 2번은 되는 이유는 뭘까?

그 이유는 파이썬은 구현되어있는데 자바는 구현이 안되어 있기 때문이다.



🤔 그게 무슨말이지??



System.out.println 을 타고 들어가면 오버라이드 된게 뜬다.

image



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 같은 객체를 만들어서 보내면 된다.

This post is licensed under CC BY 4.0 by the author.