Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Mintaka's log

[JAVA]""랑 null (BufferedReader로 EOF 처리) 본문

JAVA

[JAVA]""랑 null (BufferedReader로 EOF 처리)

_해랑 2022. 12. 5. 20:04

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a;

while( (a = br.readLine()) != ""){
	StringTokenizer st = new StringTokenizer(a);
    	sb.append(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())).append("\n");
}

위와 같이 ""랑 비교했을 때는 NullPointerException.

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a;

while( (a = br.readLine()) != null){
	StringTokenizer st = new StringTokenizer(a);
    	sb.append(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())).append("\n");
}

했을때는 에러 없음.

 

 

null의 경우에는 스택 메모리에 존재만 하고 값은 없음(힙 메모리에 없음)

""의 경우에는 스택 메모리에도 힙 메모리에도 존재는 하는데, 힙 메모리에 아무것도 없다는 것을 저장함.

 


null은 금고 열쇠는 만들었는데 아직 금고는 안만든거고,

""는 금고 열쇠도 금고도 만들었는데 금고 안에 아무것도 없는것.... 이라고 생각하고 있다.


그러니까 위쪽의 코드 블럭은 금고 안에 아무것도 없냐? 를 물어보는 거고,

아래쪽의 코드 블럭은 금고를 안만들었냐? 를 물어보는 것.

 

 

따라서,

 

위쪽의 ""를 사용한 코드의 경우, 

입력할 걸 다 입력하고 입력을 끝내겠다고 엔터를 연속으로 쳐서 콘솔의 입력을 끝내게 되면

원하는 걸 얻을 수 있다.(eclipse에서)

대신 ctrl+z를 써서 바로 종료시켜버리면 NullPointerException이 나타남.

 

아래쪽의 NULL을 사용한 코드의 경우,

입력할 걸 다 입력하고 입력을 끝내겠다고 엔터를 연속으로 쳐서 콘솔의 입력을 끝내게 되면

nextToken써서 연산하는 코드의 줄에서 NoSuchElementException이 나게 된다.

ctrl+z를 써서 종료해주게 되면 원하는 출력을 얻을 수 있다.

'JAVA' 카테고리의 다른 글

[Java]I/O 공부  (0) 2022.12.05
[JAVA] 접근 제어자- public / protected / default / private  (0) 2022.05.26
[JAVA] static, final  (0) 2022.05.26
[JAVA] DecimalFormat - 세자리마다 , 넣기  (0) 2022.05.24
배열  (0) 2022.05.11