본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 이제 생성한 쓰레드의 객체를 참조하거나 우선순위를 지정하는 것과 같은 쓰레드의 속성 종류와 활용하는 방법을 알아본다. 현재 쓰레드 객체 참좃값 얻어오기 Thread 클래스를 직접 정의하고 객체를 생성해 사용할 때 참조 변수를 이용해 언제든지 쓰레드 객체의 속성(이름 등)을 가져올 수 있다. 하지만 직접 쓰레드 객체를 생성했을 때가 아니라(자바의 쓰레드 풀, main 쓰레드 등) 객체를 생성할 때 참조 변수를 정의하지 않을 경우에는 new Thread().start() 객체를 참조할 수 없게 된다. 이처럼 쓰레드 객체를 참조할 수 없을때 Thread 클래스의 정적 메서드, currentThread()를 이용해 현재 쓰레드 객체의 ..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 프로그램, 프로세스, 쓰레드 프로그램을 작성하다 보면 어쩔 수 없이 동시에 수행해야 하는 일들이 있다. 예시로 비디오 재생 프로그램을 작성시에 화면 재생과 오디오 재생을 동시에 실행해야 하는 것. 여러 개의 작업이 동시에 수행되도록 하기 위해서는 한정된 코어의 수를 갖는 CPU를 여러 개의 작업이 나눠 사용해야 하는데, 이것이 쓰레드다. 프로그램과 프로세스의 개념 프로그램, 프로세스, 쓰레드의 개념을 명확히 알기 위해서는 컴퓨터의 구조를 이해할 필요가 있다. 컴퓨터를 이루는 주요 구성 요소에는 중앙 처리 장치(CPU), 메모리(memory), 하드디스크(hard disk)가 있다. 이 중 CPU는 연산을 수행해 실제 프로그램을 ..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 예외 개발자가 프로그램을 작성하는 과정에서 실수를 하거나 사용자가 잘못된 값을 입력시에 오류가 발생할 수 있다. 이 중 개발자가 해결할 수 있는 오류를 예외(exception)라고 하며, 이러한 예외가 발생했을 때 적절히 처리하는 것을 '예외 처리'라고 한다. 예외와 에러의 차이점 예외는 연산 오류, 숫자 포맷 오류 등과 같이 상황에 따라 개발자가 해결할 수 있는 오류를 말한다. '해결 할 수 있는'의 의미는 오류 자체를 수정할 수 있다는 것이 아닌 오류 발생시에 차선택을 선택하는 것을 말한다. 예외의 최상위 클래스는 Exception 클래스다. 에러는 자바 가상 머신 자체에서 발생하는 오류로 개발자가 해결할 수 없는 오류를 말..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 이너 클래스 클래스 내부에 포함되는 이너 클래스(inner class)는 인스턴스 멤버 이너 클래스, 정적 멤버 이너 클래스, 지역 이너 클래스로 나뉜다. 인스턴스 멤버와 정적 멤버 이너 클래스는 클래스의 멤버인 반면, 지역 이너 클래스는 메서드 내에서 정의하며 지역 변수처럼 해당 메서드 내부에서만 한정적으로 사용되는 클래스다. 인스턴스 멤버 이너 클래스 인스턴스 멤버 이너 클래스는 인스턴스 내부에 멤버의 형태로 존재한다. 이때 자신을 감싸고 있는 아우터 클래스의 모든 접근 지정자의 멤버에 접근할 수 있다. 이너 클래스는 독립적으로 사용할 수 없고, 반드시 아우터 클래스를 이용해야만 사용할 수 있다. class 아우터 클래스 {..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 추상 클래스 추상 메서드(abstract method)는 메서드의 본체가 완성되지 않은 미완성 메서드를 말한다. 메서드의 기능을 정의하는 중괄호 자체가 없으며, 고로 명령어의 끝을 알리는 세미콜론(;)으로 끝나야 한다. 추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상 클래스(abstract class)로 정의되어야 한다. 추상 클래스의 형식 또한 추상 메서드 구문과 비슷하게 class 앞에 abstract를 붙여 표현한다. abstract class A { abstract void abc(); void bcd() { // ... } } 추상 클래스의 특징 추상 클래스는 내부의 미완성 메서드 떄문에 객체를 직접 생성할..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. final 제어자 final 제어자는 필드, 지역 변수, 메세드, 클래스 앞에 위치할 수 있다. 어디에 위치하느냐에 따라 의미가 달라진다. final 변수 final 변수는 한 번 대입된 값을 수정할 수 없다. (상수) class A1 { int a = 3; final int b = 5; } class A2 { int a; final int b = 5; A2 () { b = 7;// final로 선언했기 때문에 대입 불가능 } } final 필드의 초기화는 반드시 생성자에서 진행한다. final 필드도 선언과 값의 대입을 분리해 표기할 수 있지만 생성자에서는 값을 대입해야 한다. 이는 final 필드가 일반 필드와 달리 강제 초..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 이번에는 대표적인 자바의 제어자 중 접근 지정자와 static에 대해서 알아보자 접근 지정자(modifier) 자바 제어자는 클래스, 필드, 메서드, 생성자 등에게 어떠한 특징을 부여하는 문법 요소다. '빨간색 사과', '맛있는 사과'와 같이 클래스나 멤버 등을 꾸며주는 형용사라고 생각하면 된다. 접근 지정자는 자바 제어자의 한 종류로 클래스, 멤버, 생성자 앞에 위치할 수 있고, 사용 범위를 정의하는 역할을 란다. 접근 지정자는 멤버와 생성자 앞에 붙어 있을 때와 클래스 자체에 붙어 있을 때를 나눠 생각해야 한다. 멤버 및 생성자의 접근 지정자 멤버 및 생성자에는 public, protected, default, private..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 패키지 패키지(package)는 비슷한 목적으로 생성된 클래스 파일들을 한 곳에 모아 둔 폴더를 의미한다. 1개의 프로젝트에 1개의 패키지를 생성할 수도 있고, 여러 개의 패키지를 생성할 수도 있다. 패키지를 아예 생성하지 않아도 문법적으로는 전혀 문제가 없다. 패키지의 생성하지 않았을때 package 구문은 포함되지 않는다. 패키지가 있을 때는 소스 코드의 첫 번째 줄에 반드시 package 패키지명이 명시되어 있어야 한다. 패키지 사용으로 얻을 수 있는 장점은 클래스명의 충돌을 방지할 수 있다는 것이다. 일반적으로 협업시에 패키지명에는 회사의 URL주소를 사용하므로 패키지명으로 사용하면 두 회사가 클래스명을 똑같이 만들어도 ..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 참조 자료형의 가장 대표적인 형태는 클래스다. 이번에는 문자열을 저장하는 String 클래스를 알아본다 문자열의 표현과 객체 생성 String 클래스의 객체를 생성하는 데에는 크게 2가지 방법이 존재한다. // 1 String 참조 변수명 = new String("문자열"); String str = new String("안녕"); // 2 String 참조 변수명 = "문자열"; String str = "안녕"; String 클래스의 특징 1) 객체 안의 값을 변경시 새로운 객체를 생성한다 String str1 = new String("안녕"); String str2 = str1; str1 = "안냥하세요"; System.out..
본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다. 자바에서는 8개의 기본 자료형 이외의 모든 자료형은 잠조 자료형이다. 대표적인 참조 자료형에는 배열, 클래스, 인터페이스 등이 있다. 참조 자료형은 개발자의 필요에 의해 얼마든지 정의할 수 있으므로 무한개라 할 수 있다. 배열이란? 배열은 동일한 자료형을 묶어 저장하는 참조 자료형이다. 생성할때 크기를 지정해야 한다. 한 번 크기를 지정하면 크기를 변경할 수 없다. 배열 생성 배열 선언하기 배열을 선언할 때는 2가지 방법으로 선언할 수 있다. 그러나 다른 여러 자료형의 표현과 일관성을 유지하기 위해 자료형 뒤에 표기하는 것을 권장한다. // 1번 방법 (권장) 자료형[] 변수명 int[] a;// int 자료형만 저장가능 dou..