✏️ EOF란? EOF은 End Of File(파일의 끝)의 약자로, 입력을 받는 리소스로부터 더이상 읽어들일 수 있는 데이터가 없는 상태를 의미한다. 입력 데이터가 존재하면 반복적으로 읽고, 파일의 끝(EOF)을 검사하여 더이상 받을 수 있는 데이터가 없을 때 반복을 종료할 수 있다. 자바의 대표적인 입력 클래스인 Scanner와 BufferedReader에서 EOF를 다음과 같이 처리할 수 있다. ✏️ Scanner hasNextLine() 메소드와 hasNext() 메소드를 이용한다. Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { sc.nextLine(); } while(sc.hasNext()) { sc.next(); } ✏️ Buf..
전체 글
고민하고 성장하는 과정을 기록합니다.자바의 객체지향 프로그래밍을 공부하며, 추상클래스와 인터페이스라는 개념을 공부했다. 이 추상클래스와 인터페이스는 추상 메소드를 상속하여 클래스에서 구현한다는 점에서 굉장히 유사했는데, 크게 '추상클래스는 하나만 상속받을 수 있고 인터페이스는 여러개를 상속 받을 수 있다' 라는 기능적 차이점 외에는 왜 추상클래스와 인터페이스를 분리하는지, 언제 어느 것을 사용하는지 명확하게 구분이 어려웠다. 이 유사하고 모호해보이는 두 개념 사이에는 어떤 차이점이 있을까? 명확하게 짚고 넘어가보자. ✏️ 추상클래스란? 클래스 내에 추상 메소드가 하나 이상 포함된 클래스 하위 클래스들의 공통점을 모아 추상화한 클래스 abstract 예약어로 선언 상속받는 자식 클래스가 메소드를 구현하도록 한다. 자바에서는 다중상속이 불가능..
toString()과 String.valueOf() 두가지 메소드는 기본형 혹은 참조형 자료를 문자열로 변환하여 반환한다. 같은 기능을 하는듯 보이는 두 메소드는 어떤 차이가 있을까? 바로 Object가 null일 때, toString()과 String.valueOf()는 각각 Exception을 발생시키거나 문자열 "null"을 반환한다. public class NullTest { public static void main(String[] args) { String s1 = null; String s2 = null; s1 = String.valueOf(s1); System.out.println(s1); // 문자열 "null" 출력 try {System.out.println(s2.toString());..
자바에서 데이터의 형을 명시적으로 변환하는 방법은 크게 두 가지가 있다. 자바의 형변환 연산자 (type)을 사용하는 방법과, 내장된 객체 클래스의 메소드를 사용하는 방법. 문득 문자열의 정수형 변환을 위해 형변환 연산자를 사용하다가 (int)"String"은 불가능하며 반드시 Integer.parseInt() 혹은 Integer.valueOf() 메소드를 사용해야 한다는 점을 알았다. 그렇다면 형변환 연산자를 사용하는 것과 메소드를 사용하여 변환하는 것에는 어떤 차이가 있을까? (type) 형변환 연산자와 Integer.parseInt() 메소드의 차이 형변환 연산자는 서로 상속관계에 있는 객체 사이에서 형변환이 가능하다. 기본 자료형끼리의 형변환은 (boolean을 제외하고) 이미 내부적으로 선언되어..