[File 클래스] : 파일을 관리하는 클래스 (java.io.File) 생성자 설명 File(File parent, String child) parent 디렉토리에 child 이름의 디렉토리나 파일을 나타내는 File 객체 생성 File(String parent, String child) parent 디렉토리에 child 이름의 디렉토리나 파일을 나타내는 File 객체 생성 File(String pathname) pathname이 나타내는 File 객체 생성 File(URI uri) file:URI를 추상 경로명으로 변환하여 File 객체 생성 File 생성자를 통해 File 객체를 만들었을 때, 인스턴스가 생성된 것 뿐이지 실제로 그 파일이 만들어지진 않는다. -> exists() / isFile()..
[BufferedInputStream / BufferedOutputStream] 스트림 내에 버퍼가 존재하기 때문에 byte형 배열 buffer를 만들 필요가 없다! 버퍼의 기본 크기는 512 byte이다. 데이터 소스와 직접 연결할 수 없기 때문에 노드 스트림(->System.in) 이 필요하다. 버퍼 내 데이터가 다 차면 데이터를 한번에 읽어와 출력하는데, 버퍼가 가득 차지 않았다면 flush 메소드를 이용해 출력해준다. ex) package StreamEx; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; public class BufferIOStream { publi..
[ByteArrayInputStream / ByteArrayOutputStream] ex) package StreamEx; import java.io.*; public class ByteArrayIOTest { public static void main(String[] args) throws IOException { FileInputStream fin = new FileInputStream("Test.txt"); ByteArrayOutputStream bout = new ByteArrayOutputStream(); byte[] outArr = null; byte[] buffer = new byte[1024]; int n; while((n=fin.read(buffer)) != -1) {// fin으로부터 ..
Stream의 특징 1. 단일 방향이다 2. FIFO [ read() 메소드 ] 인자가 없으면 1byte씩만 읽어 온다. -> 그렇기 때문에 2byte인 한글을 입력하면 두 번에 걸쳐 읽어온다. 인자에 byte형 배열을 써넣으면, 한 번에 최대 배열의 크기만큼 바이트를 읽어들인다. System.in.read() 메소드에서 입력 시 엔터키를 누르면 \r, \n 두 이스케이프 문자가 입력 된다!! 다양한 타입의 값을 읽어올 수 있도록 하기 위해 추상 메소드이다. ex) package StreamEx; import java.io.*; public class InputStreamEx { public static void main(String[] args) { byte input[] = new byte[5]; i..
[Map] key : 중복 X, value : 중복 O 값을 추가할 때 put() 메소드 사용 (Map 계열에서만 사용 가능) 값을 가져올 때 get() 메소드 사용 -> get의 매개변수에 key를 쓰면 key에 대응되는 value 값을 가져옴 ex) HashMap tel = new HashMap(); // 값 저장 tel.put("서울", "02"); tel.put("경기", "031"); // 저장된 값 가져옴 System.out.println(tel.get("서울")); System.out.println(tel.get("경기")); 실행 결과> 02 031 Map에 값을 추가하면 Entry 객체가 생성된다. Entry 클래스에는 각각 Key와 Value의 값을 얻을 수 있는 getKey(), ge..
Collections Framework : 값을 담을 수 있는 컨테이너(그릇) List: 값을 순서대로 저장, 중복 가능 Set : 값을 순서 상관 없이 저장, 중복 X [ArrayList] 1. java.util.ArrayList를 import ※ 자동으로 import : ctrl+shift+o 2. 값 추가 시 add() 메소드 사용 이 때, 값은 기본적으로 Object 타입으로 저장되기 때문에 모든 타입의 값을 저장 가능 특정 타입으로 값을 저장하려면 Generic 활용! ex) al.add("체리"); 3. 값을 꺼낼 땐 get() 메소드 사용 (Iterator도 사용 가능) ex) al.get(0); // 0번째 값 꺼냄 4. ArrayList의 크기를 알려면 size() 메소드 사용 ex) a..
Generic의 안에는 여러 개의 타입을 써넣을 수 있지만, 그 타입은 반드시 참조형이어야 한다! (기본형 불가) ex) class Person { T name; E age; Person(T name, E age) { this.name = name; this.age = age; } } public class GenericEx { public static void main(String[] args) { Person p1 = new Person("체봄", 22);// 오류 발생!! System.out.println("name: "+p1.name+", age: "+p1.age); } } 위와 같이 코드를 작성하면 오류가 발생한다. 그 이유는 Generic의 안에는 참조형만 쓸 수 있는데 기본형인 int 를 썼..
[enum 클래스] : 연관된 상수들을 열거한 클래스 사용법: enum 클래스명 { 변수명1, 변수명2, …; } 1. 생성자를 가질 수 있고 생성자의 접근 제어자는 private형만 가능하다. 2. 자동으로 생성자가 생성되지만, private형이므로 생성자를 통해 객체를 생성할 수 없다. 3. values 메소드를 호출하여 선언된 모든 상수를 반환할 수 있다. ex) enum Color { red, yellow, green, blue; Color() {// private형 생성자 System.out.println("생성자 호출"); } } enum 클래스를 이용해 간단하게 나타낸 코드를 풀어보면 다음과 같다. class Color { public static final Color red = new Co..