반응형

Language/Java 10

[JAVA] Error VS. Exception

# Error JAVA는 컴파일언어로 컴파일 시 JAVA의 문법적인 오류와 같은 심각한 문제를 야기시켜 컴파일 중간에 프로세스를 중단 할 수 있다. 메모리 부족, 스택오버 플로우와 같이 발생하면 복구할 수 없는 심각한 오류이다. 프로세스 자체를 중단시키는 것을 Error라고 합니다. # Exception 동작 도중 예기치 않았던 이상 상태의 발생으로 수행중인 프로그램이 영향을 받은 것으로 경미한 현상이라고 볼 수있다. 이를 Exception이라고 한다. 수습이 가능하고 개발자가 적절히 코드를 작성해준다면 비정상적인 종료는 막을 수 있게 된다. 즉, Error를 Exception상황으로 만들어, Exception Handling을 할 수 있다. # Throwable 클래스 Error를 Exception상황..

Language/Java 2024.04.09

[JAVA] 컴파일 과정

# JVM(Java Virtual Machine) JAVA의 가장 큰 장점은 OS에 독립적이라는 것이다. 따로 Machine을 갖고있는데 그게 JVM이다. (우리가 사용하는 VM의 한종류라고 볼 수있다.) 어떤 방식으로 Compile을 하길래 OS에서 독립적일까? # Compile 과정 개발자가 소스코드를 소스파일 (.java) 에 작성한다. Java의 컴파일러가 소스파일 (.java) Compile한다. 그 결과는 바이트 코드(.class)로 출력된다. 하지만, 바이트 코드(.class) 는 아직 JVM이 이해할 수 없다. Class Loader가 Dynamic Loading을 통해 필요한 클래스들을 로딩 및 링크하여 JVM에 올린다. Load: 바이트 코드(.class)를 JVM 메모리에 로드 검증:..

Language/Java 2024.04.09

[JAVA] Gabage Collection (2)🗑️

2022.01.14 - [Language/Java] - [JAVA] Gabage Collection (1)🗑️ [JAVA] Gabage Collection (1)🗑️ # 개요 Gabage Collection, GC란?? CS를 공부할때 한번쯤 언어적으로 접근할 필요가 있다고 생각한다. Gabage(쓰레기) Collector(수집가)라는 말의 뜻을 갖고 있다. 그러면 컴퓨터, 즉, 프로세스가 구동중에 Ga blaj2938.tistory.com 이전 포스팅에서는 GC가 어떻게 사용하지 않는 메모리를 판별하는 참조 방식과 청소 방식에 대해서 알아보았다. 그렇다면 이 방식과 방식을 JVM Heap영역에 대입해서 동작하도록 해야한다. # heap 메모리의 구조 & GC 종류 JVM의 Heap 메모리 영역은 애초에..

Language/Java 2024.04.09

[JAVA] Gabage Collection (1)🗑️

# 개요 Gabage Collection, GC란?? CS를 공부할때 한번쯤 언어적으로 접근할 필요가 있다고 생각한다. Gabage(쓰레기) Collector(수집가)라는 말의 뜻을 갖고 있다. 그러면 컴퓨터, 즉, 프로세스가 구동중에 Gabage(쓰레기)는 무엇인지 알아보아야한다. Once upon a time~ 과거 java, python 등등 이러한 언어가 나오기 이전으로 돌아가보자 과거 프로그래밍 언어들은 프로그래머가 동적메모리를 할당부터 해제까지 모두 수동으로 해줘야했다. 특히 우리가 알고 있는 C언어도 그랬다. 항상 개발자들은 메모리를 할당하고 해제하지 않거나 해제한 메모리를 다시 해제 하는 등... 휴먼에러를 많이 발생시켰다. 개발자는 휴먼에러를 최소화해야겠다. 명령대로만 알아듣는 컴퓨터를 ..

Language/Java 2024.04.09

[JAVA] 상속 👨‍👩‍👧‍👦

안녕하십니까? 검은 까마귀 입니다. 오늘은 상속에 대해서 알아보겠습니다~ 상속은 뭘까? 일단 상속의 사전적 의미에 대해 알아보겠습니다. 일정한 친족관계가 있는 사람 사이에 한 쪽이 사망하거나 법률상의 원인이 발생하였을 때 재산적 또는 친족적 권리와 의무를 포괄적으로 계승하는 제도. 사전적 의미로는 재산또는 친족적 권리와 의무를 계승하는 제도를 의미한다고 하네요 그렇다면 객체지향프로그래밍에서 상속은 어떤것을 계승하게 될까요? 한줄로 요약을 해보았을때 "클래스가 이미 존재하는 클래스의 속성(필드)과 메서드가 사용이 됩니다" 우리는 개발자이기 코드로 이야기 해볼까요?? class 부모클래스 { int 부모필드; void 부모메서드() { System.out.println("부모 메서드 실행"); } } cla..

