본문 바로가기

Java

(7)
[Java] 예외처리에 대한 공부 예외(Exception)란 개발자가 구현한 로직에서 발새한 실수나 사용자의 영향에 의해 발생한다. 오류와 달리 미리 예측이 가능하여 상황에 맞게 예외처리를 해야 한다.  오류(Error)란 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 미리 예측이 불가능하여 방지할 수 없다. 예외 계층체크 예외애플링케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. RuntimeExceptiond을 제외한 모든 예외는 체크예외이다. 언체크 예외(런타임 예외)컴파일러가 체크하지 않는 언체크 예외이다. RuntimeException과 하위 언체크 예외를 모두 런타임 예외라고 한다. 예외 처리 란? 예기치..
[Java] 다형성에 대한 공부 다형성(Polymorphism)하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 클래스가 상속 관계에 있을 때 나타나는 성질이다.public class Car { public void carMethod(){ System.out.println("자동차입니다."); }}public class OilCar extends Car{ public void oilCarMethod(){ System.out.println("기름차입니다."); }}위 코드는 OilCar가 Car를 상속하는 코드이다.public class PloyMain { public static void main(String[] args) { System.out.println..
[Java] 상속과 구현에 대한 공부 상속 관계 객체 지향 프로그래밍의 핵심 요소 중 하나로, 기존 클래스의 메서드를 새로운 클래스에서 재사용하게 해 준다. extends 키워드를 사용하며 하나의 대상만 선택할 수 있다. 부모 클래스 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스 public class Animals { public void sound(){ System.out.println("소리를 냅니다."); } } 자식 클래스 부모 클래스로부터 필드와 메서드를 상속받는 클래스 public class Eagle extends Animals { public void fly(){ System.out.println("날아 갑니다."); } } eagle이 Animals를 상속받는다. public class Bear exte..
[Java] Garbage Collector 대한 공부 Garbage Collector 프로그램이 동적으로 할당했던 메모리 영역(Heap) 중 사용하지 않는 영역을 탐지하여 해제하는 기능이다. public class Main{ public static void main(String[] args){ User user=new User("홍길동","20") user=new User("김철수","25") } } 위 코드를 보면 user는 처음에 User 객체가 생성되고 '홍길동'을 참조하고 있다. 하지만 다음줄이 실행되면서 '김철수'를 참조한다. 이때 참조하지 않는 '홍길동'이 GC의 대상이 된다. GC에 과정으로 Mark and Sweep있다. 처음에는 GC가 Stack의 모든 변수를 스캔하면서 객체가 참조하고 있는 변수를 Marking 한다. 이때 reachea..
[Java] JVM의 Heap, Stack구조에 대한 공부 자바 메모리 구조에 대한 공부를 하면서 Heap과 Stack 영역에 대하여 아주 간단하게 지나갔는데 자세하게 공부하겠다.위 그림(Runtime Data Area 영역)에서 JVM stack과 Heap의 대해 공부하겠다.Heap영역1. 프로그램을 실행하면서 생성한 모든 객체가 저장된다.2. 주기적으로 GC가 제거하는 영역이다.위 그림은 자바 7 이전과 8 이후의 JVM 구조이다. 위 그림처럼 Heap은 영역이 나누어지는데 이는 GC이 Heap을 효율적으로 삭제하기 위해서 3가지 영역으로 나누어진다. New/Young 생명 주기가 짧은 객체를 GC 대상으로 하는 영역 Edennew를 통해서 생성된 객체가 위치한다. 정기적인 GC후 살아남은 객체들은 Survivor로 이동한다.survivor1 / surviv..
[Java] 자바 메모리 구조에 대한 공부 (Heap,Stack,Method) jvm 영역에 대해서 공부를 했다. 공부를 하면서 자바 메모리 구조에 대하여 공부하겠다. 간단하게 Runtime Data Area를 다시 보면 위 그림과 같다. 여기서 Heap, Stack, Method의 구조와 영역에 대해서 공부할 것이다. 일단 자바에 변수에 대해서 알아야 한다. 자바의 변수는 아래 코드와 같이 나누어 진다. public class Shop{ public static int count = 10; // 클래스 변수 public int inventory = 100; //인스턴스 변수 } public class Main { public static void main(String[] args) {//매개 변수 //지역 변수 int wieght = 20; Shop sh = new Shop();..
[Java] JVM 구성에 대한 공부 JVM(Java Virtual Machine)OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. 위 그림은 자바가 어떻게 동작하는지 간단하게 나타낸 그림이다.그림에서 자바 소스코드(.java) 를 Java Compiler(.javac)가 자바 바이트 코드(.class)형식으로 컴파일한다.바이트 코드란 JVM이 알아들을 수 있는 명령어 집합을 이야기한다.Class Loader를 통해서 컴파일된 바이트코드를 JVM Runtime Data Area로 로딩한다. 위 그림은 JVM 부분만 상세하게 나타낸 그림이다. 클래스 로더(Class Loader)JVM 내로 클래스 파일(.class)을 Load 하고, Loading 된 클래스들을 Runtime Data Area의 Metho..