Java를 Java라 15

제 13 장 - 쓰레드(thread) (2)

마음을 다시 잡고 시작해보자... 제발... Java의 정석에서는 Thread의 예제로 요리사, 테이블, 고객의 3class를 활용해서 제공한다. 일단 코드 한 번 봅시다. import java.util.*; public class Dish { public static void main(String[] args) { // TODO Auto-generated method stub Table table = new Table(); new Thread(new Cook(table), "COOK1").start(); new Thread(new Customer(table, "donut"), "CUST1").start(); new Thread(new Customer(table, "burger"), "CUST2").st..

Java를 Java라 2022.03.28

제 13 장 - 쓰레드(thread) (1)

1. 쓰레드, 프로세스, 멀티 쓰레드 1-1. 프로세스와 쓰레드 프로세스 : 실행중인 프로그램. 자원과 쓰레드로 구성 쓰레드 : 프로세스 내에서 실제 작업을 수행. 하나의 프로세스는 적어도 하나 이상의 쓰레드를 가짐. 1-2. 멀티 프로세스 VS 멀티 쓰레드 멀티 태스킹(멀티 프로세싱) : 동시에 여러 프로세스를 실행 하는 것. (Ex: 인터넷 실행하면서 카톡하기) 멀티 쓰레드 : 하나의 프로세스에서 동시에 여러 쓰레드를 실행시키는 것.(Ex: 카톡 다운로드 하면서 카톡하기) 프로세스의 생성 비용 > 쓰레드의 생성 비용 같은 프로세스 내의 쓰레드들은 서로 자원을 공유한다. 1-3. 멀티 쓰레드의 장, 단점 장점 시스템 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다. 작업이 분리..

Java를 Java라 2022.03.21

제 12 장 - 제네릭스, 열거형, 애너테이션 (2)

1. 열거형(enum) 열거형이란? 관련된 상수들을 같이 묶어 놓은 것. 열거형 정의 방법 // enum 열거형이름 { 상수명1, 상수명2, ...} enum Direction { EAST, SOUTH, WEST, NORTH } class Unit { int x, y; // 유닛의 위치 Direction dir; void init() { dir = Direction.EAST; } } Unit unit = new Unit(); unit.init(); System.out.println(unit.dir); // => EAST 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다 Class getDeclaringClass() : 열거형의 Class객체를 반환한다 String name() : 열거형 상수..

Java를 Java라 2022.03.04

제 12 장 - 제네릭스, 열거형, 애너테이션 (1)

오늘은 제네릭스에 대해서 다시 한 번 봤지만, 역시나 새롭다 새로워... 1. 제네릭스(Generics)란? 컴파일시 타입을 체크해 주는 기능 객체의 타입 안전성을 높이고 형변환의 번거로움을 줄여줌 2. 제네릭 클래스의 선언 class Box { Object item; void setItem(Object item) { this.item = item; } Object getItem() { return item; } } // 위의 Box 클래스가 제네릭 클래스로 바뀌면 class Box { T item; void setItem(T item) { this.item = item; } T getItem() { return item; } } // 같이 바뀐다. 3. 제네릭스의 제약 사항 static 멤버에는 타입 ..

Java를 Java라 2022.03.03

제 11 장 - 컬렉션 프레임 워크

ArrayList : 배열 기반. 데이터의 추가와 삭제에 불리. 순차적인 추가/삭제는 제일 빠름. 임의의 요소에 대한 접근성이 뛰어남 LinkedList : 연결기반. 데이터의 추가와 삭제에 유리. 임의의 요소에 대한 접근성이 좋지 않다 HashMap : 배열과 연결이 결합된 상태. 추가, 삭제, 검색, 접근성이 모두 뛰어남. 검색에는 최고의 성능을 보인다 TreeMap : 연결기반. 정렬과 검색 (특히 범위검색)에 적합. 검색성능은 HashMap 보다 떨어짐 Stack : Vector를 상속받아 구현 (LIFO) Queue : LinkedList가 Queue 인터페이스를 구현 (FIFO) Properties : HashTable을 상속받아 구현 (String, String) HashSet : HashM..

Java를 Java라 2022.03.02

제 9 장 - java.lang 패키지

java.lang에 있는 자주 쓰고 유용한 클래스와, 클래스 내 포함된 함수들을 소개 한다. 일단 정리는 해보지만 함수 이름만으로도 기능을 추론할 수 있어 추가적인 내용은 적지 않는다. 1. Object 클래스 equals (Object object) hashCode() toString() getClass() 2. String 클래스 빈 문자열 (empty string) 문자열과 기본형간의 변환 3. StringBuffer 클래스 StringBuffer 클래스 특징 내용 변경 가능 String클래스와 달리 equals()를 오버라이딩 하지 않음 4. Math & Wrapper 클래스 Math 클래스 Wrapper 클래스 Number 클래스 자주 쓰는 만큼 5번정도 검색하면 어떻게 쓰이는지, 어디에 쓰이는..

Java를 Java라 2022.03.02

제 8 장 - 예외처리

1. 프로그램 오류의 종류 컴파일 에러 : 컴파일 할 때 발생하는 에러 런타임 에러 : 실행할 떄 발생하는 에러 논리적 에러 : 의도와 다르게 동작 (실행시) 2. 예외처리의 정의와 목적 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 목적 : 프로그램의 비정상적인 종료를 막고, 정상적인 실행상태를 유지 3. 예외처리 구문 try { // 예외 발생 가능 문장 -> 예외가 발생하면 catch문 중 // 일치하는 블럭을 찾아 블럭 내 문장 처리 } catch (Exception e1) { // 해당 예외 발생 시 처리 문장 } catch (Exception e2) { // 해당 예외 발생 시 처리 문장 } 4. try-catch문 흐름 try 블록에서 예외 발생 catc..

Java를 Java라 2022.03.02

제 7 장 - 객체지향개념 2

1. 상속 상속이란? 기존의 클래스를 재사용해서 새로운 클래스를 만드는 것 자손은 조상의 모든 멤버를 상속받는다(생성자, 초기화 블럭 제외) 자손의 멤버 개수는 조상보다 적을 수 없다. class B {} class A extends B {} 클래스 간의 관계 상속 class Parent {} class Child extends Parent {} class Child2 extends Parent {} class GrandChild extends Child {} 포함 : 클래스 내 멤버변수로 다른 클래스를 선언 상속 VS 포함 : 'is-a'(상속)와 'has-a'(포함)로 구분 (Ex : 원은 점이다 / 원은 점을 가지고 있다) class Point { int x; int y; } class Circle..

Java를 Java라 2022.02.28

제 6 장 - 객체지향 개념

객체 지향 언어의 특성 기존 프로그래밍 언어와 크게 다르지 않다 코드의 재사용성이 높다 코드의 관리가 쉬워졌다 신뢰성 높은 프로그램의 개발이 가능 클래스와 객채 클래스 : 객체를 정의해놓은 것. 객체를 생성하는데 쓰임 (Ex : TV 설계도, 붕어빵 기계 등) 객체 : 실제 존재하는 것. 사물 또는 개념. 속성과 기능에 따라 용도가 다름 (Ex : TV, 붕어빵) 객체의 구성요소 : 속성(변수), 기능(메서드) 클래스로부터 객체(인스턴스)를 생성하는 것을 '인스턴스화'라고 함. 데이터 저장 개념의 발전 과정 3. 변수와 메서드 선언 위치에 따른 변수의 종류 인스턴스 변수 (멤버변수) 각 인스턴스의 개별적인 저장 공간. 인스턴스마다 다른 값 저장 인스턴스 생성 후 참조변수명.인스턴스변수명 으로 접근 인스턴..

Java를 Java라 2022.02.28