Knowledge Wiki (169) 썸네일형 리스트형 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. 연결.. JAVA final 키워드 2. JDK 1.8부터는 final 키워드를 생략해도 값이 안 바뀌면 컴파일러가 상수 취급한다. 원래 JDK 1.8 이전의 자바에서 외부 클래스의 지역 변수는 final이 붙은 변수(상수)만 접근 가능했다. 그래서 final 키워드를 생략하면 무조건 에러가 났었는데 JDK 1.8 이후에는 해당 변수가 한번도 변하지 않으면 에러가 나지 않는다. (JAVA가 알아서 final 취급하도록 변경됐기 때문) JAVA 내부 클래스 1. 내부 클래스의 장점 1) 내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근할 수 있다. 2) 코드의 복잡성을 줄일 수 있다. (캡슐화) 이전 1 ··· 16 17 18 19 20 21 22 다음