본문 바로가기

Knowledge Wiki/Java

(51)
JAVA 래퍼(Wrapper) 클래스와 박싱, 언박싱 1. 래퍼(Wrapper) 클래스 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스. 객체지향 언어인 자바에서 객체가 아닌 기본형을 사용하는 이유는 성능 때문. 2. Number 클래스 Long => 10^19 Double => 10^308 BigInteger => Long보다 더 큰 정수 BigDecimal => Double보다 더 큰 실수 3. 오토박싱 & 언박싱 오토박싱: 기본형 -> 래퍼클래스 언박싱: 래퍼클래스 -> 기본형 JDK 1.5 이전에는 기본형과 참조형간의 연산이 불가능했었다
JAVA Math 클래스 round(), rint() 1. Math클래스에서 round()는 무조건 올림(HALF_UP)이지만, rint()는 홀수인 경우 내림을 하고 짝수인 경우만 올림(round even)을 한다. round()는 값이 쌓일수록 오차가 커지지만 rint()는 오차가 커지지 않아서 오차를 줄이는 게 중요할 때 사용된다.
JAVA 문자열 클래스의 동기화 1. 멀티 쓰레드 프로그램이 아닌 경우 동기화는 불필요한 성능 저하가 있다. 이럴 땐 StringBuffer클래스 대신 StringBuilder클래스를 사용하면 성능이 향상되지만 요즘엔 대부분 StringBuffer클래스를 사용한다.
JAVA 문자열, String, StringBuffer, StringBuilder 1. 문자열을 초기화할때는 되도록 빈 문자열로 초기화하자. 굳이 객체 새로 만들지 말고. String str = new String(""); // 이거 쓰지 말고 String str = ""; // 이거 쓰자 2. String클래스의 valueOf() 함수는 기본형 변수값을 문자열로 바꿔준다. 참조형 변수의 경우 참조형 인스턴스의 toString()함수를 호출한다. 3. String클래스의 join()함수는 문자열을 합칠 때 유용하다. String animals = "dog,cat,bear"; String[] arr = animals.split(","); String str = String.join("-", arr); // "dog-cat-bear" 4. StringBuffer클래스는 문자열을 저장 & ..
JAVA Object 클래스 1. Object클래스의 finalize() 함수는 거의 사용하지 않는다. 역할은 객체 제거 전에 마무리 작업을 하는 건데, 안그래도 메모리가 부족한 상황에서 이런 작업들을 하면 시간이 지연되기 때문에 거의 사용하지 않는다. 2. Object 클래스의notify(), wait() 관련 함수들은 쓰레드와 관련된 함수들이다.
JAVA equals(), hashCode() 1. equals()를 오버라이딩하면 hashCode()도 오버라이딩해야 한다. 2. System.identityHashCode(Object obj)는 Object클래스의 hashCode()와 동일하다.
JAVA native 메서드 1. native 메서드 : OS가 원래 가지고 있는 메서드 이미 OS에 존재하는 함수이기 때문에 JAVA 코드에서는 함수 내용이 비어있다. 실제론 JNI(Java Native Interface)를 통해 OS 함수를 호출한다.
JAVA Exception 1. Java의 런타임 에러 1) 에러(error): 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 2) 예외(exception): 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 일반 Exception 클래스들: 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외 RuntimException 클래스들: 프로그래머의 실수로 발생하는 예외 2. 예외 처리의 목적은 비정상 종료를 막고 정상적인 실행상태를 유지하는 것 3. checked 예외, unchecked 예외 checked예외: 컴파일러가 예외 처리 여부를 체크 (예외 처리 필수) ex) Exception unchecked예외: 컴파일러가 예외 처리 여부를 체크 안함 (예외 처리 선택) ex) RuntimeException 4. 연결..