작성
·
431
답변 1
1
※ 본 질문은 아래 링크의 질문과 유사하여 동일한 답변에서 일부 내용을 수정 / 추가하여 제공합니다.
https://www.inflearn.com/questions/785133
안녕하세요?
탭(tab)은 PC마다, 프로그램마다, 터미널마다 설정된 칸의 수가 다를 수 있고 한글 / 영문에 따라서도 각 글자들이 차지하는 크기에 따라 조금씩 다르게 출력될 수 있습니다.
학습하시는 환경이 Mac 이신가요?
지금 답변을 작성하고 있는 윈도우 PC 환경 기준으로 설명을 드리면, 키보드에서 탭을 입력했을 때 현재 커서 위치로부터 4칸을 띄우는 것은 아니고 앞의 문자들을 포함하여 4칸의 공간 내에서 띄어쓰기 처리가 됩니다.
탭 동작에 대한 이해를 돕기 위해 아래와 같이 코드를 작성해봤어요.
System.out.println("\t9");
System.out.println("1\t9");
System.out.println("12\t9");
System.out.println("123\t9");
System.out.println("1234\t9");
System.out.println("12345\t9");
System.out.println("123456\t9");
System.out.println("1234567\t9");
System.out.println("12345678\t9");
이를 실행해보면 결과는 이렇습니다.
(※ PC 에서 입력하는 탭은 8칸인데 IntelliJ 에서는 기본 4칸으로 처리되고 있어서 텍스트가 아닌 이미지로 가져왔습니다)
(1번째 문장) : ....9
4칸을 띄운 뒤에 9를 적습니다.
(2번째 문장) : 1...9
4칸 중에서 1이 차지하고 있는 1칸을 제외한 나머지 3칸을 띄운 뒤에 9를 적습니다.
(3번째 문장) : 12..9
4칸 중에서 12가 차지하고 있는 2칸을 제외한 나머지 2칸을 띄운 뒤에 9를 적습니다.
(4번째 문장) : 123.9
4칸 중에서 123이 차지하고 있는 3칸을 제외한 나머지 1칸을 띄운 뒤에 9를 적습니다.
(5번째 문장) : 1234....9
앞의 4칸은 이미 1234 가 차지하고 있으므로, 그 이후부터 시작되는 새로운 4칸을 띄운 뒤에 9를 적습니다.
(6번째 문장) : 12345...9
앞의 4칸은 이미 1234 가 차지하고 있으므로, 그 이후부터 시작되는 새로운 4칸 중에서 1이 차지하고 있는 1칸을 제외한 나머지 3칸을 띄운 뒤에 9를 적습니다.
...
이후 과정도 동일한 형태로 진행됩니다.
만약 Mac 에서 학습하고 계시다면 한글을 표현하는 데 일부 차이가 있을 수 있습니다.
제가 확인을 위해 아래와 같이 숫자만, 또는 한글과 숫자가 섞인 코드를 적었습니다.
실행 결과는 이렇습니다.
탭이 4칸 간격으로 띄우므로 3번째 줄에서는 8칸인 "12345678" 을 입력한 뒤에 4칸을 띄우고 1234 가 잘 적히는 것을 확인할 수 있는데요. 한글의 경우 "해물파전" 만으로는 8칸인 "12345678" 만큼의 공간을 차지하지 않아서 4번째 줄에서는 "해물파전" 뒤에 커서가 한 칸 들어갈 공간이 생기게 됩니다. 이때 탭을 넣게 되면 커서 한 칸 만큼의 공간만 띄워지고 이어서 1234 가 출력되는 거죠. 만약 "해물파전" 대신 영문으로 된 "abcdefgh" 로 적으면 "12345678"과 동일한 간격으로 출력되는 것을 확인할 수 있습니다.
즉, 한글 처리 과정에서 실행 결과가 조금 달라질 수 있는 것이며 이는 크게 신경쓰지 않으셔도 괜찮은 부분입니다. 참고로 윈도우의 명령 창(cmd) 에서 실행시키는 경우 같은 코드임에도 불구하고 또다른 출력 결과가 나온답니다. 이번에는 한글 하나는 숫자 두개가 차지하는 공간과 완전 일치하며 탭 뒤의 1234 는 동일한 위치에 나오는 걸 알 수 있지요 😊
감사합니다.