java programming pdf

136
현업개발자의 실무 멘토링 JAVA 입문 [email protected] 131025금요일

Upload: ji-hoon-lee

Post on 10-Jun-2015

2.443 views

Category:

Education


8 download

DESCRIPTION

현업개발자 실무멘토링 자바 입문 교재 파일입니다. http://javalecturekr.tistory.com/ http://www.youtube.com/javalecturekr/

TRANSCRIPT

Page 1: Java programming pdf

현업개발자의 실무 멘토링

JAVA 입문[email protected]

13년 10월 25일 금요일

Page 2: Java programming pdf

목차

• 자바 시작하기

• 자바의 자료형

• 자바의 연산자

• 자바의 제어문

• 기본적인 객체지향 이야기

• 클래스와 객체

• 인터페이스와 상속

• String과 Number

• Date와 Format

• 정규식과 플랫폼 환경

13년 10월 25일 금요일

Page 3: Java programming pdf

목차(계속)

• 제네릭과 어노테이션

• 자바 콜렉션 프레임워크

• 예외 처리 클래스

• 쓰레드

• 기본 IO와 파일IO

• 네트워크 다루기

• JDBC

• 스윙 프로그래밍

• XML 다루기

13년 10월 25일 금요일

Page 4: Java programming pdf

자바 시작하기

13년 10월 25일 금요일

Page 5: Java programming pdf

자바 이야기• 1991년 제임스 고슬링이 자바 프로젝트를 시작 자바 프로젝트의 결과물로서 1995년 자바1.0 탄생, Write Once, Run Anywhere

• Java SE, Java EE, Java ME

• Java 프로그램 실행 방법

13년 10월 25일 금요일

Page 6: Java programming pdf

자바로 할 수 있는 일• 웹 • Android • 기타

13년 10월 25일 금요일

Page 7: Java programming pdf

자바 설치 및 프로그램 작성

• JDK 설치

• 자바 환경설정 방법

• HelloWorld.java 작성

• 이클립스를 이용한 HelloWorld.java 작성

13년 10월 25일 금요일

Page 8: Java programming pdf

자바의 자료형

13년 10월 25일 금요일

Page 9: Java programming pdf

변수와 자료형• 변수는 값을 공간

• 변수를 선언하는 방법 : 변수타입 변수명

예) int count, boolean check

변수명에 사용가능한 문자 : 문자, 숫자, $, _ 실무에서는 문자와 숫자를 주로 사용

예약어는 사용 금지 : class, boolean, byte, public, private, int ....

13년 10월 25일 금요일

Page 10: Java programming pdf

기본 자료형(Primitive Type)

• 숫자 자료형

byte : -128에서 127 까지

short : -32,768 에서 32,767 까지int : -2,147,483,648 부터 2,147,483,647

long : -9,223,372,036,854,775,808 부터 9,223,372,036,854,775,807

float : 3.4e-038에서 3.4e+038

double : double 타입은 많은 계산에서 큰 값의 정밀도를 유지 해야할 경우에 사용

13년 10월 25일 금요일

Page 11: Java programming pdf

문자 및 논리 자료형

• 자바의 문자는 16비트 유니코드 문자로 표현 되고 '\u0000'에서 '\uffff'까지 표현

• 자바의 논리 자료형은 true와 false로 값을 표현

13년 10월 25일 금요일

Page 12: Java programming pdf

상수• 프로그램 내에서 값이 변하지 않는 변수

• 상수 선언 방법 : final 자료형 상수명 = 값;

예) final int COUNT = 1;

13년 10월 25일 금요일

Page 13: Java programming pdf

배열• 배열의 정의 : 동일한 타입의 값을 고정된 갯수로 저장할 수 있는 구조체

• 배열의 구조 :

13년 10월 25일 금요일

Page 14: Java programming pdf

배열(계속)

• 배열의 생성 : char[] test = new char[12];

• 배열의 생성과 초기화 : char[] charArray = {‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’};

• 다차원 배열 : char[][] multiChar = new char[4][4];

13년 10월 25일 금요일

Page 15: Java programming pdf

형변환• 형변환의 정의 : 기본자료형 간의 자료형이 변환 되는 것을 의미한다.

• 형변환의 예 : int형이 short형으로 int형이 String으로 형변환이 발생, 실무에서는 String과 기본자료형간의 형변환이 주로 사용된다.

• Integer.parseInt, Double.ParseDouble, Integer.toString, Double.toString

13년 10월 25일 금요일

Page 16: Java programming pdf

자바의 연산자와 수식구문

13년 10월 25일 금요일

Page 17: Java programming pdf

산술 및 단항 연산자

• 산술 연산자 : + , - , *, /, %

• 단항 연산자 : ++, -- , + , -

• 할당 연산자 : =, op=

• 비교 연산자 : ==, !=, > , >= , <, <=

• 논리 연산자 : &&, ||

13년 10월 25일 금요일

Page 18: Java programming pdf

수식과 구문• 수식은 변수와 연산자 그리고 메소드 호출로 이루어져 있다.

• 구문은 수식의 조합이다. 구문은 세미콜론(;) 으로 구분된다.

예) System.out.println( 1 + 2 + 3 );

수식 : 1 + 2 + 3

13년 10월 25일 금요일

Page 19: Java programming pdf

