Basic/Java

· Basic/Java
데이터 중에는 몇 가지로 한정된 값만을 갖는 경우가 흔히 있다. 예를 들어 계절은 봄, 여름, 가을, 겨울 그리고 요일은 월, 화, 수, 목, 금, 토, 일이라는 한정된 값을 가진다. 이렇게 한정된 값만을 가지는 데이터 타입이 열거 타입(Enumeration type)이다. 열거 타입의 장점 문자열과 비교해 IDE의 지원을 받을 수 있다. (자동완성, 오타 검증, 텍스트 리팩토링) 허용 가능한 값들을 제한 리팩토링 시 변경 범위가 최소화 된다. (내용 추가가 필요해도 Enum 코드 외에 수정할 필요가 없다.) 해당 장점은 모든 언어가 Enum에서 얻을 수 있는 장점이다. 더 나아가 Java Enum의 경우 C/C++과 다르게 Enum이 int 값이 아니라 완전한 기능을 가진 클래스이다. 이를 기반한 장점..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이전에 안드로이드 메모리 관리 관련하여 Strong, Soft, Weak Reference에 대해 알아보면서 GC에 대해 살짝 언급한 적이 있습니다. Java의 가비지 컬렉터는 다양한 종류가 있지만 공통적으로 다음의 2가지 작업을 수행합니다.1. 힙(Heap) 내의 객체 중 Garbage를 찾아낸다.2. 찾아낸 Garbage 객체를 반환하여 메모리를 회수한다. 최초의 JAVA는 Garbage Collection 작업에 사용자가 관여하지 않도록 구현되었었지만, JDK 1.2 부터는 java.lang.ref 패키지를 통해서 GC와 어느정도 상호작용을 할 수 있도록 해주었습니다. 기존의 Strong reference 뿐 아니라 Soft, Weak,..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론쉽게 이해할 수 있는 기본형(Primitive type) 데이터들의 형 변환처럼 객체 참조형(Object reference type)의 경우에도 형 변환이 이루어집니다. 서로 다른 클래스로부터 나온 인스턴스들의 형 변환의 규칙에 대해 공부해 보겠습니다. 객체 형 변환의 기초 Parent parent = new Child( ); 이 연산에서 왼쪽 항과 오른쪽의 객체의 유형이 서로 다른 경우, 두 유형이 상속 관계에 있고 Parent가 Child의 상위 클래스 인 경우에만 형 변환이 일어나게 됩니다. 즉, 하위 클래스에서 상위 클래스로 할당하는 것은 가능하나, 그 반대의 경우는 강제 형 변환을 해주어야 가능합니다. 이 경우에는 오류가 발생할 수 있..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 어디서든 편하게 공용으로 쓰는 변수를 Static으로 선언해서 사용하자. 라는 생각으로 간단하게 Static을 써왔던 분들이 많을 것 입니다. (필자도 마찬가지) 이번 편에서는 JVM과 관련지어서 Staic의 장, 단점을 알아보도록 하겠습니다. 인스턴스 변수와 클래스 변수와의 비교와도 상응하는 부분이겠죠. 자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수) JVM의 메모리 구조 Static의 장점[소스코드] class Work { static int CommonWork = 0; int SeveralWork =0; boolean isHwang = false; void doWork() { CommonWork++; SeveralWork++; ..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 자바 응용프로그램이 시작되면, 자바 가상 머신(Java Virtual Machine, JVM)은 프로그램 수행에 필요한 메모리를 할당 받고, 이 메모리를 관리합니다. 이에 대해 알아보도록 하겠습니다.자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수) JVM의 메모리 구조
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 선언 위치에 따른 변수의 종류 자바에서의 변수는 클래스 변수, 인스턴스 변수, 지역 변수가 있습니다. 변수의 종류를 결정짓는 것은 '변수가 선언된 위치' 입니다. 다음의 코드를 보면서 말씀드리겠습니다. 코드를 보시면서 어디가 클래스의 영역이고, 어디가 메서드 영역인지 구분하시길 바랍니다. public class test { int iv; // 인스턴스 변수 static int cv; // 클래스 변수 void method() { int lv; // 지역 변수 } } 위의 그림에는 모두 3개의 int 형 변수가 선언되어 있는데, iv와 cv는 클래스 내부에 선언되어 있으므로 멤버 변수입니다. 그 중 cv는 static으로 선언되었으니 클래스 변수이고..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 절차지향언어 지루한 설명보단 간단한 예시를 통해 빠른 이해를 도모해보겠습니다. 자동차를 생산하기 위해 엔진을 만들고, 차체를 만들고 바퀴를 만드는 일련의 순서가 있다고 생각해봅시다. 이 순서는 서로 분리가 되면 안되고 순서도 틀려서는 안된다고 합니다. 이처럼 절차 지향언어는 어떠한 절차에 따라서 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되는 프로그래밍 기법입니다. 이는 컴퓨터의 작업 방식과 비슷하기 때문에 객체 지향언어보다 빠르게 처리되어 시간적으로 유리했습니다. 객체지향언어객체 지향 언어도 위와 같이 예시를 들어 설명하겠습니다. 자동차를 생산할 때, 바퀴 제작, 차제 제작, 엔진 제작을 순서대로가 아닌 따로 진행하여 조립할 때만 ..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 이번에는 예외 클래스의 계층구조와 Exception 클래스에서 Runtime Exception 클래스를 제외한 Checked Exception 과 RuntimeException인 UnChecked Exception에 대해서 알아보도록 하겠습니다. 예외클래스의 구조 위의 그림은 예외클래스의 구조입니다. 모든 클래스의 조상은 Object 클래스이므로 Exception과 Error 클래스 역시 Object 클래스를 상속 받고 있습니다. Throwable 클래스를 상속 받는 클래스는 Error와 Exception이 있는데 모든 예외의 최고 조상 클래스는 당연히 Execption 입니다. Error 자체는 시스템 레벨의 심각한 영향을 주는 에러이기 때..
· Basic/Java
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 필자는 예외 처리에 대해서 에러 발생하면 catch 문으로 가는 것, 그리고 네트워킹 같은 try catch 구문이 필요한 부분은 그냥 꼭 써줘야되는구나 라는 부끄럽지만 무지한 생각을 가지고 있었습니다. 무지한 저를 바꾸기 위해 첫 번째로 예외처리의 정의와 목적, 더 나아가서 Checked Exception vs Unchecked Exception 에 대한 대용도 다뤄보도록 하겠습니다. 에러(error) vs 예외(exception) 프로그램을 돌렸을 때 오작동이나 비정상적으로 종료되는 원인을 오류나 에러라고 합니다. 이 에러는 '컴파일 에러'와 '런타임 에러'로 나눌 수 있는데, 글 자 그대로 컴파일 시 발생하는 에러와 실행 도중에 발생하는..
에반황
'Basic/Java' 카테고리의 글 목록