목록전체 글 (518)
개발놀이터
https://coding-review.tistory.com/148 CheckedException, UncheckedException 자바의 예외는 크게 3가지로 나눌 수 있다. 체크 예외 (CheckedException) 언체크 예외 (UncheckedException) 에러 (Error) 자바에서 에러, 예외와 관련된 클래스들의 계층구조는 위와 같다. Throwable 클래스를.. coding-review.tistory.com CheckedException, UncheckedException에 대해 공부하다가 김영한님의 강의 "데이터베이스 접근기술 1편"을 다시 보면서 "체크 예외를 쓰기 보다는 런타임 예외를 쓰고 런타임 예외에 대한 로그를 남기고 개발자가 해당 오류를 빠르게 인지하는 것이 필요하다...
Q. CheckedException과 UncheckedException에 대해서 설명해주세요. A. 둘의 차이는 RuntimeException을 상속하는가의 여부에 따라 다릅니다. RuntimeException을 상속하면 UncheckedException이 됩니다. CheckedException은 예외가 발생 했을 경우 반드시 try / catch로 해결해야 하는 예외입니다. 처리하지 못하는 경우에는 throws를 통해 밖으로 던져야 합니다. UncheckedException은 말 그대로 컴파일러가 예외를 체크하지 않겠다는 의미입니다. 체크 예외와는 다르게 예외를 반드시 처리하지 않아도 되고 throws를 통해 밖으로 던지는 것 또한 생략해도 됩니다. 꼬리질문 Q. CheckedException, Unc..
자바의 예외는 크게 3가지로 나눌 수 있다. 체크 예외 (CheckedException) 언체크 예외 (UncheckedException) 에러 (Error) 자바에서 에러, 예외와 관련된 클래스들의 계층구조는 위와 같다. Throwable 클래스를 기준으로 Error, Exception 클래스로 나뉘어진다. 왼쪽에 보이는 Error는 말 그대로 에러와 관련된 클래스이다. 그리고 오른쪽에 보이는 Exception도 말 그대로 예외와 관련된 클래스이다. 자바에서 실행 시(Runtime) 발생할 수 있는 프로그램 오류를 에러와 예외 두가지로 구분하였다. Error란? 에러는 시스템에 비정상적인 상황이 발생했을 경우에 발생한다. 대표적으로 OOME로 많이 알려진 OutOfMemoryError나 StackOve..
Q. String, StringBuilder, StringBuffer에 대해서 설명해주세요 A. String은 불변입니다. StringBuilder와 StringBuffer는 이런 String의 특징때문에 사용하는 가변타입라고 볼 수 있습니다. StringBuilder와 StringBuffer는 Thread-safe 여부의 차이가 있습니다. StringBuilder는 Thread-safe 하지 않습니다. 따라서 Multi-Thread 환경에서 사용할 때는 String Buffer를 사용합니다.
Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuilder, StringBuffer가 있다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없다. 그러나 연산 횟수가 많아지거나 멀티스레드, Race condition 등의 상황이 자주 발생한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야 한다. String vs StringBuilder, StringBuffer String과 StringBuilder, StringBuffer 클래스의 가장 큰 차이점은 String은 불변의 속성을, StringBuilder, StringBuffer는 변경가능한 속성을 갖는다는 점이다. String str = "hello";// S..
https://coding-review.tistory.com/125 GC (Garbage Collection)의 알고리즘 GC의 정의 GC는 Garbage Collector의 약자로 힙 영역에서 사용하지 않는 객체들을 제거하는 작업을 총칭한다. 이 객체를 제거하는 작업이 필요한 이유는 자바는 개발자가 메모리를 직접 해제해줄 수 coding-review.tistory.com 기존 면접 질문에서 Mark Sweep Compact 알고리즘이 나와서 꼬리질문을 대비해 GC의 알고리즘에 대해 자세히 알아봤다. 이번 포스팅에선 GC에 대해 좀 더 자세히 파고들어 갈 것이다. GC의 개념 GC는 메모리 관리 기법 중 하나로, 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 해제하는 기능이다. 여기서 동적으로 ..
Q. 원시타입과 참조타입의 차이에 대해 설명해주세요. A. 원시타입은 Java에서 단 8개밖에 존재하지 않는 타입입니다. 나머지는 모두 참조타입이라고 볼 수 있고, 참조 타입은 Object클래스이거나 이를 상속하는 클래스들로 이루어져 있습니다. 원시타입은 항상 값이 존재해야 합니다. 반면 참조타입은 null을 가질 수 있습니다. 그리고 멤버변수가 초기화될 때 원시타입은 기본값을 가지지만, 참조타입은 null을 가지는 차이도 있습니다. https://coding-review.tistory.com/143 원시타입과 참조타입 원시타입 원시타입은 정수, 실수 ,문자, 논리 리터럴등 실제 데이터 값을 저장하는 타입이다. int a = 10; 과 같이 코드를 작성했다면 정수 값이 할당될 수 있는 a라는 이름의 메모..
원시타입 원시타입은 정수, 실수 ,문자, 논리 리터럴등 실제 데이터 값을 저장하는 타입이다. int a = 10; 과 같이 코드를 작성했다면 정수 값이 할당될 수 있는 a라는 이름의 메모리 공간이 스택 영역에 생성되고 ,10이라는 값이 들어간다. 즉 원시타입은 메모리 공간의 실제 데이터 값이 저장되어 있다. 참조타입 참조타입은 기본타입을 제외한 타입으로 객체의 주소를 저장하는 타입이다. 문자열, 배열, 열거형 상수, 클래스, 인터페이스 등이 있다. Java에서 실제 객체는 힙 영역에 저장되며, 참조 타입 변수는 실제 객체의 주소를 스택 영역에 저장한다. 그리고 객체를 사용할 때마다 참조 변수에서 저장된 객체의 주소를 불러와 사용하게 된다. Person p = new Person(); 이라는 코드를 작성했..
Q. 동일성(identity)과 동등성(equality)에 대해서 설명해주세요 A. 동일성은 객체의 주소를 비교하는 것이고, 동등성은 객체의 같음을 비교하는 것입니다. 기본적으로 자바에서는 Object 클래스에 정의된 equals() 메소드가 동등성을 비교합니다. 따라서, 개발자는 원한다면 equals() 메소드를 오버라이딩해서 동등성의 판단 기준을 정의해주면 됩니다. https://coding-review.tistory.com/141 동일성(identity)과 동등성(equality) 동일성 동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다. 여기서 완전히 같다는 뜻은 두 객체가 사실상 하나의 객체로 봐도 무방하며, 주소 값이 같기 때문에 두 변수 coding-review.tist..
동일성 동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다. 여기서 완전히 같다는 뜻은 두 객체가 사실상 하나의 객체로 봐도 무방하며, 주소 값이 같기 때문에 두 변수가 같은 객체를 가리키게 된다. 위의 예제에서 refVar1은 객체1을 가리키고 있고, refVar2와 refVar3는 객체2를 가리키고 있다. refVar2와 refVar3는 동일한 객체를 가리키고 있으므로, 두 변수는 동일하다고 이야기할 수 있다. 그리고 해당 변수가 동일한지 ==연산자를 통해 판별할 수 있다. 참고로 Primitive 타입은 객체가 아니라 주소가 없으므로 == 연산자를 사용하였을 때 내용이 같으면 동일하다고 판단한다. 동등성 동등성은 동등하다는 뜻으로 두 개의 객체가 같은 정보를 갖고 있는 경우를 의..