자바의 제어문

13년 10월 25일 금요일

Page 20: Java programming pdf

조건문• if-else

예) if(조건문){ 구문; }else if(조건문){ 구문; }else(조건문){ 구문; }

• switch문

예) swith(조건문){ case 값1: 구문; case 값2: 구문; default: 구문 }

13년 10월 25일 금요일

Page 21: Java programming pdf

반복문• for문과 향상된 for 문

예) for(초기값;끝값;조건){ 구문;

}

for(타입 var: 배열){

....

}

• while반복문

예) while(조건){ ...

}

do-while반복문

예) do{ ...

}while(조건)

13년 10월 25일 금요일

Page 22: Java programming pdf

제어문에서 분기• Label없는 break

예) for(;;){

break;

}

• Label있는 break

예) Label: for(;;){

break Label;

}

• Label없는 continue

예)for(;;){

continue;

}

• Label있는 continue

예) Label: for(;;){

continue Label;

}

13년 10월 25일 금요일

Page 23: Java programming pdf

제어문의 분기(계속)

• return 문은 현재의 메서드를 종료할 수 있게 한다.

• return 문은 값을 반환할 수 있다.

예) 반환될자료형 메서드명(매개변수...){

return 반환값;

}

13년 10월 25일 금요일

Page 24: Java programming pdf

기본적인 객체지향 이야기

13년 10월 25일 금요일

Page 25: Java programming pdf

객체지향의 역사

• 1960년대 MIT에서 처음 만들어졌고 최초의 객체지향언어는 Simula임

• 1970년대 Xerox에서 Smalltalk 언어를 개발

• 1980년대 Eiffel이 순수 객체지향을 표방

• 1990년대 C++과 Dephi가 대중에게 인정받아 널리 사용

13년 10월 25일 금요일

Page 26: Java programming pdf

객체지향의 개념과 구성요소

• 객체지향의 개념은 언어를 빗대어 설명하자면 명사와 동사로 구성되어 있다.

• 명사 : 변수 또는 상수[상태를 나타냄]

• 동사 : 메서드[행위를 나타냄]

• 핵심 개념 : 객체, 상속, 인터페이스

13년 10월 25일 금요일

Page 27: Java programming pdf

객체• 객체는 현실 세계의 사물을 프로그래밍 상에 모델링하였다.

• 객체(Object) = 상태(명사) + 행위(동사)

• 절차지향 프로그래밍언어에서는 상태와 행위를 구분하지 않고 사용

예) 자동차를 객체로 묘사

상태 : 색, 엔진, 차종, 브레이크 타입 등

행위 : 현재 속도, 현재 rpm 등13년 10월 25일 금요일

Page 28: Java programming pdf

클래스(class)

• 클래스는 객체를 만들어 내는 설계도 또는 청사진 또는 틀

예) 클래스 : 도요타86의 설계도

객체 : A씨의 도요타86, B씨의 도요타86 등

13년 10월 25일 금요일

Page 29: Java programming pdf

상속(extends)

• 상속은 다음 세대에게 현 세대의 특징을 물려주는 행위를 말한다.

• 객체지향 언어에서 상속은 현재 클래스의 속성을 자식 클래스에게 물려주는 것을 말한다.

13년 10월 25일 금요일

Page 30: Java programming pdf

인터페이스(interface)

• 인터페이스는 사전적 의미로 상호작용하다라는 의미를 가지고 있음

• 외부에 내부를 직접 개방하지 않고 인터페이스를 통해서 내부의 기능을 간접 사용할 수 있도록 하는 기능

1. 바이오스 전원공급2. 하드 전원공급3. 메모리 전원공급4. 바이오스 부팅5. ....

13년 10월 25일 금요일

Page 31: Java programming pdf

패키지(package)• 패키지는 클래스나 인터페이스를 묶어주는 워크스페이스 역할을 한다.

• 패키지를 이용하면 인터페이스, 클래스를 묶어서 모듈로 묶어 줄 수 있다.

예) 패키지 선언방법package com.pizzastudio;class Test.. { ...}

13년 10월 25일 금요일

Page 32: Java programming pdf

클래스와 객체

13년 10월 25일 금요일

Page 33: Java programming pdf

클래스 정의class 키워드와 {, } 를 사용하여 몸체를 지정몸체에는 필드, 생성자, 메서드를 정의클래스명은 문자로 시작, 문자와 숫자만 사용예)public class 클래스명{필드선언;생성자선언;메서드선언;

}

13년 10월 25일 금요일

Page 34: Java programming pdf

상속과 인터페이스를 통한 클래스 정의

class 클래스명 extends 부모클래스명

implements 인터페이스명{

필드 정의;

생성자 정의;

메서드 정의;

}

13년 10월 25일 금요일

Page 35: Java programming pdf

클래스 정의(변수선언)