Language/Java 2023.09.12

[JAVA] JVM 메모리 구조

안녕하시렵니까? 검은까마귀입니다 JVM메모리 구조에 대해 알아보는 시간을 갖겠습니다. JVM이란 뭘까? 먼저 아주 똑똑한 쳇~ GPT에게 물어보겠습니다 나: JVM에 대해 설명해줘~ JVM은 "Java Virtual Machine"의 약자로, 자바 프로그램을 실행하기 위한 가상 머신입니다. JVM은 자바 프로그램을 컴파일한 바이트 코드를 실행하고, 다양한 운영 체제 및 하드웨어 환경에서 동작하는 역할을 합니다. 아래에서 JVM에 대한 주요 특징과 기능을 설명하겠습니다: 1. 바이트 코드 실행: 자바 소스 코드는 자바 컴파일러를 통해 바이트 코드로 변환됩니다. 이 바이트 코드는 JVM에서 실행됩니다. 이로써, 자바 프로그램은 플랫폼에 독립적이며, 한 번 컴파일한 코드를 여러 운영 체제에서 실행할 수 있습니..

Language/Java 2023.09.12

[JAVA] Thread 활용법

모든 언어는 CS와 연결되어있다. 한가지를 뚜렷하게 알면 용어는 돌려쓰기 때문에 더 헷갈리지만, 연결되어있다고 생각하면 더 쉽다. 나는 이전 포스팅에서 Thread와 Process에 대해서 디테일 하게 알아보았다. (모른다면 읽어보고 JAVA의 Thread를 따라오자.) 2024.01.03 - [Computer Science/Operation System] - [OS] 프로세스 & 쓰레드(Process & Thread) [OS] 프로세스 & 쓰레드(Process & Thread) #개요 CS를 공부할때는 언어에 대해서 1차적인 고민을 해야한다. 우리는 PC를 사용할때 프로그램(Program)을 사용한다. 프로그램(Program)을 실행하여 원하는 동작을 구현하는데 우리는 이 단위를 프 blaj2938.t..

Language/Java 2022.01.14

[JAVA] Collection FrameWork

자바에서 컬렉션 프레임 워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화 방법을 제공 즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현 List 인터페이스 - Collection 상속 순서가 있는 데이터의 집합으로, 데이터의 중복을 허용 Set 인터페이스 - Collection 상속 순서가 없는 데이터의 집합으로, 중복허용하지 않음 Map 인터페이스 키와 값을 한쌍으로 이루어지는 데이터의 집합으로 순서가 없다 키 값은 중복을 허용하지 않지만 값은 중복을 허용한다 key - value 구조 List 컬랙션 클래스 요소의 저장 순서 유지 같은 요소의 중복 저장을 허용 ArrayList LinkedList Vector -> 사용 잘 안함 Stack Set 컬렉..

Language/Java 2022.01.12

[JAVA] 제네릭(Generic)

제네릭이란 데이터의 타입을 일반화 한다 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일수 있다 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다 class MyArray { T element; void setElement(T element) { this.element = element; } T getElement() { return element; } } "T" 타입 변수라고 하며, 임의의 참조형 타입을 의미한다. 여러개의 변수 타입은 ,(쉼표)로 구분하여 명시 타입 변수는 클래스에서 뿐만아니라 매소드의 매개변수나 반환값으로 사용할수 있습니다. implement키워드를 사용해서는 안된다.

Language/Java 2022.01.10

[JAVA] Arrays 클래스

Arrays클래스에는 배열을 다루기 위한 다양한 메소드가 포함되어 있다. Arrays 클래스는 모든 메소드는 클래스 메소드이다 for문을 사용 그렇기 때문에 객체를 생성하지 않고도 바로 사용이 가능하다 binarySearch() 전달받은 배열에서 측정 객체의 위치를 이진 검색을 알고리즘을 사용하여 검색 매개변수로 전달되는 배열이 sort()메소드 등을 사용하여 미리 정렬되어 있어야한다 copyOf(배열, 늘리고 싶거나 줄이고 싶은 배열 수) 전달받은 배열의 특정 길이만큼을 새로운 배열로 복사하여 반환 데이터가 아닌 배열을 복사 copyOfRange(배열, from, to) 배열의 특정 범위에 해당하는 요소만 새로운 배열로 복사하여 반환 fill(배열, 초기값) 전달받은 배열의 모든 요소를 특정값으로 초기..

Language/Java 2022.01.10
반응형