Java
-
[Java Study] - java class(클래스) - 객체,생성자, this 키워드Java 2021. 11. 8. 09:55
객체 지향 프로그래밍(OOP , Object - Oriented Programming) 객체 지향 프로그래밍에서는 모든 데이터를 객체(Object)로 취급하며, 이러한 객체가 바로 프로그래밍의 중심이 된다. 객체(object) 란 간단히 이야기하자면 실생활에서 우리가 인식할 수 있는 사물을 지칭하는 데, 상태(state) , 행동(behavior) , 정체성(identity)로 구성 되어 있다. State : 객체의 속성을 표현하고 반영한다. Behavior : 객체의 메서드로 표현 되는데 , 객체들 간의 메시지를 반영한다. Identity : 객체의 고유한 이름을 제공한다. 이를 통해 객체들 간의 상호작용이 가능하다. ex) 이러한 객체의 상태(state) 와 행동(behavior) 그리고 정체성(Id..
-
[Java Study] - enum typeJava 2021. 10. 20. 13:29
Enum Type (열거형) 열거형이란 ? 관련된 상수들을 같이 묶어 놓은 special class 이다. JDK 1.5 이후 부터 열거형을 사용 할 수 있었는데, java 에서는 변수 , 메서드, 생성자를 열거형에 추가할 수 있기 때문에 C 나 C++ 보다 더욱 향상된 성능으로 Enum 클래스를 사용할 수 있다. 열거형 정의 enum 열거형이름 { 상수명1, 상수명2 } class 밖에서 선언 enum Color { RED, GREEN, BLUE; } public class Test { public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } } class 안에서 선언 public class Test ..
-
[Java Study] - 애노테이션(Annotation)Java 2021. 10. 15. 12:11
애노테이션 애노테이션이란? 자바 소스 코드에 추가하여 사용할 수 있는 메터데이터의 일종으로 보통 @ 기호를 앞에 붙여서 사용한다. 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공한다 JDK 1.5 버전 이상에서 사용 가능하다. 자바 애노테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다. ※ 메타데이터란? 애플리케이션이 처리해야 할 데이터가 아니라, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보이다. 애노테이션은 다음 세 가지 용도로 사용된다. 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 제공 실행 시(런타임 시) 특정 기..
-
[Java Study] - 멀티 쓰레드(쓰레드 생성과 실행)Java 2021. 10. 12. 16:07
자바의 멀티 쓰레드 프로그래밍을 알아보기 전에 프로세스와 쓰레드의 개념을 살펴보면 프로세스 실행 중인 프로그램 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행중인 것을 말함 자원(메모리,CPU..etc)과 쓰레드로 구성 멀티 프로세스 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것 쓰레드 프로세스 내에서 실제 작업을 수행 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다. 멀티 쓰레드 일반적으로 하나의 프로세서는 하나의 스레드를 가지고 작업을 수행한다. 하지만 멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다. 동시성(Concurrency) 과 병렬성(Parallelism) 동시성(Concurrency) 멀티 작업..
-
[Java Study] - 자바의 예외 처리(Exception Handling)Java 2021. 10. 1. 13:06
예외 처리(Exception Handling) : 프로그램 실행 시 예외가 발생 할 수 있는데 그것을 대비한 코드를 작성하는 것이 예외 처리이다. 예외 처리를 통해 프로그램의 비정상 종료를 막고 정상적인 실행 상태를 유지할 수 있다. 예외 처리하기 - try-catch 문 try{ // 예외가 발생할 가능성이 있는 문장들을 넣는다. }catch(Exception e){ // Exception이 발생했을 경우, 이를 처리하기 위한 문장을 넣는다. } try 블럭 내에서 예외가 발생하지 않은 경우 catch 블럭을 거치지 않고 전체 try-catch 문을 빠져나가서 수행을 계속한다. try 블럭 내에서 예외가 발생한 경우 발생한 예외와 일치하는 catch 블럭이 있는지 확인한다. 일치하는 catch 블럭을 ..
-
[JavaStudy] - Class Loader(클래스 로더) in JVMJava 2021. 9. 29. 10:02
Class Loader : 런타임 시 컴파일 된 .class 파일을 메모리에 로딩하는 역할을 수행한다. 로딩, 링크 , 초기화 순으로 진행된다. Loading 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 "메소드" 영역에 저장 이때 메소드 영역에 저장하는 데이터는 다음과 같다. - FQCN(Fully Qualified Class Name) : 클래스가 속한 모든 패키지명을 모두 포함하는 이름 - 클래스 , 인터페이스, ENUM - 메소드와 변수 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 "힙" 영역에 저장 로딩 과정 1. 우선 클래스가 메모리에 로드되었는지 확인 한다. (ClassLoader 클래스의 findLoadedClass() 메서드) 2..
-
[Java Study] - Garbage Collection(GC) in JVMJava 2021. 9. 26. 23:14
JVM Execution Engine(실행 엔진) 안에 있는 Garbage Collcetion 은 자동으로 메모리를 관리해주는 프로세스를 말한다. Stack : 정적으로 할당한 메모리 영역 원시 타입의 데이터가 값과 함께 할당, Heap 영역에 생성된 Object 데이터의 주소 값을 참조 Heap 모든 Object 타입이 Heap에 생성 : 동적으로 할당한 메모리 영역 Garbage Collector 는 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하면서 메모리를 관리 한다. 과정 Garbage Collector 가 Stack의 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾는다. 참조되지 않는 객체(unrefernced objects) 를 마킹한다. 마킹된 객체는 삭제..
-
[Java Study] - LinkedList , Queue in Collection frameworkJava 2021. 9. 26. 16:23
LinkedList는 java Collection framework에서 List 인터페이스를 구현한 클래스로 List 인터페이스로 사용 가능한 컬렉션입니다. LinkedList에는 Node로 불리는 요소가 있는데요 요소는 데이터와 다음 Node의 주소값 2가지로 나눌 수 있습니다. Head 는 오직 리스트의 첫번째 요소 주소값 만 가지고 있습니다. 리스트의 마지막 요소는 노드의 주소 값 부분이 null 입니다. 이렇게 이전요소와 다음요소가 직접적으로 연결된 데이터 구조를 linear data strucure(선형 자료구조) 라고 합니다. LinkedList 는 대표적인 선형 자료구조 중 하나입니다. 위의 예시는 타입을 Integer 으로 지정 했을 때이다. 데이터 값은 모두 Integer 메서드 Link..