변수선언방법:접근제어자 변수타입 변수명 = 값;변수 선언위치 : public class VariableTest{ private int count; // 멤버 변수 private static int sum; // 클래스 변수 public int sumCount(){ private int sum = 0; // 로컬 변수 sum = sum + count; return sum; }}

13년 10월 25일 금요일

Page 36: Java programming pdf

클래스의 정의(메서드 정의)

• 메서드 정의 방법접근제어자 반환타입 메서드명(변수타입 변수명, ...) {

... return 반환값;}사용예public void sum(int x, int y){ return x + y;}

13년 10월 25일 금요일

Page 37: Java programming pdf

클래스 정의(생성자)

• 생성자 정의 방법

public 클래스명(매개변수타입 매개변수,...){

}

• 생성자 생성 및 사용예

public Notebook(int cpu, int memory){

}

Notebook mybook = new Notebook();

13년 10월 25일 금요일

Page 38: Java programming pdf

메서드에 값 전달 방법• 값에 의한 전달

void callVal(int p)

callVal(1);

• 참조에 의한 전달

void callRef(String a)

callRef("value");

13년 10월 25일 금요일

Page 39: Java programming pdf

객체의 기본• 객체의 생성

Computer my = new Computer(1);

1. 선언 : Computer my

2. 생성 : new Computer

3. 초기화 : Computer(1)

4. 할당 : my = new Computer(1);

13년 10월 25일 금요일

Page 40: Java programming pdf

객체의 기본(계속)

• 객체의 사용방법

생성된객체명.필드명 : d1.name, new Computer().name

메서드 호출방법

생성된객체명.메서드명(인자) : my.getCpu();

13년 10월 25일 금요일

Page 41: Java programming pdf

this

• this는 생성된 객체 자신을 가리키는 자바의 키워드

• this.필드명 또는 this.메서드명으로 필드와 메서드 호출

• this(인자...)로 객체 자신의 생성자를 호출할 수 있음

13년 10월 25일 금요일

Page 42: Java programming pdf

접근제어자

접근제어자 class package 하위클래스 전역

public 가능 가능 가능 가능

지정안함 가능 가능 불가능 불가능

protected 가능 가능 가능 불가능

private 가능 불가능 불가능 불가능

13년 10월 25일 금요일

Page 43: Java programming pdf

클래스 변수/메서드

• 클래스 변수와 클래스 메서드는 클래스에서 생성된 모든 객체에서 호출되어도 동일한 값 동일한 결과를 반환하는 메서드이다.

• 클래스 변수/메서드 정의 방법 : static int COUNT; static void parseInt();

• 클래스 변수/메서드 사용 방법 : Integer.COUNT, Integer.parseInt();

13년 10월 25일 금요일

Page 44: Java programming pdf

중첩클래스

• 중첩 클래스 정의 : 클래스 내에 클래스를 정의, 논리적으로 로직을 그룹핑할 목적 또는 정보 은닉의 목적으로 사용됨

• 종류 : 이너 클래스, 로컬 클래스, 익명 클래스

13년 10월 25일 금요일

Page 45: Java programming pdf

이너 클래스• 이너클래스는 클래스 내, 메서드 바깥에 선언되는 클래스이고 바깥 클래스 객체 생성 시에 동시에 생성된다.

• 예)class OuterClass{ class InnerClass{ ... } ...}

13년 10월 25일 금요일

Page 46: Java programming pdf

로컬 클래스• 클래스 내부의 특정 블럭(메서드나 블럭) 내에 선언되는 클래스

• 사용예)public class Member{ ... public void validJuminNo(){ class JuminNo{ ... } return new JuminNo(); }

13년 10월 25일 금요일

Page 47: Java programming pdf

익명 클래스• 익명 클래스는 선언장소는 로컬클래스와 동일하나 클래스의 이름을 사용하지 않는다.

• 사용예)public class Hanger{ ... public void print(){ ... Clothes shirths = new Clothes(){ public void printColor(){ ... } } }

13년 10월 25일 금요일

Page 48: Java programming pdf

Enum 타입

• Enum 타입은 사전에 정의된 상수의 집합과 같다. Enum을 주로 사용하는 곳은 주, 방위, 색 배열과 같은 일련의 상수 집합을 사용하는 곳이다.

• 사용예)public enum Color{ RED, ORAGNE, YELLOW, BLUE, PURPLE}

Color.RED, Color.ORANGE

13년 10월 25일 금요일

Page 49: Java programming pdf

인터페이스와 상속

13년 10월 25일 금요일

Page 50: Java programming pdf

인터페이스의 정의• 자바에서 인터페이스를 정의하기 위해서는

interface 키워드를 사용하여 선언해야 한고 메서드 내용을 정의하지 말아야 한다.

• 사용예)

public interface Figure{

public String getName();

public double getArea();

}

13년 10월 25일 금요일

Page 51: Java programming pdf

인터페이스 구현• 자바에서 인터페이스를 구현하기 위해서는 구현할 클래스에서 implements 키워드로 인터페이스를 구현해야 한다.

사용예)

public class Triangle implements Figure{

...

public String getName() { ... }

public dboule getArea() { ... }

13년 10월 25일 금요일

Page 52: Java programming pdf

인터페이스의 사용

• 인터페이스를 구현한 객체들은 인터페이스 타입의 변수에 할당될 수 있다.

• 사용예)

Figure a = new Triangle();

a.getArea();

13년 10월 25일 금요일

Page 53: Java programming pdf

상속

• 상속은 부모 클래스의 속성을 자식클래스에 물려줄 수 있는 방법을 제공한다.

• 자바의 모든 클래스는 java.lang.Object 클래스를 상속받고 있다.

• 사용예)

