목록Java (16)
코딩 노트
문자열 파일 입출력 - 문자열은 byte 또는 char와 상호변환이 가능하다. String s1 = "Hello 안녕하세요"; byte[] b1 = s1.getBytes(); System.out.println(Arrays.toString(b1)); //배열을 출력할 수 있다. ▶ Arrays.toString()을 쓰면 배열을 편하게 출력할 수 있다. ▶ UTF-8에서 한글은 한글자가 3byte이다. ▶ MS949를 쓰면 깨질 수 있으니 지정을 해줘야 한다. byte[] b2 = s1.getBytes("MS949"); String s2 = new String(b2, "MS949"); 문자열을 위한 클래스 ~Writer : (분해(UTF-8), 버퍼, 스트립이 다 들어있음) ~Reader : (복원(UTF-..
도우미 클래스 - GameUtil package api.file.object; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Scanner; //도우미 클래스 public class GameUtil { //케릭터 불러오기 public static Player load()..
멀티 바이트 입출력 - 원시형 데이터 및 크기가 정해진 예외적인 데이터들이 멀티 바이트이다. 멀티바이트 출력 준비물: 파일 객체, 출력과 입력 스트림, 버퍼, 분해를 도와주는 보조 스트림 //준비물 File target = new File("sample/multi.kh"); FileOutputStream stream = new FileOutputStream(target); //메인스트림 BufferedOutputStream buffer = new BufferedOutputStream(stream); //보조스트림1 DataOutputStream data = new DataOutputStream(buffer); // 보조스트림2 / 분해를 도와줌 구조 : [프로그램] → data(분해) → buffer(임..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bOAOy7/btsnxWIZI9z/Fhlkbhz3tsbmoByKlluLLK/img.png)
파일이란? - 글자를 저장하는 저장소 - 파일이 크다는 것은 보관하는 글자가 많다는 소리이다. - 글자 하나 당 1byte이다. 폴더란? - 파일을 구분하기 위한 장치 - 디렉터리(directory)라고 부른다. - 크기가 없다. (내부 파일의 합계가 크기일뿐 폴더 자체의 크기는 없다.) 파일(File) 제어 - 자바에서 파일과 폴더는 어떻게 처리할까? 1. java.io 패키지 - 블로킹 방식 - 한 번에 하나씩 순차적으로 처리한다. (앞에 것이 끝나지 않으면 뒤에 것이 실행되지 않는 것) - 우선순위를 정해서 우선순위가 끝나야 다음 것을 처리할 수 있다. (한 번에 하나씩) - 여러 개를 동시에 처리할 수 없다. 2. java.nio 패키지 - 논블로킹 방식 - 어떤 데이터가 먼저 끝나도 상관이 없을..
Stack - LIFO(List In First Out) - 이용방법이 정해져 있는 저장소 - 주로 추가, 확인, 제거 총 3가지 방법만 사용한다. - 이력을 관리하는데 최적화가 되어있다. Stack의 생성방법 Stack stack = new Stack(); Stack의 데이터 추가 - add라고 해도 결과는 같으나 꼭 push를 써야한다. stack.push("구글"); stack.push("네이버"); stack.push("카카오"); Stack의 데이터 제거 stack.pop(); Stack의 데이터 확인 System.out.println(stack.peek()); Queue - FIFO (First In First Out) - 대기열을 구현할 때 사용하는 저장소 - Stack과 반대이다. - 입출..
Map - 개별 데이터를 빠르게 접근하여 처리할 수 있도록 고안된 세트 저장소이다. - 세트 저장소(key-value 저장소) - key는 이름, value는 값의 역할을 수행한다. - key는 유일해야하나, value는 중복을 허용한다. - List, Set은 한 개의 데이터를 저장하는 반면에 Map은 두 개를 세트로 저장한다. - 대부분의 명령이 List, Set과 같지만 일부 명령은 저장소 특성상 차이가 있다. - Set에 value가 붙어있는 형태로 봐도 무방하다. Map의 생성방법 Map map = new TreeMap(); Map map = new HashMap(); 데이터 추가 - add가 아니라 put - 데이터 개수가 다르기 때문이다. map.put("유재석", 50); map.put("..
비선형구조 - Set (인터페이스) - Tree, Hash 등 여러 알고리즘으로 최적의 탐색이 가능하도록 만든 집합 저장소이다. - 개별적인 항목에 대한 접근보다 전체적인 관점에서 데이터를 탐색해야 할 때 주로 사용한다. TreeSet TreeMap / HashSet HastMap - 시작과 끝이 구분이 어렵다. - 둘 다 빠르게 전체 데이터를 찾고 검색하는 것이 목적이다. - 중복이 발생할 수 없는 구조이다. - 완성되어 있는 구조 그대로만 쓸 수 있다. - 데이터를 쓰는 방법이 제한적이며, .get을 쓸 수 없다. (인덱스가 없기 때문에) - 순서가 없기 때문에 .suffle()도 쓸 수 없다. Set a = new TreeSet(); Set b = new HashSet(); TreeSet은 정렬이 ..
Class - 클래스는 객체를 만들기 위한 설계도 같은 것이다. - 필드가 만들어져야 클래스의 나머지 형태를 구성할 수 있다. - 클래스는 필드에 따른 setter 메소드와 getter메소드를 개수를 맞춰 만들어야 한다. //시험 성적 정보를 자바에게 설명하기 위해 만드는 도구(클래스) public class Grade { //시험 성적 정보의 구성요소 데이터를 정의(멤버 필드)(member field) - 데이터 String name; int korean; } '변수 2개를 묶어서 grade라고 부르겠다'를 자바에게 알려주는 것이다. 위 코드는 객체가 생긴 것이 아닌 클래스가 생긴 것이다. 객체 - 멤버 필드와 멤버 메소드만 들어간다. (멤버는 회원, 구성원이라는 의미) Pokemon a = new P..