본문 바로가기

Java/JAVA

(45)
URL Connection URL 커넥션 URL 객체의 getInputStream메서드를 호출해서 URL을 읽어 올 수 있다. 하지만 웹 리소스에 대한 추가정보 혹은 데이터를 써야 한다면 URLConnection 클래스를 사용하면 된다.1. URL객체 가져오기URLConnection connection = url.openConnection();HTTP URL일때 실제 반환받는 객체는 HttpURLConnection의 인스턴스이다.2. 필요하면 요청 프로퍼티 설정connection.setRequestProperty("Accept-Charset", "UTF-8, ISO-8859-1");키와 연관된 값이 여러개면 각각을 콤마로 구분3. 서버로 데이터를 보내기connection.setDoOutput(true);try(OutputStrea..
입출력 스트림 (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가 경고를 준다...