public class Bmw320d extends Car{

....

13년 10월 25일 금요일

Page 54: Java programming pdf

오버라이딩(Overriding)

• 자식 클래스는 부모 클래스의 메서드를 재정의하여 사용할 수 있다. 이를 오버라이딩(overriding) 이라고 부른다.

• 사용예public class Bmw320d extends Car{

@Override

public void printCarName(){ ...

13년 10월 25일 금요일

Page 55: Java programming pdf

다형성(polymorphism)

• 사전적 정의 : 같은 종에서 개체가 형태와 형질등에 대해 다양성을 나타내는 상태

• 자바에서의 의미 : 동일한 부모 클래스를 상속받은 자식클래스들에서 부모에게 물려받은 공통 속성이외에 자식클래스만의 다양한 특성을 만들 수 있다.

13년 10월 25일 금요일

Page 56: Java programming pdf

super

• 자식 객체에서 부모 객체에 접근하기 위해서 사용되는 키워드

• 부모 객채 셍성자/메서드 호출 방법

super(인자1, 인자2, ...)

super.메서드이름(인자1, 인자2, ...)

super(speed, gearType, engineType..)

super.print();

13년 10월 25일 금요일

Page 57: Java programming pdf

추상클래스와 메서드

• abstract 키워드를 이용하여 선언하며 추상 클래스의 일부 클래스는 몸체를 구현할 수도 있고, 인터페이스 처럼 메서드 선언만 할 수도 있다.

• 추상 클래스를 상속받은 클래스에서 선언받은 클래스를 구현하면 된다.

public abstract class Parent{ abstract void print();

13년 10월 25일 금요일

Page 58: Java programming pdf

Number와 String

13년 10월 25일 금요일

Page 59: Java programming pdf

Number클래스• Boolean, Byte, Character, Float, Integer, Long,

Short

• System.out.format("%10.2f%n", pi); // ‘ 3.14’

• System.out.println(format("$###,###,###",number)); // $1,234,567,890

• 오토박싱과 언박싱int a = 1;Integer b = 10; // 오토박싱System.out.println(b.equals(a)); // 언박싱

13년 10월 25일 금요일

Page 60: Java programming pdf

String 클래스

• String 클래스는 문자열을 처리할 수 있는 클래스

• 실무에서 가장 많이 사용되는 클래스

메서드

length

indexOf

substring

replace

13년 10월 25일 금요일

Page 61: Java programming pdf

StringBuilder 클래스• StringBuilder(CharSequence cs),

StringBuilder(int capacity), StringBuilder(String s)

• append

• insert

• delete

• replace

13년 10월 25일 금요일

Page 62: Java programming pdf

Date와 Time 다루기

13년 10월 25일 금요일

Page 63: Java programming pdf

java.util.Calendar 클래스

• Calendar 클래스는 시간과 년(YEAR), 월(MONTH), 일(DAY_OF_MONTH), 시간(HOUR) 등의 날짜 시간관련 데이터를 다루기 위한 추상 클래스이다. 이 클래스에서 표현 되는 시간은 GMT 기준으로 1970년 1월 1일 00시 00분 00초 이후의 시간을 밀리세컨드 단위의 숫자로 표현될 수 있다.

• Calendar calendar = new GregorianCalendar(2013,4,20);

13년 10월 25일 금요일

Page 64: Java programming pdf

날짜 포멧• DateFormat 클래스

// Locale KOREANformatter = DateFormat.getDateInstance(...);today = new Date();dayStr = formatter.format(today);System.out.println(dayStr);

13년 10월 25일 금요일

Page 65: Java programming pdf

날짜 포멧(계속)

• SimpleDateFormat

String pattern = "서기 yyyy년 MM월 dd일 HH시 mm분 ss초 ";SimpleDateFormat formatter = new SimpleDateFormat(pattern, Locale.KOREA);String todayStr = formatter.format(today);

13년 10월 25일 금요일

Page 66: Java programming pdf

정규식과 플랫폼 환경

13년 10월 25일 금요일

Page 67: Java programming pdf

정규식• 정규식(Regular Expression)은 문자열에서 특정 단어, 특정 문자의 패턴과 일치하는 문자열을 찾는 방법을 제공하는 특정 패턴이다.

• 패턴 종류[abc] : a 또는 b 또는 C가 있는 문자열[^abc] : a, b, c 가 없는 문자열[a-zA-Z] : a부터 z, A부터 Z가 있는 문자

열[a-d[m-p]] : a부터 d 또는 m부터 p[a-z&&[def]] : d, e, f 문자

13년 10월 25일 금요일

Page 68: Java programming pdf

정규식(계속)

• 미리 정의된 패턴. : 모든 문자\d : 숫자\D : 숫자가 아닌 문자\s : 공백문자\S : 공백이 아닌 문자\w : 알파벳과 숫자\W : 알파벳과 숫자가 아닌 문자

13년 10월 25일 금요일

Page 69: Java programming pdf

정규식(계속)

• 수량자(정량자)

X? : X값이 한번 또는 나타나지 않음X* : X값이 0번 이상 나타남X+ : X값이 1번 이상 나타남X{n} : X값이 n번 이상 나타남X{n,} : X값이 최소 n 번 이상 나타남X{n,m} : x값이 최소 n번에서 m번까지

나타남

13년 10월 25일 금요일

Page 70: Java programming pdf

정규식(계속)

• 정규식 사용방법

Pattern p = Pattern.compile("a*b");

Matcher m = p.matcher("aaaaab");

boolean b = m.matches();

13년 10월 25일 금요일

Page 71: Java programming pdf

Properties 파일

• Properties 파일은 키와 값 쌍으로 구성되어있다. log.dir=/log/application_log와 같이 log.dir이 키(key)이고 /log/application_log가 값이다.

• 자바에서는 Properties 객체를 제공한다.prop = new Properties();prop.load(getClass().getResourceAsStream("./default.properties"));

13년 10월 25일 금요일

Page 72: Java programming pdf

자바의 환경변수

• OS에서는 환경변수를 Properties와 동일한 방식으로 보관하고 있다.

• System.getenv() 메서드는 JVM의 환경변수 Map 형식으로 반환한다.

13년 10월 25일 금요일

Page 73: Java programming pdf

제네릭과 어노테이션

13년 10월 25일 금요일

Page 74: Java programming pdf

제네릭

• 제네릭(Generic)은 파라미터의 형식을 미리 정의하는 것이다.

• class 클래스명 <T1, T2, ... Tn>{ ... }

• 타입파라미터 : T(Type), K(Key), N(Number), E(Element), V(Value), 기타

• Type<String> a = new Type<String>();

• 제네릭 메서드

13년 10월 25일 금요일

Page 75: Java programming pdf

타입 추론과 타입추론• 자바 컴파일러는 메서드 호출 시, 객체 생성 시에 제네릭 타입을 유추할 수 있다. 추론 알고리즘은 인자의 타입이나 호출 결과로 반환 되는 값에 의해 결정된다.

• 예)public class JukeBox<T extends Number> { ... }

JukeBoxDemo.addJukeBox(new Integer(10), list);

13년 10월 25일 금요일

Page 76: Java programming pdf

와일드 카드

• 제네릭 코드에서 명시적으로 어떠한 타입의 객체가 들어오는지 모를 경우, ? 기호를 사용하

구분 형태 사용하는 곳

상한와일드카드 <? extends T> 써야하는 곳

하한와일드카드 <? super T> 읽어야 하는 곳

무제한와일드카드 <?> 쓰거나 읽어야 하는 곳

13년 10월 25일 금요일

Page 77: Java programming pdf

어노테이션

• 어노테이션은 프로그램에 대한 메타데이터를 제공하는 역할을 한다. 하지만 프로그램의 코드로서 동작하지는 않는다.

• 선언 : public @interface Description {

• 사용 : @Description( ... ) public class TestAnnotation {

13년 10월 25일 금요일

Page 78: Java programming pdf

콜렉션프레임워크

13년 10월 25일 금요일

Page 79: Java programming pdf

콜렉션 프레임워크

13년 10월 25일 금요일

Page 80: Java programming pdf

Set

• 정의 : 인터페이스이고 자료를 중복해서 저장할 수 없는 목록

• 주요 클래스 : TreeSet, HashSet, LinkedHashSet

• Collection<Type> list = new HashSet<Type>();

• 주요 메서드 : add, remove, set, get

13년 10월 25일 금요일

Page 81: Java programming pdf

List

• 정의 : 인터페이스이며 중복된 자료를 저장하는 목록

• 주요 클래스 : ArrayList, LinkedList

• List<String> list = new ArrayList<String>();

• 주요 메서드 : get, set, add, remove, indexOf

13년 10월 25일 금요일

Page 82: Java programming pdf

Queue

• 정의 : 선입선출 구조의 자료구조를 제공

• 주요 클래스 : LinkedList

• Queue<String> linkedQueue = new LinkedList<String>();

• 주요 메서드 : element, add, peek, poll, offer

13년 10월 25일 금요일

Page 83: Java programming pdf

Deque

• 정의 : queue 자료구조는 한 쪽에서만 입력이 되고 다른 한 쪽에서는 출력만 되는 구조인 반면에 deque는 양쪽에서 모두 입출력이 가능한 구조이다.

• 주요 클래스 : ArrayDeque, LinkedBlockingDeque

• 주요 메서드 : addFirst, addLast, pollLast,pollFirst, peekFirst, peekLast

13년 10월 25일 금요일

Page 84: Java programming pdf

Map

• 정의 : 키와 값으로 이루어진 자료구조

• 주요 클래스 : HashMap, TreeMap, LinkedHashMap

• 주요 메서드 : put, get, remove, size, keySet, containKey

13년 10월 25일 금요일

Page 85: Java programming pdf

예외처리 방법

13년 10월 25일 금요일

Page 86: Java programming pdf

예외• 컴파일 또는 프로그램 실행 도중에 예상치 못한 데이터가 유입되거나 문제가 발생할 경우에 발생하는 이벤트

• 예외(Exception)객체에 에러가 발생했을 때 상태와 정보가 저장된다.

• 예외가 발생하면 시스템에서 예외를 던진다.

• 예외를 처리할 수 있도록 예외를 잡아야 한다.

13년 10월 25일 금요일

Page 87: Java programming pdf

예외 처리방법try{ // 예외가 발생할 것 같은 구문}catch(Exception1 e1){ // e1라는 이름을 가진 Exception1 객체}catch(Exception2 e2){ // e2라는 이름을 가진 Exception2 객체}finally{ // finally 내의 괄호 구문은 무조건 실행 된다. }

13년 10월 25일 금요일

Page 88: Java programming pdf

예외 클래스

모든 예외 클래스는 Exception 클래스를 상속받고 있다. Exception 클래스에서는 getMessage, printStackTrace, toString 메서드 제공

13년 10월 25일 금요일

Page 89: Java programming pdf

예외 던지기public void execute() throws IOException {...}public void execute(List<String> list){ if(list == null){ throw new ListException(); }...}

13년 10월 25일 금요일

Page 90: Java programming pdf

try-resourceAutoCloseable를 구현한 클래스에 한하여 사용

자동으로 리소스를 반환해준다.

try(BufferedReader in = new BufferedReader(new FileReader("foo.in"))){

System.out.println(in.readLine());

}catch(Exception e){ }

13년 10월 25일 금요일

Page 91: Java programming pdf

사용자 정의 예외

• 사용자 정의 예외를 만들기 위해서 Throwable을 상속받은 Exception 및 하위 클래스를 상속받아 만듬

• 예)public class ListException extends RuntimeException { ... }

13년 10월 25일 금요일

Page 92: Java programming pdf

쓰레드

13년 10월 25일 금요일

Page 93: Java programming pdf

프로세스와 쓰레드

• 프로세스 : 독립적인 자원을 가지고 하나의 독립된 실행단위. 프로세스는 별도의 메모리 공간을 가지고 있다.

• 쓰레드 : 경량 프로세스라고 부르며 별도의 자원과 메모리 공간을 가지고 있다. 하나의 프로세스는 하나의 쓰레드를 가지고 있다.

13년 10월 25일 금요일

Page 94: Java programming pdf

쓰레드 생성

• Runnable 인터페이스로 쓰레드 구현

• Thread 클래스를 상속받아 쓰레드 구현

• Thread 클래스의 주요 메서드

interrupt() : 쓰레드의 중단

join() : 쓰레드의 대기

13년 10월 25일 금요일

Page 95: Java programming pdf

동기화 문제1. 쓰레드 A : C 변수를 조회한다. => 0 값을 얻는다.

2. 쓰레드 B : C 변수를 조회한다. => 0 값을 얻는다.

3. 쓰레드 A : C 변수에 1을 추가한다 => C 변수에는 1이 들어있다.

4. 쓰레드 B : C 변수에 1을 뺀다 => C 변수에는 0이 들어있다.

5. 쓰레드 A : C 변수를 조회한다. => 쓰레드 A는 0을 얻는다.

13년 10월 25일 금요일

Page 96: Java programming pdf

synchronized와 기본락• 쓰레드 간의 간섭과 메모리 불일치 문제 해결을 위해 synchronized 구문과 메서드를 제공

• public synchronized void increment() {...}

• 자바의 모든 객체는 Lock을 가지고 있다. 이를 모니터락 또는 모니터라고 부른다.

• 쓰레드에서 객체에 접근하려고 할 때 객체의 모니터락을 획득한 뒤에 객체에 접근한다.

13년 10월 25일 금요일

Page 97: Java programming pdf

교착상태,기아상태• 교착상태(DeadLock)은 두 개 이상의 쓰레드가 서로 끝나기를 기다리고 있는 상태

• 기아상태(Starvation)는 다수의 쓰레드가 하나의 자원을 공유할때 하나의 쓰레드가 자원을 점유하고 놔주지 않는 상태

• synchronized 를 이용해서 자원을 동기화할 때 위의 상태에 빠지지 않도록 조심해야함

13년 10월 25일 금요일

Page 98: Java programming pdf

lock관리

• synchronized(Object)

• notify

• notifyAll

• wait

13년 10월 25일 금요일

Page 99: Java programming pdf

java.util.concurrent

• ReentrantLock

• ExecutorService

Threadpooling

Thread 생성 및 실행

BlockingQueue, ConcurrentHashMap

13년 10월 25일 금요일

Page 100: Java programming pdf

기본 I/O와 파일 I/O

13년 10월 25일 금요일

Page 101: Java programming pdf

기본 I/O

• 입력 스트림 : 소스에서 데이터를 순차적으로 읽는 것

• 출력 스트림 : 대상에 데이터를 순차적으로 쓰는 것

13년 10월 25일 금요일

Page 102: Java programming pdf

바이트,캐릭터,버퍼스트림

• 바이트 스트림 : 8 바이트 단위로 입/출력하는 스트림, FileInputStream, FileOutputStream

• 캐릭터 스트림 : 문자형 데이터타입을 지원하는 스트림, 캐릭터 셋을 설정해야함, FileReader, FileWriter

• 버퍼 스트림 : 버퍼를 가진 스트림, BufferReader, BufferWriter, BufferedInputStream, BufferedOutputStream

13년 10월 25일 금요일

Page 103: Java programming pdf

콘솔출력 및 포멧팅

• Console console = System.console();

• System.out.format(“ 3 x 4 는 %d 이다”, i);

• %[인자번호$][플래그][폭][.정밀도]유형

• System.out.format("%1$+20.5f %n",Math.PI); -> " +3.14159"

13년 10월 25일 금요일

Page 104: Java programming pdf

데이터, 객체 스트림

• 데이터 스트림은 String 타입의 데이터뿐만 아니라 기본형 타입의 값도 다룰 수 있다. DataInputStream, DataOutputStream

• 객체 스트림은 파일 또는 네트워크에 객체를 저장할 수 있는 I/O를 제공해준다. ObjectInputStream, ObjectOutputStream

• 직렬화(serialization)는 객체를 저장하기 위해서 복원가능한 형태의 스트림으로 저장하는 행위를 말한다.

13년 10월 25일 금요일

Page 105: Java programming pdf

nio.Path클래스• Path 클래스는 디렉토리와 파일 경로에 대한 정보를 담고 있다.

• Path p = Paths.get("/Users/system")

• p.getName() : Users

• p.toString() : /Users/system

• p.getNameCount() : 3

• p.subPath(0,1) : Users

13년 10월 25일 금요일

Page 106: Java programming pdf

디렉토리와 파일 다루기

• Files 클래스는 파일과 디렉토리를 다루는데 유용한 메서드를 제공해주고 있다.

• Files.exists, Files.notExists, Files.isWritable, Files.isExecutable, Files.isSameFile

• Files.copy, Files.move, Files.readAttribute, Files.getFileStore

• Files.createDirectories, Files.newDirectoryStream

13년 10월 25일 금요일

Page 107: Java programming pdf

파일에 읽고 쓰기

• Files.readAllBytes, Files.readAllLines, Files.write

• Files.newBufferedWriter, Files.newBufferedReader

• SeekableByteChannel s = Files.newByteChannel(...)

13년 10월 25일 금요일

Page 108: Java programming pdf

FileVisitor• FileVisitor는 특정 조건에 맞는 파일 또는 디렉토리를 추출할 수 있게 해준다.

• visitFile : 디렉토리 내의 파일이 호출 되었을 때

• preVisitDirectory : 디렉토리 내에 들어가기 전에

• postVisitDirectory : 디렉토리에서 나올 때, 이 때에는 하위 디렉토리는 탐색이 끝났다.

• visitFileFailed : 디렉토리 내의 파일을 호출 할 수 없을 때

13년 10월 25일 금요일

Page 109: Java programming pdf

네트워크 다루기

13년 10월 25일 금요일

Page 110: Java programming pdf

OSI 7 계층

Application layer

Presentation layer

Session layer

Transport layer

Network layer

Datalink layer

Physical layer

Application layer

Presentation layer

Session layer

Transport layer

Network layer

Datalink layer

Physical layer

A컴퓨터 B컴퓨터

13년 10월 25일 금요일

Page 111: Java programming pdf

TCP와 UDP

• TCP : 인터넷 프로토콜(IP)기반으로 동작하며 세션이 유지된 상태로 메시지를 전달

• UDP : 인터넷 프로토콜(IP)기반으로 동작하며 데이터 전송에 대한 신뢰성이 없다.

13년 10월 25일 금요일

Page 112: Java programming pdf

포트

• 포트 : 하나의 물리적인 커넥션을 여러 개의 연결로 분할하여 사용할 수 있도록 부여되는 번호

13년 10월 25일 금요일

Page 113: Java programming pdf

URL 클래스

• URL은 웹페이지의 주소를 의미함

• 자바에서는 손쉽게 웹페이지에 접근할 수 있도록 URL클래스를 제공

• URL hostURL = new URL("http://blog.pizzastudio.org/");

• BufferedReader br = new BufferedReader(new InputStreamReader(host.openStream()));

13년 10월 25일 금요일

Page 114: Java programming pdf

TCP프로그래밍

• 서버와 클라이언트 프로그램 구조

• 서버: server = new ServerSocket(9999); clientSocket = server.accept();

• 클라이언트 : socket = new Socket("localhost", 9999);

13년 10월 25일 금요일

Page 115: Java programming pdf

UDP 프로그래밍• UDP는 독립적인 데이터그램 단위로 데이터를 잘라서 전송한다. 데이터그램이 순서대로 도착할 지에 대한 보장이 없다.

• DatagramSocket socket = new DatagramSocket(9998); DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); socket.send(packet);

13년 10월 25일 금요일

Page 116: Java programming pdf

JDBC

13년 10월 25일 금요일

Page 117: Java programming pdf

데이터베이스• 자료를 저장하고 관리하기 위한 별도의 시스템

• 자료저장 방법에 따라 관계형 데이터베이스, 객체형 데이터베이스등이 있으나 현재 관계형 데이터베이스가 가장 널리 사용됨

• 대표적인 제품은 Oracle, MySQL, MS-SQL등이 있음

13년 10월 25일 금요일

Page 118: Java programming pdf

관계형 데이터베이스

• 자료를 저장할 때 테이블 단위로 자료를 저장함

• 테이블은 행과 열로 구분되어 있는 구조

• SQL이라는 일종의 언어를 통해서 자료를 질의할 수 있음

• SQL : select * from emp; select * from dept;

• select, insert, update, delete, create

13년 10월 25일 금요일

Page 119: Java programming pdf

JDBC

• 데이터베이스에 접근하여 작업할 수 있도록 연결을 제공하는 라이브러리 모음

• 데이터베이스별로 JDBC 드라이버가 존재한다.

• JDBC 인터페이스는 모두 동일하기 때문에 데이터베이스별로 JDBC를 사용하는 방법은 동일하다.

13년 10월 25일 금요일

Page 120: Java programming pdf

Connection• Connection con =

DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/xe","system","manager");

• jdbc:oracle:thin -> jdbc 드라이버 이름

• localhost:1521 -> 데이터베이스 서버의 주소와 포트번호

• xe -> 오라클 DB의 sid

• system, manager -> DB의 아이디와 패스워드

13년 10월 25일 금요일

Page 121: Java programming pdf

Statement와 ResultSet

• Statement stmt = con.createStatement();

• ResultSet rs = stmt.executeQuery("select * from emp");

• while(rs.next()){ System.out.println(rs.getString(1) + " "+rs.getString(2)); }

• rs.close(); stmt.close(); con.close();

13년 10월 25일 금요일

Page 122: Java programming pdf

ResultSet 타입

• 커서의 동작방식을 지정하거나 ResultSet의 변경을 데이터베이스에 직접 반영할 수 있다.

TYPE_FORWARD_ONLY

TYPE_SCROLL_INSENSITIVE

TYPE_SCROLL_SENITIVE

CONCUR_READ_ONLY

CONCUR_UPDATEABLE

13년 10월 25일 금요일

Page 123: Java programming pdf

PreparedStatement

• PreparedStatement ps = con.prepareStatement("select * from emp where emp_no = ? ");ps.setInt(1, 258652);rs = ps.executeQuery();while(rs.next()){ System.out.println(rs.getString(1) + " " + rs.getString(2));}

13년 10월 25일 금요일

Page 124: Java programming pdf

RowSet• rowSet = new OracleCachedRowSet();

rowSet.setUrl(dbUrl);rowSet.setUsername(username);rowSet.setPassword(password);rowSet.setCommand("SELECT * FROM EMP");

• rowSet.first();rowSet.updateString("employee_name", "1." + rowSet.getString("employee_name")); ... rowSet.updateRow();

13년 10월 25일 금요일

Page 125: Java programming pdf

스윙

13년 10월 25일 금요일

Page 126: Java programming pdf

JComponent

• JComponent -▷ Container -▷ Component

• 스윙의 모든 컴포넌트는 JComponent를 상속받고 있다.

• setToolTipText, setBorder, setMinimumSize, 더블 버퍼링, 키 연결, 드래그 앤드롭 관련 기능 제공

13년 10월 25일 금요일

Page 127: Java programming pdf

레이아웃BorderLayout BoxLayout

CardLayout

FlowLayout

GridLayout GridBagLayout13년 10월 25일 금요일

Page 128: Java programming pdf

Label, TextField, TextArea

• JLabel label = new JLabel("라벨입니다.", JLabel.CENTER);

• JTextField field = new JTextField(20);

• JTextArea area = new JTextArea(20,10);

13년 10월 25일 금요일

Page 129: Java programming pdf

Button• JButton button = new JButton("저장");

• JCheckBox krBox = new JCheckBox("한국");

• JRadioButton krRad = new JRadioButton("한국");

• ButtonGroup group = new ButtonGroup();

• group.add(krRad);

13년 10월 25일 금요일

Page 130: Java programming pdf

Dialog• JOptionPane.showMessageDialog(frame, "다이얼로그 테스트입니다.");

• public class DialogExample extends JPanel implements ActionListener { … @Override public void actionPerformed(ActionEvent e) {

• 메시지 타입: ERROR_MESSAGE, INFORMATION_MESSSAGE,WARNING_MESSAGE, QUESTION_MESSAGE, PLAIN_MESSAGE

13년 10월 25일 금요일

Page 131: Java programming pdf

Progress monitor

• 프로그레스 모니터를 사용하면 다이얼로그에 진행상태를 표시할 수 있다.

• ProgressMonitor progressMonitor = new ProgressMonitor(ProgressMonitorExample.this,"Task Number 1 ", "", 0, task.getLengthOfTask());

13년 10월 25일 금요일

Page 132: Java programming pdf

Table, Scroll Pane

• JTable table = new JTable(data, columnNames);JScrollPane scrollPane = new JScrollPane(table);table.setFillsViewportHeight(true);

13년 10월 25일 금요일

Page 133: Java programming pdf

ComboBox와 List

• JComboBox fruitList = new JComboBox(fruits);

• DefaultListModel model = new DefaultListModel();

• JList list = new JList(model);

• list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);

13년 10월 25일 금요일

Page 134: Java programming pdf

이벤트 처리pubic class EventExample … implements ActionListener{ // 1. 이벤트 리스너 작성

// 2. 이벤트 리스너에서 이벤트를 받았을 때 처리해야할 내용을 작성

public void actionPerformed(ActionEvent e){ ... }

public void test(){

// 3. 이벤트를 받아야할 컴포넌트에 이벤트 리스너를 등록한다.

btn.addActionListener(this);

13년 10월 25일 금요일

Page 135: Java programming pdf

이벤트의 종류• 캐럿 리스너

• 속성 변경 리스너

• 액션 리스너

• 컨테이너 리스너

• 포커스 리스너

• 아이템 리스너

• 리스트 선택 리스너

• 마우스 리스너

13년 10월 25일 금요일

Page 136: Java programming pdf

The End

13년 10월 25일 금요일