Java 10

[이것이 자바다] CHAPTER 14. 멀티 스레드

14.1 멀티 스레드 개념 운영체제는 실행 중인 프로그램을 프로세스(process)로 관리한다. 멀티 태스킹(multi tasking)은 두 가지 이상의 작업을 도잇에 처리하는 것을 말하는데, 이때 운영체제는 멀티 프로세스를 생성해서 처리한다. 하지만 멀티 태스킹이 꼭 멀티 프로세스를 뜻하지는 않는다. 하나의 프로세스가 두 가지 이상의 작업을 처리할 수 있는 이유는 멀티 스레드(nulti thread)가 있기 때문이다. 스레드(thread)는 코드의 실행 흐름을 말하는데, 프로세스 내에 스레드가 두 개라면 두 개의 코드 실행 흐름이 생긴다는 의미이다. 멀티 프로세스가 멀티 프로그램 단위의 멀티 태스킹이라면 멀티 스레드는 프로그램 내부에서의 멀티 태스킹이라고 볼 수 있다.  멀티 프로세스들은 서로 독립적이..

[이것이 자바다] CHAPTER 05. 참조 타입

5.1 데이터 타입(Data Type) 분류분류종류기본 타입(primitive type)정수 타입byte, char, short, int, long실수 타입float, double논리 타입booean참조 타입(reference type)배열 타입열거 타입클래스인터페이스 객체란?데이터와 메소드로 구성된 덩어리. 미리 만들어진 프로그램 덩어리.     객체 = 데이터(필드) + 메소드   두 데이터 타입의 변수들은 모두 스택(stack)이라는 메모리 영역에 생성되는데, 기본 타입으로 선언된 변수는 값 자체를 저장하지만, 참조 타입으로 선언된 변수는 힙(heap)에 생성된 객체의 생성된 메모리 번지를 저장한다.          5.2 메모리 사용 영역  java 명령어로 JVM이 구동되면(java 명령을 실행..

[이것이 자바다] CHAPTER 04. 조건문과 반복문

4.1 코드 실행 흐름 제어 자바 프로그램은 main() 메소드의 시작 중괄호({)에서 끝 중괄호(})까지 위에서부터 아래로 실행하는 흐름이다. 이러한 실행 흐름을 흐름 제어문이 원하는 방향으로 바꿀 수 있도록 해준다.    제어문은 조건식과 중괄호 { } 블록으로 구성되는데, 조건식의 연산 결과에 따라 블록 내부의 실행 여부가 결정된다. 제어문의 종류는 다음과 같다.조건문반복문if 문, switch 문for 문, while 문, do-while 문  조건문은 정상 흐름으로 돌아오지만 반복문일 경우는 제어문 처음으로 다시 되돌아가 반속 실행한다. 이것을 루핑(looping)이라고 한다.        4.2 if 문 if 문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.if (조건식) { // ..

[이것이 자바다] CHAPTER 11. 예외 처리

11.1 예외 예외 클래스 자바에서는 컴퓨터 하드웨어의 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 에러(error)라고 한다. 개발자는 이런 에러에 대처할 방법이 없다.  자바에서는 잘못된 사용 또는 코딩으로 인한 오류를 예외(exception)라고 한다. 예외가 발생하면 프로그램이 곧바로 종료된다는 점에서 에러와 동일하지만, 예외 처리를 통해 계속 실행 상태를 유지할 수 있다.일반 예외(Exception)컴파일러가 예외 처리 코드 여부를 검사하는 예외를 말한다.실행 예외(Runtime Exception)컴파일러가 예외 처리 코드 여부를 검사하지 않는 예외를 말한다.  자바는 예외가 발생하면 예외 클래스로부터 객체를 생성한다. 이 객체는 예외 처리 시 사용된다. 자바의 모든 에러와 예외 클래스..

[이것이 자바다] CHAPTER 09. 중첩 선언과 익명 객체 │ 개념

9.1 중첩 클래스  여러 클래스와 관계를 맺어 상호작용하는 경우 클래스를 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많다.  중첩 클래스(Nested Class)란 클래스 내부에 선언한 클래스를 말하는데, 중첩 클래스 사용 시 클래스의 멤버를 쉽게 사용할 수 있고 외부에서는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. 선언하는 위치에 따라 클래스의 멤버로서 선언되는 중첩 클래스인 멤버 클래스와 메소드 내부에서 선언되는 중첩 클래스인 로컬 클래스로 나뉜다.선언 위치에 따른 분류선언 위치객체 생성 조건멤버 클래스인스턴스멤버 클래스class A { class B { ··· }}A 객체를 생성해야만B 객체를 생..

[이것이 자바다] CHAPTER 08. 인터페이스 │ 개념

8.1 인터페이스 역할 인터페이스(interface)는 사전적인 의미로 두 장치를 연결하는 접속기를 말한다. 여기서 두 장치를 서로 다른 객체로 본다면, 인터페이스는 이 두 객체를 연결하는 역할을 한다.    객체 A가 인터페이스의 메소드를 호출하면, 인터페이스는 객체 B의 메소드를 호출하고 그 결과를 받아 객체 A로 전달해준다. 인터페이스 사용하는 이유는 다음과 같다.  객체 A는 인터페이스의 메소드만 사용하므로 다른 객체가 교체되는 것에 관심이 없다. 객체 A가 인터페이스의 메소드를 호출한다면 실제로 실행되는 것은 객체 B 또는 객체 C의 메소드이다.  만약  인터페이스 없이 객체 A가 객체 B를 직접 사용한다면 객체 A의 소스 코드를 객체 B에서 객체 C로 변경하는 작업이 추가로 필요할 것이다. 객..

[이것이 자바다] CHAPTER 07. 상속 │ 개념

7.1 상속 개념 상속(Inheritance)란 부모가 자식에게 물려주는 행위이다. 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 개발 시간을 단축시킨다. 클래스의 수정을 최소화할 수도 있다. 부모 클래스를 수정하면 모든 자식 클래스에 수정 효과를 가져온다.      7.2 클래스 상속 자식이 부모를 선택한다. 자식 클래스를 선언할 때 상속받을 부모를 결정하고, 부모 클래스를 extends 뒤에 기술한다. 다중 상속을 허용하지 않으므로 extends 뒤에는 단 하나의 부모 클래스만이 와야 한다.public class 자식클래스 extends 부모클래스 {}      7.3 부모 생성자 호출자식 객체를 생성하면 부모 객체가 먼저 생성된 다음 자식 객체가 생성된다.자..

[이것이 자바다] Chapter 03. 연산자 │ 개념

3.1 부호/증감 연산자부호 연산자는 변수의 부호를 유지하거나 변경한다.연산자설명+피연산자피연산자의 부호 유지-피연산자피연산자의 부호 변경  주의할 점은 부호 변경 후의 타입이다. 범위에 맞지 않는 타입의 변수에 연산자로 인한 변경될 값을 대입하게 된다면 컴파일 에러가 발생한다. 이때 정수 타입(byte, short, int) 연산의 결과는 int 타입이다. 부호를 변경하는 것도 연산이므로 부호 변경 연산 결과는 int 타입 변수에 대입해야 한다.  증감 연산자(++, --)는 변수의 값을 1 증가시키거나 1 감소시키는 연산자이다.연산식설명++피연산자피연산자의 값을 1 증가시킴--피연산자피연산자의 값을 1 감소시킴피연산자++다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴피연산자--다른 연산을 수행한..

[이것이 자바다] CHAPTER 02. 변수와 타입 │ 개념

2.1 변수 선언 컴퓨터 메모리(RAM)는 수많은 번지들로 구성된 데이터 저장 공간이다. 프로그램은 데이터를 메모리에 저장하고 읽는 작업을 빈번히 수행한다. 이때 프로그래밍 언어는 메모리를 관리하기 위해 변수를 사용한다. 변수(variable)는 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름이다. 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽는다. 자바의 변수는 정의한 타입의 값만 저장할 수 있다.   변수를 사용하려면 변수 선언이 필요한데, 변수 선언은 어떤 타입의 데이터를 저장할 것인지 그리고 변수 이름이 무엇인지를 결정하는 것이다.int age; // 정수 값을 저장하는 age 변수 선언double value; // 실수 값을 저장하는 value 변수 선언 변수 이름은 첫 번째 글..

[이것이 자바다] CHAPTER 01. 자바 시작하기

생략 1.2 운영체제별 JDK 설치1.3 윈도우 환경 변수 설정1.4 맥OS 환경 변수 설정1.5 바이트코드 파일과자바 가상 머신1.6 소스 작성부터 실행까지1.7 이클립스 설치1.8 이클립스 프로젝트 생성1.9 이클립스 소스 작성부터 실행까지      1.1 프로그래밍 언어와 자바 컴퓨터가 이해할 수 있는 기계어(machine launguage)는 0과 1로 이루어진 코드를 사용한다. 따라서 사람이 이해하기에는 매우 어렵다. 그렇기 때문에 사람과 컴퓨터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍 언어가 필요하다.  프로그래밍 언어는 고급 언어와 저급 언어로 구분된다. 고급 언어란 컴퓨터와 대화할 수 있도록 만든 언어 중 사람이 쉽게 이해할 수 있는 언어이다. 고급 언어로 작..