본문 바로가기

Java/Basic

(15)
[Java] 클래스(Class)와 객체(Object) 정의와 용도 클래스(Class) - 클래스(Class)는 '객체(Object)를 정의해놓은 것' 또는 '객체의 설계도 또는 틀'. - 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다. 클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다. 클래스의 용도 : 클래스는 객체를 생성하는데 사용된다. 객체(Object) - 객체의 사전적인 정의는 '실제로 존재하는 것' - 우리가 주변에서 볼 수 있는 사물들이 곧 객체. - 객체지향이론에서는 사물과 같은 유형적인 것뿐만 아니라, 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다. - 프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 의미한다. 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념. 객치의 용도 :..
[Java] JVM(Java Virtual Machine) - JVM은 'Java Virtual Machine'을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 기계'라고 할 수 있다. - 영어권에서는 컴퓨터를 머신(machine)이라고도 부르기 때문에 '머신'이라는 용어대신 '컴퓨터'를 사용해서 '자바를 실행하기 위한 가상 컴퓨터'라고 할 수 있다. - Virtual Machine(가상 기계)는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어이며, 컴퓨터의 성능이 향상됨에 따라 점점 더 많은 하드웨어들이 소프트웨어화되어 컴퓨터 속으로 들어오고 있는데, 마찬가지로 '가상 컴퓨터(virtual computer)'는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터이다. - 자바로 작성된 애플리케이션은 모두 이 가상 ..
[Java] 람다식(Lambda Expressions) 람다식이란? - 람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. - 객체 지향 프로그래밍에 익숙한 개발자들은 혼란스러울 수 있지만, 자바에서 람다식을 수용한 이유는 자바 코드가 매우 간결해지고, Collection의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문이다. - 람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성한다. 람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체 예를 들어 Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 다음과 같다. 위 코드에서 익명 구현 객체를 람다식으로 표현하면 다음과 같다. - 람다식은 "(매개..
[Java] 제네릭(Generic) Q. 왜 제네릭을 사용해야 할까? - 제네릭은 클래스와 인터페이스, 그리고 메소드를 정의할 때 타입(type)을 파라미터(parameter)로 사용할 수 있도록 한다. 타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 제네릭을 사용하는 코드가 비제네릭 코드에 비해 가지는 이점? 1. 컴파일 시 강한 타입 체크를 할 수 있다. : 자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체클르 한다. 실행 시 타입 에러가 나는 것보다는 컴파일 시에 미ㅣ 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋다. 2. 타입 변환(casting)을 제거한다. : 비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프..
[Java] 멀티스레드(Multi Thread) 1. 멀티 스레드 개념 1-1) 프로세스와 스레드 - 스레드(Thread)는 사전적 의미로 한 가닥의 실이라는 뜻인데, 한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어놓았다고해서 유래되었다. - 하나의 스레드는 하나의 코드 실행 흐름이기 때문에 한 프로세스 내에 스레드가 두 개라면 두 개의 코드 실행 흐름이 생긴다는 의미이다. - 멀티 프로세스(Multi Process)가 애플리케이션 단위의 멀티 태스킹이라면 멀티 스레드(Multi Thread)는 애플리케이션 내부에서의 멀티 태스킹이라고 볼 수 있다. - 멀티 프로세스들은 운영체제에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 독립적이다, 따라서 하나의 프로세스에서 오류가 발생해도 다른 프로세스에게 영향을 미치 않는다. - 멀티..