본문 바로가기

Java/JAVA

(44)
입출력 스트림 (I/O Stream) 스트림 얻기 InputStream in = Files.newInputStream(path);OutputStream out = Files.newOutputStream(path);path는 Path클래스의 인스턴스다. // File System에서 경로를 나타낸다.URL이 있을 때는 입력 스트림에서 해당 URL의 콘텐츠를 읽을 수 있다.URL url = new URL("http://jeong-pro.com/index.html");InputStream in = url.openStream();바이트 배열 읽기byte[] bytes = ...;InputStream in = new ByteArrayInputStream(bytes);바이트 배열 출력ByteArrayOutputStream out = new ByteAr..
기타 컬렉션 프로퍼티 Properties 클래스는 텍스트 형식으로 쉽게 저장하고 불러올 수 있는 맵을 구현한다.Properties settings = new Properties();settings.put("width", "200");settings.put("title", "HelloWorld");try( OutStream out = Files.newOutputStream(path)){settings.store(out, "Program Properties");}실행하면 다음 파일이 생성됨#Program Properties#Mon Now 03 20:52:11 CET 2017width=200title=HelloWorld#은 설명문 앞에 붙음프로퍼티파일 불러오는 방법try(InputStream in = Files.newIn..
자바 컬렉션 (Collection) 컬렉션 (Collection) 자료 구조의 구현체, 독립적인 코드를 쉽게 작성할 수 있게 컬렉션 프레임워크는 공통 인터페이스를 제공한다.컬렉션 메서드 boolean add(E e) : e를 추가하고 변경되면 true 리턴boolean remove(Object o) : o 객체를 제거한다. 변경되면 true 리턴int size() : 컬렉션에 들어 있는 요소의 개수를 리턴boolean isEmpty() : 컬렉션이 비어있으면 true 리턴boolean contains(Object o) : o 객체를 포함하면 true 리턴Iterator iterator() : 컬렉션의 요소를 방문하는 반복자를 리턴Stream stream() : 컬렉션 요소를 방문하는 스트림 리턴컬렉션 기본List의 큰 특징은 n번째 요소에..
제네릭 클래스 (generic class) 자바 제네릭 클래스 (Java Generic Class) 제네릭 클래스느 타입 파라미터를 한 개 이상 받는 클래스다.public class Entry{private K key;private V value;public Entry(K key, V value){this.key = key;this.value = value;}public K getKey(){ return key;}public V getValue(){ return value;}}위에서 K, V 는 타입파라미터다.* 파라미터 타입으로 기본타입이 올 수 없다.제네릭 클래스 생성 Entry entry = new Entry("Fred",42); // 안의 생략 가능제네릭 메서드 public class Arrays{public static void swap..
로깅 로깅 자바개발자 대부분은 문제가 있는 코드에 System.out.println호출을 집어넣어 프로그램 동작을 살펴보는 과정에 익숙하다.이해하고나면 출력문을 지우고 문제가 다시 생기면 다시 넣는다. 이를 해결하기 위해 로깅API가 설계되었다.간단한 로깅 정보 메시지를 로그로 기록하려면 info 메서드를 사용해야한다.Logger.getGlobal().info("Opening file" + filename);Logger.getGlobal().info( () -> "Opening file" + filename ); // 람다식표현 이용로거 전문적인 애플리케이션에서는 보통 전역 로거 하나로 모든 레코드를 로그로 기록하지 않는다.대신 로거를 직접 정의해서 사용한다.Logger logger = Logger.getLo..
예외 (Exception) 예외 (Exception) 메서드가 해야 할 일을 수행할 수 없는 상황에 부딪혔을 때 예외 처리를 해줘야 한다.자바는 오류 코드를 전파할 때 메서드 호출 연쇄를 사용하지 않는다.* 적절한 예외 클래스를 고른다. (그냥 Exception 클래스를 잡는건 반드시 피할 것)모든 예외는 Throwable 클래스의 서브클래스다. **비검사 예외는 RuntimeException의 서브클래스다.다른 예외는 모두 검사 예외다. * 개발자는 반드시 검사예외를 잡아내야 한다.비검사 예외는 개발자가 만든 논리 오류를 나타낸다.NullPointerException은 검사 대상이 아니다. 거의 모든 메서드가 NullPointerException을 던질 수 있기 때문이다.따라서 NullPointerException을 잡기보다 n..
자바(JAVA) 열거와 리플렉션 열거 enum public enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };* 열거 타입 값을 비교할 때는 간단히 ==를 사용하라 equals를 호출해도 결국 ==로 검사함.* Size notMySize = Size.valueOf("SMALL");-> notMySize를 Size.SMALL로 설정한다.* Size[] allValues = Size.values();-> values() 함수를 쓰면 모든 인스턴스를 배열로 리턴해줌.Class 클래스 어떤 객체의 참조를 저장하는 Object타입 변수가 있는 상태에서 해당 객체의 더 많은 정보를 얻고 싶다면?Object obj = ...;Class cl = obj.getClass(); // 를 빠뜨리면 IDE가 경고를 준다...
상속 (2) Object 슈퍼클래스 자바에서 모든 클래스는 Object클래스를 직/간접적으로 확장한다. 클래스에 명시적인 슈퍼클래스가 없으면 암시적으로 Object클래스를 확장한다.Object클래스는 모든 자바 객체에 적용할 수 있는 메서드를 정의한다.이 중 몇가지를 살펴본다.toString 객체의 문자열 표현을 돌려준다.x.toString() 대신에 "" + x 로 작성할 수도 있다. 이 표현식은 x가 null이거나 기본 타입 값일 때도 제대로 동작한다.배열 출력Arrays.toString(배열참조변수이름)equals 객체가 같은지 검사하는 메서드두 객체가 같은 내용을 담고 있을 때 같다고 보는 상태기반 동등성 검사가 필요한 경우에만 equals 메서드를 오버라이드 한다.인스턴스 변수가 배열이면 정적메서드 Arra..