SlideShare a Scribd company logo
현업개발자의 실무 멘토링

JAVA 입문
mhb8436@gmail.com

13년 10월 25일 금요일
목차
• 자바 시작하기
• 자바의 자료형
• 자바의 연산자
• 자바의 제어문
• 기본적인 객체지향
이야기

13년 10월 25일 금요일

• 클래스와 객체
• 인터페이스와 상속
• String과 Number
• Date와 Format
• 정규식과 플랫폼 환
경
목차(계속)
• 제네릭과

어노테이

션

• 자바 콜렉션 프레임
워크

• 예외 처리 클래스
• 쓰레드
13년 10월 25일 금요일

• 기본 IO와 파일IO
• 네트워크 다루기
• JDBC
• 스윙 프로그래밍
• XML 다루기
자바 시작하기

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

• Java SE, Java EE, Java ME
• Java 프로그램 실행 방법

13년 10월 25일 금요일
자바로 할 수 있는 일

•웹

13년 10월 25일 금요일

• Android

• 기타
자바 설치 및 프로그램 작성
• JDK 설치
• 자바 환경설정 방법
• HelloWorld.java 작성
• 이클립스를 이용한 HelloWorld.java 작성

13년 10월 25일 금요일
자바의 자료형

13년 10월 25일 금요일
변수와 자료형
• 변수는 값을 공간
• 변수를 선언하는 방법 : 변수타입 변수명
예) int count, boolean check
변수명에 사용가능한 문자 : 문자, 숫자, $,
_ 실무에서는 문자와 숫자를 주로 사용
예약어는 사용 금지 : class, boolean, byte,
public, private, int ....
13년 10월 25일 금요일
기본 자료형(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일 금요일
문자 및 논리 자료형
• 자바의 문자는 16비트 유니코드 문자로 표현
되고 'u0000'에서 'uffff'까지 표현

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

13년 10월 25일 금요일
상수
• 프로그램 내에서 값이 변하지 않는 변수
• 상수 선언 방법 : final 자료형 상수명 = 값;
예) final int COUNT = 1;

13년 10월 25일 금요일
배열
• 배열의 정의 : 동일한 타입의 값을 고정된 갯수
로 저장할 수 있는 구조체

• 배열의 구조 :

13년 10월 25일 금요일
배열(계속)
•
•

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

•

13년 10월 25일 금요일

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

다차원 배열 : char[][]
multiChar = new char[4]
[4];
형변환
• 형변환의 정의 : 기본자료형 간의 자료형이 변
환 되는 것을 의미한다.

• 형변환의 예 : int형이 short형으로 int형이

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

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

13년 10월 25일 금요일
자바의 연산자와 수식구문

13년 10월 25일 금요일
산술 및 단항 연산자
• 산술 연산자 : + , - , *, /, %
• 단항 연산자 : ++, -- , + , • 할당 연산자 : =, op=
• 비교 연산자 : ==, !=, > , >= , <, <=
• 논리 연산자 : &&, ||
13년 10월 25일 금요일
수식과 구문
• 수식은 변수와 연산자 그리고 메소드 호출로 이
루어져 있다.

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

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

13년 10월 25일 금요일
자바의 제어문

13년 10월 25일 금요일
조건문
• if-else

•

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

13년 10월 25일 금요일

예) swith(조건문){
case 값1:
구문;
case 값2:
구문;
default:
구문
}
반복문
• for문과

향상된 for

문

예) for(초기값;끝값;
조건){ 구문;
}
for(타입 var: 배열){
....
13년 10월 25일 금요일

}

• while반복문
예) while(조건){ ...
}
do-while반복문
예) do{ ...
}while(조건)
제어문에서 분기
•

Label없는 break

•

예) for(;;){

Label없는 continue
예)for(;;){

break;
}

•

continue;
}

Label있는 break
예) Label: for(;;){

•

Label있는 continue
예) Label: for(;;){

break Label;
}
13년 10월 25일 금요일

continue Label;
}
제어문의 분기(계속)
• return 문은 현재의 메서드를 종료할 수 있게
한다.

• return 문은 값을 반환할 수 있다.
예) 반환될자료형 메서드명(매개변수...){
return 반환값;
}

13년 10월 25일 금요일
기본적인 객체지향 이야기

13년 10월 25일 금요일
객체지향의 역사
• 1960년대 MIT에서 처음 만들어졌고 최초의 객
체지향언어는 Simula임

• 1970년대 Xerox에서 Smalltalk 언어를 개발
• 1980년대 Eiffel이 순수 객체지향을 표방
• 1990년대 C++과 Dephi가 대중에게 인정받아
널리 사용

13년 10월 25일 금요일
객체지향의 개념과 구성
요소
• 객체지향의 개념은 언어를 빗대어 설명하자면
명사와 동사로 구성되어 있다.

• 명사 : 변수 또는 상수[상태를 나타냄]
• 동사 : 메서드[행위를 나타냄]
• 핵심 개념 : 객체, 상속, 인터페이스
13년 10월 25일 금요일
객체
• 객체는 현실 세계의 사물을 프로그래밍 상에 모
델링하였다.

• 객체(Object) = 상태(명사) + 행위(동사)
• 절차지향 프로그래밍언어에서는 상태와 행위를
구분하지 않고 사용

예) 자동차를 객체로 묘사
상태 : 색, 엔진, 차종, 브레이크 타입 등
행위 : 현재 속도, 현재 rpm 등
13년 10월 25일 금요일
클래스
(class)
•

클래스는 객체를 만들어 내는 설계
도 또는 청사진 또는 틀
예) 클래스 : 도요타86의 설계도
객체 : A씨의 도요타86, B씨의 도
요타86 등

13년 10월 25일 금요일
상속
(extends)
•
•

13년 10월 25일 금요일

상속은 다음 세대에게 현
세대의 특징을 물려주는
행위를 말한다.
객체지향 언어에서 상속은
현재 클래스의 속성을 자
식 클래스에게 물려주는
것을 말한다.
인터페이스
(interface)
•
•

13년 10월 25일 금요일

인터페이스는 사전적 의미
로 상호작용하다라는 의미
를 가지고 있음
외부에 내부를 직접 개방
하지 않고 인터페이스를
통해서 내부의 기능을 간
접 사용할 수 있도록 하는
기능

1. 바이오스 전원공급
2. 하드 전원공급
3. 메모리 전원공급
4. 바이오스 부팅
5. ....
패키지(package)
• 패키지는 클래스나 인터페이스를 묶어주는 워
크스페이스 역할을 한다.

• 패키지를 이용하면 인터페이스, 클래스를 묶어
서 모듈로 묶어 줄 수 있다.
예) 패키지 선언방법
package com.pizzastudio;
class Test.. {
...
}
13년 10월 25일 금요일
클래스와 객체

13년 10월 25일 금요일
클래스 정의
class 키워드와 {, } 를 사용하여 몸체를 지정
몸체에는 필드, 생성자, 메서드를 정의
클래스명은 문자로 시작, 문자와 숫자만 사용
예)
public class 클래스명{
필드선언;
생성자선언;
메서드선언;
}
13년 10월 25일 금요일
상속과 인터페이스를 통
한 클래스 정의
class 클래스명 extends 부모클래스명
implements 인터페이스명{
필드 정의;
생성자 정의;
메서드 정의;
}

13년 10월 25일 금요일
클래스 정의(변수선언)
변수선언방법:접근제어자 변수타입 변수명 = 값;
변수 선언위치 :
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일 금요일
클래스의 정의
(메서드 정의)
• 메서드 정의 방법

접근제어자 반환타입 메서드명(변수타입 변수
명, ...) {
...
return 반환값;
}
사용예
public void sum(int x, int y){
return x + y;
}

13년 10월 25일 금요일
클래스 정의(생성자)
• 생성자 정의 방법
public 클래스명(매개변수타입 매개변수,...){
}

• 생성자 생성 및 사용예
public Notebook(int cpu, int memory){
}
Notebook mybook = new Notebook();
13년 10월 25일 금요일
메서드에 값 전달 방법
• 값에 의한 전달
void callVal(int p)

• 참조에 의한 전달
void callRef(String
a)

callVal(1);
callRef("value");

13년 10월 25일 금요일
객체의 기본
•

객체의 생성
Computer my = new
Computer(1);
1. 선언 : Computer my
2. 생성 : new Computer
3. 초기화 : Computer(1)
4. 할당 : my = new
Computer(1);

13년 10월 25일 금요일
객체의 기본(계속)
• 객체의 사용방법
생성된객체명.필드명 : d1.name, new
Computer().name
메서드 호출방법
생성된객체명.메서드명(인자) : my.getCpu();

13년 10월 25일 금요일
this
•

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

•

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

•

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

13년 10월 25일 금요일
접근제어자
접근제어자

class

package

하위클래스

전역

public

가능

가능

가능

가능

지정안함

가능

가능

불가능

불가능

protected

가능

가능

가능

불가능

private

가능

불가능

불가능

불가능

13년 10월 25일 금요일
클래스 변수/메서드
• 클래스 변수와 클래스 메서드는 클래스에서

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

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

• 클래스 변수/메서드 사용 방법 :

Integer.COUNT, Integer.parseInt();

13년 10월 25일 금요일
중첩클래스
• 중첩 클래스 정의 : 클래스 내에 클래스를 정

의, 논리적으로 로직을 그룹핑할 목적 또는 정
보 은닉의 목적으로 사용됨

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

13년 10월 25일 금요일
이너 클래스
• 이너클래스는 클래스 내, 메서드 바깥에 선언되
는 클래스이고 바깥 클래스 객체 생성 시에 동
시에 생성된다.

• 예)

class OuterClass{
class InnerClass{ ... }
...
}

13년 10월 25일 금요일
로컬 클래스
• 클래스 내부의 특정 블럭(메서드나 블럭) 내에
선언되는 클래스

• 사용예)

public class Member{
...
public void validJuminNo(){
class JuminNo{ ... }
return new JuminNo();
}

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

• 사용예)

public class Hanger{
...
public void print(){
...
Clothes shirths = new Clothes(){
public void printColor(){ ... }
}
}

13년 10월 25일 금요일
Enum 타입
• Enum 타입은 사전에 정의된 상수의 집합과 같

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

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

13년 10월 25일 금요일
인터페이스와 상속

13년 10월 25일 금요일
인터페이스의 정의
• 자바에서 인터페이스를 정의하기 위해서는

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

• 사용예)

public interface Figure{
public String getName();
public double getArea();
}

13년 10월 25일 금요일
인터페이스 구현
• 자바에서 인터페이스를 구현하기 위해서는 구

현할 클래스에서 implements 키워드로 인터페
이스를 구현해야 한다.
사용예)
public class Triangle implements Figure{
...
public String getName() { ... }
public dboule getArea() { ... }

13년 10월 25일 금요일
인터페이스의 사용
• 인터페이스를 구현한 객체들은 인터페이스 타
입의 변수에 할당될 수 있다.

• 사용예)
Figure a = new Triangle();
a.getArea();

13년 10월 25일 금요일
상속
• 상속은 부모 클래스의 속성을 자식클래스에 물
려줄 수 있는 방법을 제공한다.

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

• 사용예)
public class Bmw320d extends Car{
....
13년 10월 25일 금요일
오버라이딩(Overriding)
• 자식 클래스는 부모 클래스의 메서드를 재정의
하여 사용할 수 있다. 이를 오버라이딩
(overriding) 이라고 부른다.

• 사용예
public class Bmw320d extends Car{
	


@Override

	

 	

 public void printCarName(){ ...
13년 10월 25일 금요일
다형성(polymorphism)
• 사전적 정의 : 같은 종에서 개체가 형태와 형질
등에 대해 다양성을 나타내는 상태

• 자바에서의 의미 : 동일한 부모 클래스를 상속

받은 자식클래스들에서 부모에게 물려받은 공
통 속성이외에 자식클래스만의 다양한 특성을
만들 수 있다.

13년 10월 25일 금요일
super
• 자식 객체에서 부모 객체에 접근하기 위해서
사용되는 키워드

• 부모 객채 셍성자/메서드 호출 방법
super(인자1, 인자2, ...)
super.메서드이름(인자1, 인자2, ...)
super(speed, gearType, engineType..)
super.print();
13년 10월 25일 금요일
추상클래스와 메서드
• abstract 키워드를 이용하여 선언하며 추상 클

래스의 일부 클래스는 몸체를 구현할 수도 있
고, 인터페이스 처럼 메서드 선언만 할 수도 있
다.

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

public abstract class Parent{
abstract void print();
13년 10월 25일 금요일
Number와 String

13년 10월 25일 금요일
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일 금요일
String 클래스
• String 클래스는

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

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

13년 10월 25일 금요일

메서드
length
indexOf
substring
replace
StringBuilder 클래스
• StringBuilder(CharSequence cs),
StringBuilder(int capacity),
StringBuilder(String s)

• append
• insert
• delete
• replace
13년 10월 25일 금요일
Date와 Time 다루기

13년 10월 25일 금요일
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일 금요일
날짜 포멧
• DateFormat 클래스
// Locale KOREAN
formatter = DateFormat.getDateInstance(...);
today = new Date();
dayStr = formatter.format(today);
System.out.println(dayStr);

13년 10월 25일 금요일
날짜 포멧(계속)
• SimpleDateFormat
String pattern = "서기 yyyy년 MM월 dd일 HH
시 mm분 ss초 ";
SimpleDateFormat formatter = new
SimpleDateFormat(pattern, Locale.KOREA);
String todayStr = formatter.format(today);

13년 10월 25일 금요일
정규식과 플랫폼 환경

13년 10월 25일 금요일
정규식
• 정규식(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일 금요일
정규식(계속)
• 미리 정의된 패턴

. : 모든 문자
d : 숫자
D : 숫자가 아닌 문자
s : 공백문자
S : 공백이 아닌 문자
w : 알파벳과 숫자
W : 알파벳과 숫자가 아닌 문자

13년 10월 25일 금요일
정규식(계속)
• 수량자(정량자)

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일 금요일
정규식(계속)
• 정규식 사용방법
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

13년 10월 25일 금요일
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일 금요일
자바의 환경변수
• OS에서는 환경변수를 Properties와 동일한
방식으로 보관하고 있다.

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

13년 10월 25일 금요일
제네릭과 어노테이션

13년 10월 25일 금요일
제네릭
• 제네릭(Generic)은 파라미터의 형식을 미리
정의하는 것이다.

• class 클래스명 <T1, T2, ... Tn>{ ... }
• 타입파라미터 : T(Type), K(Key), N(Number),
E(Element),V(Value), 기타

• Type<String> a = new Type<String>();
• 제네릭 메서드
13년 10월 25일 금요일
타입 추론과 타입추론
• 자바 컴파일러는 메서드 호출 시, 객체 생성 시

에 제네릭 타입을 유추할 수 있다. 추론 알고리
즘은 인자의 타입이나 호출 결과로 반환 되는
값에 의해 결정된다.

• 예)

public class JukeBox<T extends Number>
{ ... }
JukeBoxDemo.addJukeBox(new Integer(10),
list);

13년 10월 25일 금요일
와일드 카드
• 제네릭 코드에서 명시적으로 어떠한 타입의

객체가 들어오는지 모를 경우, ? 기호를 사용하
구분

사용하는 곳

상한와일드카드

<? extends T>

써야하는 곳

하한와일드카드

<? super T>

읽어야 하는 곳

무제한와일드카드

13년 10월 25일 금요일

형태

<?>

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

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

13년 10월 25일 금요일
콜렉션프레임워크

13년 10월 25일 금요일
콜렉션 프레임워크

13년 10월 25일 금요일
Set
• 정의 : 인터페이스이고 자료를 중복해서 저장
할 수 없는 목록

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

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

• 주요 메서드 : add, remove, set, get
13년 10월 25일 금요일
List
• 정의 : 인터페이스이며 중복된 자료를 저장하
는 목록

• 주요 클래스 : ArrayList, LinkedList
• List<String> list = new ArrayList<String>();
• 주요 메서드 : get, set, add, remove, indexOf
13년 10월 25일 금요일
Queue
• 정의 : 선입선출 구조의 자료구조를 제공
• 주요 클래스 : LinkedList
• Queue<String> linkedQueue = new
LinkedList<String>();

• 주요 메서드 : element, add, peek, poll, offer
13년 10월 25일 금요일
Deque
• 정의 : queue 자료구조는 한 쪽에서만 입력이

되고 다른 한 쪽에서는 출력만 되는 구조인 반
면에 deque는 양쪽에서 모두 입출력이 가능한
구조이다.

• 주요 클래스 : ArrayDeque,
LinkedBlockingDeque

• 주요 메서드 : addFirst, addLast,

pollLast,pollFirst, peekFirst, peekLast

13년 10월 25일 금요일
Map
• 정의 : 키와 값으로 이루어진 자료구조
• 주요 클래스 : HashMap, TreeMap,
LinkedHashMap

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

13년 10월 25일 금요일
예외처리 방법

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

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

• 예외가 발생하면 시스템에서 예외를 던진다.
• 예외를 처리할 수 있도록 예외를 잡아야 한다.
13년 10월 25일 금요일
예외 처리방법
try{
	

 // 예외가 발생할 것 같은 구문
}catch(Exception1 e1){
// e1라는 이름을 가진 Exception1 객체
}catch(Exception2 e2){
// e2라는 이름을 가진 Exception2 객체
}finally{
// finally 내의 괄호 구문은 무조건 실행 된다.
}
13년 10월 25일 금요일
예외 클래스
모든 예외 클래스는
Exception 클래스를
상속받고 있다.
Exception 클래스에
서는 getMessage,
printStackTrace,
toString 메서드 제공

13년 10월 25일 금요일
예외 던지기
public void execute() throws IOException {
...
}
public void execute(List<String> list){
	

 if(list == null){
	

 	

 throw new ListException();
	

 }
...
}
13년 10월 25일 금요일
try-resource
AutoCloseable를 구현한 클래스에 한하여 사
용
자동으로 리소스를 반환해준다.
try(BufferedReader in = new
BufferedReader(new FileReader("foo.in"))){
	

 System.out.println(in.readLine());
}catch(Exception e){ }
13년 10월 25일 금요일
사용자 정의 예외
• 사용자 정의 예외를 만들기 위해서 Throwable

을 상속받은 Exception 및 하위 클래스를 상속
받아 만듬

• 예)

public class ListException extends
RuntimeException { ... }

13년 10월 25일 금요일
쓰레드

13년 10월 25일 금요일
프로세스와 쓰레드
• 프로세스 : 독립적인 자원을 가지고 하나의 독
립된 실행단위. 프로세스는 별도의 메모리 공
간을 가지고 있다.

• 쓰레드 : 경량 프로세스라고 부르며 별도의 자

원과 메모리 공간을 가지고 있다. 하나의 프로
세스는 하나의 쓰레드를 가지고 있다.

13년 10월 25일 금요일
쓰레드 생성
• Runnable 인터페이스로 쓰레드 구현
• Thread 클래스를 상속받아 쓰레드 구현
• Thread 클래스의 주요 메서드
interrupt() : 쓰레드의 중단
join() : 쓰레드의 대기

13년 10월 25일 금요일
동기화 문제
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일 금요일
synchronized와 기본락
• 쓰레드 간의 간섭과 메모리 불일치 문제 해결
을 위해 synchronized 구문과 메서드를 제공

• public synchronized void increment() {...}
• 자바의 모든 객체는 Lock을 가지고 있다. 이를
모니터락 또는 모니터라고 부른다.

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

13년 10월 25일 금요일
교착상태,기아상태
• 교착상태(DeadLock)은 두 개 이상의 쓰레드
가 서로 끝나기를 기다리고 있는 상태

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

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

13년 10월 25일 금요일
lock관리
• synchronized(Object)
• notify
• notifyAll
• wait
13년 10월 25일 금요일
java.util.concurrent
• ReentrantLock
• ExecutorService
Threadpooling
Thread 생성 및 실행
BlockingQueue, ConcurrentHashMap

13년 10월 25일 금요일
기본 I/O와 파일 I/O

13년 10월 25일 금요일
기본 I/O
•
•

13년 10월 25일 금요일

입력 스트림 : 소스에서 데
이터를 순차적으로 읽는
것
출력 스트림 : 대상에 데이
터를 순차적으로 쓰는 것
바이트,캐릭터,버퍼스트
림

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

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

• 버퍼 스트림 : 버퍼를 가진 스트림,

BufferReader, BufferWriter,
BufferedInputStream, BufferedOutputStream

13년 10월 25일 금요일
콘솔출력 및 포멧팅
• Console console = System.console();
• System.out.format(“ 3 x 4 는 %d 이다”, i);
• %[인자번호$][플래그][폭][.정밀도]유형
• System.out.format("%1$+20.5f
%n",Math.PI); -> "

13년 10월 25일 금요일

+3.14159"
데이터, 객체 스트림
•
•

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

•

13년 10월 25일 금요일

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

직렬화(serialization)는 객체를 저장하기 위해서 복원
가능한 형태의 스트림으로 저장하는 행위를 말한다.
nio.Path클래스
•
•
•
•
•
•
13년 10월 25일 금요일

Path 클래스는 디렉토리와 파일 경로에 대한 정
보를 담고 있다.
Path p = Paths.get("/Users/system")
p.getName() : Users
p.toString() : /Users/system
p.getNameCount() : 3
p.subPath(0,1) : Users
디렉토리와 파일 다루기
• 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일 금요일
파일에 읽고 쓰기
• Files.readAllBytes, Files.readAllLines,
Files.write

• Files.newBufferedWriter,
Files.newBufferedReader

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

13년 10월 25일 금요일
FileVisitor
•

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

•
•
•

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

•

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

13년 10월 25일 금요일

preVisitDirectory : 디렉토리 내에 들어가기 전에
postVisitDirectory : 디렉토리에서 나올 때, 이 때에
는 하위 디렉토리는 탐색이 끝났다.
네트워크 다루기

13년 10월 25일 금요일
OSI 7 계층
A컴퓨터

B컴퓨터

Application layer

Application layer

Presentation layer

Presentation layer

Session layer

Session layer

Transport layer

Transport layer

Network layer

Network layer

Datalink layer

Datalink layer

Physical layer

Physical layer

13년 10월 25일 금요일
TCP와 UDP
• TCP : 인터넷 프로토콜(IP)기반으로 동작하며
세션이 유지된 상태로 메시지를 전달

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

13년 10월 25일 금요일
포트
•

13년 10월 25일 금요일

포트 : 하나의 물리적
인 커넥션을 여러 개
의 연결로 분할하여
사용할 수 있도록 부
여되는 번호
URL 클래스
• URL은 웹페이지의 주소를 의미함
• 자바에서는 손쉽게 웹페이지에 접근할 수 있
도록 URL클래스를 제공

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

• BufferedReader br = new

BufferedReader(new
InputStreamReader(host.openStream()));

13년 10월 25일 금요일
TCP프로그래밍
• 서버와 클라이언트 프로그램 구조
• 서버: server = new ServerSocket(9999);
clientSocket = server.accept();

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

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

• DatagramSocket socket = new

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

13년 10월 25일 금요일
JDBC

13년 10월 25일 금요일
데이터베이스
• 자료를 저장하고 관리하기 위한 별도의 시스
템

• 자료저장 방법에 따라 관계형 데이터베이스,

객체형 데이터베이스등이 있으나 현재 관계형
데이터베이스가 가장 널리 사용됨

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

13년 10월 25일 금요일
관계형 데이터베이스
• 자료를 저장할 때 테이블 단위로 자료를 저장
함

• 테이블은 행과 열로 구분되어 있는 구조
• SQL이라는 일종의 언어를 통해서 자료를 질
의할 수 있음

• SQL : select * from emp; select * from dept;
• select, insert, update, delete, create
13년 10월 25일 금요일
JDBC
• 데이터베이스에 접근하여 작업할 수 있도록
연결을 제공하는 라이브러리 모음

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

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

13년 10월 25일 금요일
Connection
•
•
•

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

•
•
13년 10월 25일 금요일

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

xe -> 오라클 DB의 sid

localhost:1521 -> 데이터베이스 서버의 주소와 포
트번호
system, manager -> DB의 아이디와 패스워드
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일 금요일
ResultSet 타입
• 커서의 동작방

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

13년 10월 25일 금요일

TYPE_FORWARD_ONLY
TYPE_SCROLL_INSENSITIVE
TYPE_SCROLL_SENITIVE
CONCUR_READ_ONLY
CONCUR_UPDATEABLE
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일 금요일
RowSet
•

•

13년 10월 25일 금요일

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일 금요일
JComponent
• JComponent -▷ Container -▷ Component
• 스윙의 모든 컴포넌트는 JComponent를 상속
받고 있다.

• setToolTipText, setBorder,

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

13년 10월 25일 금요일
BorderLayout

레이아웃

BoxLayout

CardLayout
FlowLayout

GridLayout
13년 10월 25일 금요일

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

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

13년 10월 25일 금요일
Button
• JButton button = new JButton("저장");
• JCheckBox krBox = new JCheckBox("한
국");

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

• ButtonGroup group = new ButtonGroup();
• group.add(krRad);
13년 10월 25일 금요일
Dialog
•
•

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

•

13년 10월 25일 금요일

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

메시지 타입: ERROR_MESSAGE,
INFORMATION_MESSSAGE,WARNING_MESSAGE,
QUESTION_MESSAGE, PLAIN_MESSAGE
Progress monitor
• 프로그레스 모니터를 사용하면 다이얼로그에
진행상태를 표시할 수 있다.

• ProgressMonitor progressMonitor = new

ProgressMonitor(ProgressMonitorExample.
this,"Task Number 1	

 ", "", 0,
task.getLengthOfTask());

13년 10월 25일 금요일
Table, Scroll Pane
• JTable table = new JTable(data,

columnNames);
JScrollPane scrollPane = new
JScrollPane(table);
table.setFillsViewportHeight(true);

13년 10월 25일 금요일
ComboBox와 List
• JComboBox fruitList = new
JComboBox(fruits);

• DefaultListModel

model = new
DefaultListModel();

• JList list = new JList(model);
• list.setSelectionMode(ListSelectionModel.SI
NGLE_INTERVAL_SELECTION);

13년 10월 25일 금요일
이벤트 처리
pubic class EventExample … implements
ActionListener{ // 1. 이벤트 리스너 작성
	

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

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

 public void test(){
	

 	

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

 	

 btn.addActionListener(this);
13년 10월 25일 금요일
이벤트의 종류
• 캐럿 리스너
• 속성 변경 리스너
• 액션 리스너
• 컨테이너 리스너
• 포커스 리스너
• 아이템 리스너
13년 10월 25일 금요일

• 리스트 선택 리스너
• 마우스 리스너
The End

13년 10월 25일 금요일
Ad

Recommended

20150219 初めての「embulk」
20150219 初めての「embulk」
Hideto Masuoka
 
Object Oriented CSS
Object Oriented CSS
Nicole Sullivan
 
クラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよね
YoshioSawada
 
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのこと
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのこと
Hiromasa Oka
 
Mohamed Sabri: Operationalize machine learning with Kubeflow
Mohamed Sabri: Operationalize machine learning with Kubeflow
Edunomica
 
Amazon SageMaker를 통한 대용량 모델 훈련 방법 살펴보기 - 김대근 AWS AI/ML 스페셜리스트 솔루션즈 아키텍트 / 최영준...
Amazon SageMaker를 통한 대용량 모델 훈련 방법 살펴보기 - 김대근 AWS AI/ML 스페셜리스트 솔루션즈 아키텍트 / 최영준...
Amazon Web Services Korea
 
AWS Storage Gateway
AWS Storage Gateway
zekeLabs Technologies
 
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
Amazon Web Services Korea
 
[금융고객을 위한 Resiliency in the Cloud] 최근 대규모 장애 사태 여파에 따른 DR 도...
[금융고객을 위한 Resiliency in the Cloud] 최근 대규모 장애 사태 여파에 따른 DR 도...
AWS Korea 금융산업팀
 
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
de:code 2017
 
Introduction to multi core
Introduction to multi core
mukul bhardwaj
 
【15-A-4】Redmine + Lychee 導入のアンチパターン
【15-A-4】Redmine + Lychee 導入のアンチパターン
Developers Summit
 
FHIR on python
FHIR on python
Yoshinori Yamanouchi
 
Google BigQuery クエリの処理の流れ - #bq_sushi
Google BigQuery クエリの処理の流れ - #bq_sushi
Google Cloud Platform - Japan
 
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
Amazon Web Services Korea
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
Satoshi Masuda
 
Azure 10 major services
Azure 10 major services
Arnab Chakraborty,PMP
 
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Yugo Shimizu
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
 
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
Amazon Web Services Japan
 
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
FumieNakayama
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
マイクロサービスアーキテクチャ とは何か
マイクロサービスアーキテクチャ とは何か
Yusuke Suzuki
 
Amazon SageMaker 모델 빌딩 파이프라인 소개::이유동, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스...
Amazon SageMaker 모델 빌딩 파이프라인 소개::이유동, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스...
Amazon Web Services Korea
 
Amazon SageMaker 모델 학습 방법 소개::최영준, 솔루션즈 아키텍트 AI/ML 엑스퍼트, AWS::AWS AIML 스페셜 웨비나
Amazon SageMaker 모델 학습 방법 소개::최영준, 솔루션즈 아키텍트 AI/ML 엑스퍼트, AWS::AWS AIML 스페셜 웨비나
Amazon Web Services Korea
 
AWS Black Belt Techシリーズ Amazon EBS
AWS Black Belt Techシリーズ Amazon EBS
Amazon Web Services Japan
 
누가 내 엔터프라이즈 고객을 클라우드로 옮겼을까?-양승호, Head of Cloud Modernization,AWS::AWS 마이그레이션 ...
누가 내 엔터프라이즈 고객을 클라우드로 옮겼을까?-양승호, Head of Cloud Modernization,AWS::AWS 마이그레이션 ...
Amazon Web Services Korea
 
Data Grids with Oracle Coherence
Data Grids with Oracle Coherence
Ben Stopford
 
자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지
trustinlee
 
Java 다형성
Java 다형성
JaeYeoul Ahn
 

More Related Content

What's hot (20)

[금융고객을 위한 Resiliency in the Cloud] 최근 대규모 장애 사태 여파에 따른 DR 도...
[금융고객을 위한 Resiliency in the Cloud] 최근 대규모 장애 사태 여파에 따른 DR 도...
AWS Korea 금융산업팀
 
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
de:code 2017
 
Introduction to multi core
Introduction to multi core
mukul bhardwaj
 
【15-A-4】Redmine + Lychee 導入のアンチパターン
【15-A-4】Redmine + Lychee 導入のアンチパターン
Developers Summit
 
FHIR on python
FHIR on python
Yoshinori Yamanouchi
 
Google BigQuery クエリの処理の流れ - #bq_sushi
Google BigQuery クエリの処理の流れ - #bq_sushi
Google Cloud Platform - Japan
 
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
Amazon Web Services Korea
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
Satoshi Masuda
 
Azure 10 major services
Azure 10 major services
Arnab Chakraborty,PMP
 
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Yugo Shimizu
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
 
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
Amazon Web Services Japan
 
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
FumieNakayama
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
マイクロサービスアーキテクチャ とは何か
マイクロサービスアーキテクチャ とは何か
Yusuke Suzuki
 
Amazon SageMaker 모델 빌딩 파이프라인 소개::이유동, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스...
Amazon SageMaker 모델 빌딩 파이프라인 소개::이유동, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스...
Amazon Web Services Korea
 
Amazon SageMaker 모델 학습 방법 소개::최영준, 솔루션즈 아키텍트 AI/ML 엑스퍼트, AWS::AWS AIML 스페셜 웨비나
Amazon SageMaker 모델 학습 방법 소개::최영준, 솔루션즈 아키텍트 AI/ML 엑스퍼트, AWS::AWS AIML 스페셜 웨비나
Amazon Web Services Korea
 
AWS Black Belt Techシリーズ Amazon EBS
AWS Black Belt Techシリーズ Amazon EBS
Amazon Web Services Japan
 
누가 내 엔터프라이즈 고객을 클라우드로 옮겼을까?-양승호, Head of Cloud Modernization,AWS::AWS 마이그레이션 ...
누가 내 엔터프라이즈 고객을 클라우드로 옮겼을까?-양승호, Head of Cloud Modernization,AWS::AWS 마이그레이션 ...
Amazon Web Services Korea
 
Data Grids with Oracle Coherence
Data Grids with Oracle Coherence
Ben Stopford
 
[금융고객을 위한 Resiliency in the Cloud] 최근 대규모 장애 사태 여파에 따른 DR 도...
[금융고객을 위한 Resiliency in the Cloud] 최근 대규모 장애 사태 여파에 따른 DR 도...
AWS Korea 금융산업팀
 
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
[DI12] あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビックデータ処理基盤のアーキテクチャと実装
de:code 2017
 
Introduction to multi core
Introduction to multi core
mukul bhardwaj
 
【15-A-4】Redmine + Lychee 導入のアンチパターン
【15-A-4】Redmine + Lychee 導入のアンチパターン
Developers Summit
 
Google BigQuery クエリの処理の流れ - #bq_sushi
Google BigQuery クエリの処理の流れ - #bq_sushi
Google Cloud Platform - Japan
 
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
고급 클라우드 아키텍처 방법론- 양승도 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
Amazon Web Services Korea
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
Satoshi Masuda
 
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Power BI + OneDrive の最も簡単でかつ最も効率的な使い方のひとつ
Yugo Shimizu
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
 
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
Amazon Web Services Japan
 
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
Kubernetes環境のアプリケーションバックアップソフトウェアKasten K10ご紹介
FumieNakayama
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
マイクロサービスアーキテクチャ とは何か
マイクロサービスアーキテクチャ とは何か
Yusuke Suzuki
 
Amazon SageMaker 모델 빌딩 파이프라인 소개::이유동, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스...
Amazon SageMaker 모델 빌딩 파이프라인 소개::이유동, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스...
Amazon Web Services Korea
 
Amazon SageMaker 모델 학습 방법 소개::최영준, 솔루션즈 아키텍트 AI/ML 엑스퍼트, AWS::AWS AIML 스페셜 웨비나
Amazon SageMaker 모델 학습 방법 소개::최영준, 솔루션즈 아키텍트 AI/ML 엑스퍼트, AWS::AWS AIML 스페셜 웨비나
Amazon Web Services Korea
 
누가 내 엔터프라이즈 고객을 클라우드로 옮겼을까?-양승호, Head of Cloud Modernization,AWS::AWS 마이그레이션 ...
누가 내 엔터프라이즈 고객을 클라우드로 옮겼을까?-양승호, Head of Cloud Modernization,AWS::AWS 마이그레이션 ...
Amazon Web Services Korea
 
Data Grids with Oracle Coherence
Data Grids with Oracle Coherence
Ben Stopford
 

Viewers also liked (20)

자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지
trustinlee
 
Java 다형성
Java 다형성
JaeYeoul Ahn
 
임베디드 시스템 설계 - 출입구 게이트
임베디드 시스템 설계 - 출입구 게이트
Repump
 
Did system4
Did system4
Km Oh
 
푸시윙 - 앱이 없는 웹사이트를 위한 무료 푸시 알림 서비스
푸시윙 - 앱이 없는 웹사이트를 위한 무료 푸시 알림 서비스
Hyun-Seok Lee
 
주변의 임베디드 시스템 찾기 - 지하철 전광판
주변의 임베디드 시스템 찾기 - 지하철 전광판
Taehoon Kim
 
1인 창조기업을 위한 클라우드 서비스와 스마트 디바이스 활용 all
1인 창조기업을 위한 클라우드 서비스와 스마트 디바이스 활용 all
@hongss
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
중선 곽
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
Jubok Kim
 
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
Amazon Web Services Korea
 
Network 초보자를 위한 Netty
Network 초보자를 위한 Netty
Choulhyouc Lee
 
Mqtt 소개
Mqtt 소개
Junho Lee
 
임베디드시스템개발 Part1
임베디드시스템개발 Part1
Minsuk Lee
 
포스트 스마트폰 시대 웨어러블 디바이스
포스트 스마트폰 시대 웨어러블 디바이스
정문 김
 
푸시개발 정리 - Push Notification Summary
푸시개발 정리 - Push Notification Summary
Brave Cheon
 
S블로거가 본 스마트tv
S블로거가 본 스마트tv
Taehyun Brad Kim
 
제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]
kisu kim
 
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
Bosnag-Kim
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.
Devgear
 
자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지
trustinlee
 
임베디드 시스템 설계 - 출입구 게이트
임베디드 시스템 설계 - 출입구 게이트
Repump
 
Did system4
Did system4
Km Oh
 
푸시윙 - 앱이 없는 웹사이트를 위한 무료 푸시 알림 서비스
푸시윙 - 앱이 없는 웹사이트를 위한 무료 푸시 알림 서비스
Hyun-Seok Lee
 
주변의 임베디드 시스템 찾기 - 지하철 전광판
주변의 임베디드 시스템 찾기 - 지하철 전광판
Taehoon Kim
 
1인 창조기업을 위한 클라우드 서비스와 스마트 디바이스 활용 all
1인 창조기업을 위한 클라우드 서비스와 스마트 디바이스 활용 all
@hongss
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
중선 곽
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
Jubok Kim
 
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
[Gaming on AWS] AWS에서 실시간 멀티플레이 게임 구현하기 - 넥슨
Amazon Web Services Korea
 
Network 초보자를 위한 Netty
Network 초보자를 위한 Netty
Choulhyouc Lee
 
Mqtt 소개
Mqtt 소개
Junho Lee
 
임베디드시스템개발 Part1
임베디드시스템개발 Part1
Minsuk Lee
 
포스트 스마트폰 시대 웨어러블 디바이스
포스트 스마트폰 시대 웨어러블 디바이스
정문 김
 
푸시개발 정리 - Push Notification Summary
푸시개발 정리 - Push Notification Summary
Brave Cheon
 
S블로거가 본 스마트tv
S블로거가 본 스마트tv
Taehyun Brad Kim
 
제안서N School(영상교육영상회의)[1]
제안서N School(영상교육영상회의)[1]
kisu kim
 
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
[한국의SNS 컨퍼런스]N스크린 기반 스마트UX
Bosnag-Kim
 
RAD Studio XE8을 소개합니다.
RAD Studio XE8을 소개합니다.
Devgear
 
Ad

Similar to Java programming pdf (20)

객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
용호 최
 
Java 강의자료 ed11
Java 강의자료 ed11
hungrok
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
MIN SEOK KOO
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
유리 하
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)
용호 최
 
자바야 놀자 PPT
자바야 놀자 PPT
JinKyoungHeo
 
java_2장.pptx
java_2장.pptx
HeeJung Chae
 
Programming java day2
Programming java day2
Jaehoonyam
 
Yapp a.a study 2 reflection+annotation
Yapp a.a study 2 reflection+annotation
Junyoung Lee
 
Java 8 고급 (1/6)
Java 8 고급 (1/6)
Kyung Koo Yoon
 
자바 스터디(6기) 2
자바 스터디(6기) 2
Jina Lee
 
자바스터디(6기) 3
자바스터디(6기) 3
Jina Lee
 
Java, android 스터티2
Java, android 스터티2
Heejun Kim
 
Java tutorial
Java tutorial
ssuser34b989
 
Java_02 변수자료형
Java_02 변수자료형
Hong Hyo Sang
 
Java 변수자료형
Java 변수자료형
Hyosang Hong
 
Java, android 스터티3
Java, android 스터티3
Heejun Kim
 
5장 객체와클래스
5장 객체와클래스
SeoYeong
 
Java(1/4)
Java(1/4)
handfoot
 
Java_05 class
Java_05 class
Hong Hyo Sang
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
용호 최
 
Java 강의자료 ed11
Java 강의자료 ed11
hungrok
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
MIN SEOK KOO
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
유리 하
 
[자바카페] 자바 객체지향 프로그래밍 (2017)
[자바카페] 자바 객체지향 프로그래밍 (2017)
용호 최
 
자바야 놀자 PPT
자바야 놀자 PPT
JinKyoungHeo
 
Programming java day2
Programming java day2
Jaehoonyam
 
Yapp a.a study 2 reflection+annotation
Yapp a.a study 2 reflection+annotation
Junyoung Lee
 
자바 스터디(6기) 2
자바 스터디(6기) 2
Jina Lee
 
자바스터디(6기) 3
자바스터디(6기) 3
Jina Lee
 
Java, android 스터티2
Java, android 스터티2
Heejun Kim
 
Java_02 변수자료형
Java_02 변수자료형
Hong Hyo Sang
 
Java 변수자료형
Java 변수자료형
Hyosang Hong
 
Java, android 스터티3
Java, android 스터티3
Heejun Kim
 
5장 객체와클래스
5장 객체와클래스
SeoYeong
 
Ad

Java programming pdf

  • 2. 목차 • 자바 시작하기 • 자바의 자료형 • 자바의 연산자 • 자바의 제어문 • 기본적인 객체지향 이야기 13년 10월 25일 금요일 • 클래스와 객체 • 인터페이스와 상속 • String과 Number • Date와 Format • 정규식과 플랫폼 환 경
  • 3. 목차(계속) • 제네릭과 어노테이 션 • 자바 콜렉션 프레임 워크 • 예외 처리 클래스 • 쓰레드 13년 10월 25일 금요일 • 기본 IO와 파일IO • 네트워크 다루기 • JDBC • 스윙 프로그래밍 • XML 다루기
  • 5. 자바 이야기 • 1991년 제임스 고슬링이 자바 프로젝트를 시 작 자바 프로젝트의 결과물로서 1995년 자바 1.0 탄생, Write Once, Run Anywhere • Java SE, Java EE, Java ME • Java 프로그램 실행 방법 13년 10월 25일 금요일
  • 6. 자바로 할 수 있는 일 •웹 13년 10월 25일 금요일 • Android • 기타
  • 7. 자바 설치 및 프로그램 작성 • JDK 설치 • 자바 환경설정 방법 • HelloWorld.java 작성 • 이클립스를 이용한 HelloWorld.java 작성 13년 10월 25일 금요일
  • 9. 변수와 자료형 • 변수는 값을 공간 • 변수를 선언하는 방법 : 변수타입 변수명 예) int count, boolean check 변수명에 사용가능한 문자 : 문자, 숫자, $, _ 실무에서는 문자와 숫자를 주로 사용 예약어는 사용 금지 : class, boolean, byte, public, private, int .... 13년 10월 25일 금요일
  • 10. 기본 자료형(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일 금요일
  • 11. 문자 및 논리 자료형 • 자바의 문자는 16비트 유니코드 문자로 표현 되고 'u0000'에서 'uffff'까지 표현 • 자바의 논리 자료형은 true와 false로 값을 표 현 13년 10월 25일 금요일
  • 12. 상수 • 프로그램 내에서 값이 변하지 않는 변수 • 상수 선언 방법 : final 자료형 상수명 = 값; 예) final int COUNT = 1; 13년 10월 25일 금요일
  • 13. 배열 • 배열의 정의 : 동일한 타입의 값을 고정된 갯수 로 저장할 수 있는 구조체 • 배열의 구조 : 13년 10월 25일 금요일
  • 14. 배열(계속) • • 배열의 생성과 초기화 : char[] charArray = {‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J ’,’K’,’L’}; • 13년 10월 25일 금요일 배열의 생성 : char[] test = new char[12]; 다차원 배열 : char[][] multiChar = new char[4] [4];
  • 15. 형변환 • 형변환의 정의 : 기본자료형 간의 자료형이 변 환 되는 것을 의미한다. • 형변환의 예 : int형이 short형으로 int형이 String으로 형변환이 발생, 실무에서는 String 과 기본자료형간의 형변환이 주로 사용된다. • Integer.parseInt, Double.ParseDouble, Integer.toString, Double.toString 13년 10월 25일 금요일
  • 17. 산술 및 단항 연산자 • 산술 연산자 : + , - , *, /, % • 단항 연산자 : ++, -- , + , • 할당 연산자 : =, op= • 비교 연산자 : ==, !=, > , >= , <, <= • 논리 연산자 : &&, || 13년 10월 25일 금요일
  • 18. 수식과 구문 • 수식은 변수와 연산자 그리고 메소드 호출로 이 루어져 있다. • 구문은 수식의 조합이다. 구문은 세미콜론(;) 으 로 구분된다. 예) System.out.println( 1 + 2 + 3 ); 수식 : 1 + 2 + 3 13년 10월 25일 금요일
  • 20. 조건문 • if-else • 예) if(조건문){ 구문; }else if(조건문){ 구문; }else(조건문){ 구문; } switch문 13년 10월 25일 금요일 예) swith(조건문){ case 값1: 구문; case 값2: 구문; default: 구문 }
  • 21. 반복문 • for문과 향상된 for 문 예) for(초기값;끝값; 조건){ 구문; } for(타입 var: 배열){ .... 13년 10월 25일 금요일 } • while반복문 예) while(조건){ ... } do-while반복문 예) do{ ... }while(조건)
  • 22. 제어문에서 분기 • Label없는 break • 예) for(;;){ Label없는 continue 예)for(;;){ break; } • continue; } Label있는 break 예) Label: for(;;){ • Label있는 continue 예) Label: for(;;){ break Label; } 13년 10월 25일 금요일 continue Label; }
  • 23. 제어문의 분기(계속) • return 문은 현재의 메서드를 종료할 수 있게 한다. • return 문은 값을 반환할 수 있다. 예) 반환될자료형 메서드명(매개변수...){ return 반환값; } 13년 10월 25일 금요일
  • 25. 객체지향의 역사 • 1960년대 MIT에서 처음 만들어졌고 최초의 객 체지향언어는 Simula임 • 1970년대 Xerox에서 Smalltalk 언어를 개발 • 1980년대 Eiffel이 순수 객체지향을 표방 • 1990년대 C++과 Dephi가 대중에게 인정받아 널리 사용 13년 10월 25일 금요일
  • 26. 객체지향의 개념과 구성 요소 • 객체지향의 개념은 언어를 빗대어 설명하자면 명사와 동사로 구성되어 있다. • 명사 : 변수 또는 상수[상태를 나타냄] • 동사 : 메서드[행위를 나타냄] • 핵심 개념 : 객체, 상속, 인터페이스 13년 10월 25일 금요일
  • 27. 객체 • 객체는 현실 세계의 사물을 프로그래밍 상에 모 델링하였다. • 객체(Object) = 상태(명사) + 행위(동사) • 절차지향 프로그래밍언어에서는 상태와 행위를 구분하지 않고 사용 예) 자동차를 객체로 묘사 상태 : 색, 엔진, 차종, 브레이크 타입 등 행위 : 현재 속도, 현재 rpm 등 13년 10월 25일 금요일
  • 28. 클래스 (class) • 클래스는 객체를 만들어 내는 설계 도 또는 청사진 또는 틀 예) 클래스 : 도요타86의 설계도 객체 : A씨의 도요타86, B씨의 도 요타86 등 13년 10월 25일 금요일
  • 29. 상속 (extends) • • 13년 10월 25일 금요일 상속은 다음 세대에게 현 세대의 특징을 물려주는 행위를 말한다. 객체지향 언어에서 상속은 현재 클래스의 속성을 자 식 클래스에게 물려주는 것을 말한다.
  • 30. 인터페이스 (interface) • • 13년 10월 25일 금요일 인터페이스는 사전적 의미 로 상호작용하다라는 의미 를 가지고 있음 외부에 내부를 직접 개방 하지 않고 인터페이스를 통해서 내부의 기능을 간 접 사용할 수 있도록 하는 기능 1. 바이오스 전원공급 2. 하드 전원공급 3. 메모리 전원공급 4. 바이오스 부팅 5. ....
  • 31. 패키지(package) • 패키지는 클래스나 인터페이스를 묶어주는 워 크스페이스 역할을 한다. • 패키지를 이용하면 인터페이스, 클래스를 묶어 서 모듈로 묶어 줄 수 있다. 예) 패키지 선언방법 package com.pizzastudio; class Test.. { ... } 13년 10월 25일 금요일
  • 33. 클래스 정의 class 키워드와 {, } 를 사용하여 몸체를 지정 몸체에는 필드, 생성자, 메서드를 정의 클래스명은 문자로 시작, 문자와 숫자만 사용 예) public class 클래스명{ 필드선언; 생성자선언; 메서드선언; } 13년 10월 25일 금요일
  • 34. 상속과 인터페이스를 통 한 클래스 정의 class 클래스명 extends 부모클래스명 implements 인터페이스명{ 필드 정의; 생성자 정의; 메서드 정의; } 13년 10월 25일 금요일
  • 35. 클래스 정의(변수선언) 변수선언방법:접근제어자 변수타입 변수명 = 값; 변수 선언위치 : 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일 금요일
  • 36. 클래스의 정의 (메서드 정의) • 메서드 정의 방법 접근제어자 반환타입 메서드명(변수타입 변수 명, ...) { ... return 반환값; } 사용예 public void sum(int x, int y){ return x + y; } 13년 10월 25일 금요일
  • 37. 클래스 정의(생성자) • 생성자 정의 방법 public 클래스명(매개변수타입 매개변수,...){ } • 생성자 생성 및 사용예 public Notebook(int cpu, int memory){ } Notebook mybook = new Notebook(); 13년 10월 25일 금요일
  • 38. 메서드에 값 전달 방법 • 값에 의한 전달 void callVal(int p) • 참조에 의한 전달 void callRef(String a) callVal(1); callRef("value"); 13년 10월 25일 금요일
  • 39. 객체의 기본 • 객체의 생성 Computer my = new Computer(1); 1. 선언 : Computer my 2. 생성 : new Computer 3. 초기화 : Computer(1) 4. 할당 : my = new Computer(1); 13년 10월 25일 금요일
  • 40. 객체의 기본(계속) • 객체의 사용방법 생성된객체명.필드명 : d1.name, new Computer().name 메서드 호출방법 생성된객체명.메서드명(인자) : my.getCpu(); 13년 10월 25일 금요일
  • 41. this • this는 생성된 객체 자신을 가리키는 자바의 키워드 • this.필드명 또는 this.메서 드명으로 필드와 메서드 호출 • this(인자...)로 객체 자신의 생성자를 호출할 수 있음 13년 10월 25일 금요일
  • 43. 클래스 변수/메서드 • 클래스 변수와 클래스 메서드는 클래스에서 생성된 모든 객체에서 호출되어도 동일한 값 동일한 결과를 반환하는 메서드이다. • 클래스 변수/메서드 정의 방법 : static int COUNT; static void parseInt(); • 클래스 변수/메서드 사용 방법 : Integer.COUNT, Integer.parseInt(); 13년 10월 25일 금요일
  • 44. 중첩클래스 • 중첩 클래스 정의 : 클래스 내에 클래스를 정 의, 논리적으로 로직을 그룹핑할 목적 또는 정 보 은닉의 목적으로 사용됨 • 종류 : 이너 클래스, 로컬 클래스, 익명 클래스 13년 10월 25일 금요일
  • 45. 이너 클래스 • 이너클래스는 클래스 내, 메서드 바깥에 선언되 는 클래스이고 바깥 클래스 객체 생성 시에 동 시에 생성된다. • 예) class OuterClass{ class InnerClass{ ... } ... } 13년 10월 25일 금요일
  • 46. 로컬 클래스 • 클래스 내부의 특정 블럭(메서드나 블럭) 내에 선언되는 클래스 • 사용예) public class Member{ ... public void validJuminNo(){ class JuminNo{ ... } return new JuminNo(); } 13년 10월 25일 금요일
  • 47. 익명 클래스 • 익명 클래스는 선언장소는 로컬클래스와 동일하 나 클래스의 이름을 사용하지 않는다. • 사용예) public class Hanger{ ... public void print(){ ... Clothes shirths = new Clothes(){ public void printColor(){ ... } } } 13년 10월 25일 금요일
  • 48. Enum 타입 • Enum 타입은 사전에 정의된 상수의 집합과 같 다. Enum을 주로 사용하는 곳은 주, 방위, 색 배 열과 같은 일련의 상수 집합을 사용하는 곳이다. • 사용예)enum Color{ RED, ORAGNE, public YELLOW, BLUE, PURPLE} Color.RED, Color.ORANGE 13년 10월 25일 금요일
  • 50. 인터페이스의 정의 • 자바에서 인터페이스를 정의하기 위해서는 interface 키워드를 사용하여 선언해야 한고 메서 드 내용을 정의하지 말아야 한다. • 사용예) public interface Figure{ public String getName(); public double getArea(); } 13년 10월 25일 금요일
  • 51. 인터페이스 구현 • 자바에서 인터페이스를 구현하기 위해서는 구 현할 클래스에서 implements 키워드로 인터페 이스를 구현해야 한다. 사용예) public class Triangle implements Figure{ ... public String getName() { ... } public dboule getArea() { ... } 13년 10월 25일 금요일
  • 52. 인터페이스의 사용 • 인터페이스를 구현한 객체들은 인터페이스 타 입의 변수에 할당될 수 있다. • 사용예) Figure a = new Triangle(); a.getArea(); 13년 10월 25일 금요일
  • 53. 상속 • 상속은 부모 클래스의 속성을 자식클래스에 물 려줄 수 있는 방법을 제공한다. • 자바의 모든 클래스는 java.lang.Object 클래스 를 상속받고 있다. • 사용예) public class Bmw320d extends Car{ .... 13년 10월 25일 금요일
  • 54. 오버라이딩(Overriding) • 자식 클래스는 부모 클래스의 메서드를 재정의 하여 사용할 수 있다. 이를 오버라이딩 (overriding) 이라고 부른다. • 사용예 public class Bmw320d extends Car{ @Override public void printCarName(){ ... 13년 10월 25일 금요일
  • 55. 다형성(polymorphism) • 사전적 정의 : 같은 종에서 개체가 형태와 형질 등에 대해 다양성을 나타내는 상태 • 자바에서의 의미 : 동일한 부모 클래스를 상속 받은 자식클래스들에서 부모에게 물려받은 공 통 속성이외에 자식클래스만의 다양한 특성을 만들 수 있다. 13년 10월 25일 금요일
  • 56. super • 자식 객체에서 부모 객체에 접근하기 위해서 사용되는 키워드 • 부모 객채 셍성자/메서드 호출 방법 super(인자1, 인자2, ...) super.메서드이름(인자1, 인자2, ...) super(speed, gearType, engineType..) super.print(); 13년 10월 25일 금요일
  • 57. 추상클래스와 메서드 • abstract 키워드를 이용하여 선언하며 추상 클 래스의 일부 클래스는 몸체를 구현할 수도 있 고, 인터페이스 처럼 메서드 선언만 할 수도 있 다. • 추상 클래스를 상속받은 클래스에서 선언받은 클래스를 구현하면 된다. public abstract class Parent{ abstract void print(); 13년 10월 25일 금요일
  • 58. Number와 String 13년 10월 25일 금요일
  • 59. 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일 금요일
  • 60. String 클래스 • String 클래스는 문자열을 처리할 수 있는 클래스 • 실무에서 가장 많이 사용되는 클래스 13년 10월 25일 금요일 메서드 length indexOf substring replace
  • 61. StringBuilder 클래스 • StringBuilder(CharSequence cs), StringBuilder(int capacity), StringBuilder(String s) • append • insert • delete • replace 13년 10월 25일 금요일
  • 62. Date와 Time 다루기 13년 10월 25일 금요일
  • 63. 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일 금요일
  • 64. 날짜 포멧 • DateFormat 클래스 // Locale KOREAN formatter = DateFormat.getDateInstance(...); today = new Date(); dayStr = formatter.format(today); System.out.println(dayStr); 13년 10월 25일 금요일
  • 65. 날짜 포멧(계속) • SimpleDateFormat String pattern = "서기 yyyy년 MM월 dd일 HH 시 mm분 ss초 "; SimpleDateFormat formatter = new SimpleDateFormat(pattern, Locale.KOREA); String todayStr = formatter.format(today); 13년 10월 25일 금요일
  • 66. 정규식과 플랫폼 환경 13년 10월 25일 금요일
  • 67. 정규식 • 정규식(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일 금요일
  • 68. 정규식(계속) • 미리 정의된 패턴 . : 모든 문자 d : 숫자 D : 숫자가 아닌 문자 s : 공백문자 S : 공백이 아닌 문자 w : 알파벳과 숫자 W : 알파벳과 숫자가 아닌 문자 13년 10월 25일 금요일
  • 69. 정규식(계속) • 수량자(정량자) 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일 금요일
  • 70. 정규식(계속) • 정규식 사용방법 Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); 13년 10월 25일 금요일
  • 71. 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일 금요일
  • 72. 자바의 환경변수 • OS에서는 환경변수를 Properties와 동일한 방식으로 보관하고 있다. • System.getenv() 메서드는 JVM의 환경변수 Map 형식으로 반환한다. 13년 10월 25일 금요일
  • 74. 제네릭 • 제네릭(Generic)은 파라미터의 형식을 미리 정의하는 것이다. • class 클래스명 <T1, T2, ... Tn>{ ... } • 타입파라미터 : T(Type), K(Key), N(Number), E(Element),V(Value), 기타 • Type<String> a = new Type<String>(); • 제네릭 메서드 13년 10월 25일 금요일
  • 75. 타입 추론과 타입추론 • 자바 컴파일러는 메서드 호출 시, 객체 생성 시 에 제네릭 타입을 유추할 수 있다. 추론 알고리 즘은 인자의 타입이나 호출 결과로 반환 되는 값에 의해 결정된다. • 예) public class JukeBox<T extends Number> { ... } JukeBoxDemo.addJukeBox(new Integer(10), list); 13년 10월 25일 금요일
  • 76. 와일드 카드 • 제네릭 코드에서 명시적으로 어떠한 타입의 객체가 들어오는지 모를 경우, ? 기호를 사용하 구분 사용하는 곳 상한와일드카드 <? extends T> 써야하는 곳 하한와일드카드 <? super T> 읽어야 하는 곳 무제한와일드카드 13년 10월 25일 금요일 형태 <?> 쓰거나 읽어야 하는 곳
  • 77. 어노테이션 • 어노테이션은 프로그램에 대한 메타데이터를 제공하는 역할을 한다. 하지만 프로그램의 코 드로서 동작하지는 않는다. • 선언 : public @interface Description { • 사용 : @Description( ... ) public class TestAnnotation { 13년 10월 25일 금요일
  • 80. Set • 정의 : 인터페이스이고 자료를 중복해서 저장 할 수 없는 목록 • 주요 클래스 : TreeSet, HashSet, LinkedHashSet • Collection<Type> list = new HashSet<Type>(); • 주요 메서드 : add, remove, set, get 13년 10월 25일 금요일
  • 81. List • 정의 : 인터페이스이며 중복된 자료를 저장하 는 목록 • 주요 클래스 : ArrayList, LinkedList • List<String> list = new ArrayList<String>(); • 주요 메서드 : get, set, add, remove, indexOf 13년 10월 25일 금요일
  • 82. Queue • 정의 : 선입선출 구조의 자료구조를 제공 • 주요 클래스 : LinkedList • Queue<String> linkedQueue = new LinkedList<String>(); • 주요 메서드 : element, add, peek, poll, offer 13년 10월 25일 금요일
  • 83. Deque • 정의 : queue 자료구조는 한 쪽에서만 입력이 되고 다른 한 쪽에서는 출력만 되는 구조인 반 면에 deque는 양쪽에서 모두 입출력이 가능한 구조이다. • 주요 클래스 : ArrayDeque, LinkedBlockingDeque • 주요 메서드 : addFirst, addLast, pollLast,pollFirst, peekFirst, peekLast 13년 10월 25일 금요일
  • 84. Map • 정의 : 키와 값으로 이루어진 자료구조 • 주요 클래스 : HashMap, TreeMap, LinkedHashMap • 주요 메서드 : put, get, remove, size, keySet, containKey 13년 10월 25일 금요일
  • 86. 예외 • 컴파일 또는 프로그램 실행 도중에 예상치 못 한 데이터가 유입되거나 문제가 발생할 경우 에 발생하는 이벤트 • 예외(Exception)객체에 에러가 발생했을 때 상태와 정보가 저장된다. • 예외가 발생하면 시스템에서 예외를 던진다. • 예외를 처리할 수 있도록 예외를 잡아야 한다. 13년 10월 25일 금요일
  • 87. 예외 처리방법 try{ // 예외가 발생할 것 같은 구문 }catch(Exception1 e1){ // e1라는 이름을 가진 Exception1 객체 }catch(Exception2 e2){ // e2라는 이름을 가진 Exception2 객체 }finally{ // finally 내의 괄호 구문은 무조건 실행 된다. } 13년 10월 25일 금요일
  • 88. 예외 클래스 모든 예외 클래스는 Exception 클래스를 상속받고 있다. Exception 클래스에 서는 getMessage, printStackTrace, toString 메서드 제공 13년 10월 25일 금요일
  • 89. 예외 던지기 public void execute() throws IOException { ... } public void execute(List<String> list){ if(list == null){ throw new ListException(); } ... } 13년 10월 25일 금요일
  • 90. try-resource AutoCloseable를 구현한 클래스에 한하여 사 용 자동으로 리소스를 반환해준다. try(BufferedReader in = new BufferedReader(new FileReader("foo.in"))){ System.out.println(in.readLine()); }catch(Exception e){ } 13년 10월 25일 금요일
  • 91. 사용자 정의 예외 • 사용자 정의 예외를 만들기 위해서 Throwable 을 상속받은 Exception 및 하위 클래스를 상속 받아 만듬 • 예) public class ListException extends RuntimeException { ... } 13년 10월 25일 금요일
  • 93. 프로세스와 쓰레드 • 프로세스 : 독립적인 자원을 가지고 하나의 독 립된 실행단위. 프로세스는 별도의 메모리 공 간을 가지고 있다. • 쓰레드 : 경량 프로세스라고 부르며 별도의 자 원과 메모리 공간을 가지고 있다. 하나의 프로 세스는 하나의 쓰레드를 가지고 있다. 13년 10월 25일 금요일
  • 94. 쓰레드 생성 • Runnable 인터페이스로 쓰레드 구현 • Thread 클래스를 상속받아 쓰레드 구현 • Thread 클래스의 주요 메서드 interrupt() : 쓰레드의 중단 join() : 쓰레드의 대기 13년 10월 25일 금요일
  • 95. 동기화 문제 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일 금요일
  • 96. synchronized와 기본락 • 쓰레드 간의 간섭과 메모리 불일치 문제 해결 을 위해 synchronized 구문과 메서드를 제공 • public synchronized void increment() {...} • 자바의 모든 객체는 Lock을 가지고 있다. 이를 모니터락 또는 모니터라고 부른다. • 쓰레드에서 객체에 접근하려고 할 때 객체의 모니터락을 획득한 뒤에 객체에 접근한다. 13년 10월 25일 금요일
  • 97. 교착상태,기아상태 • 교착상태(DeadLock)은 두 개 이상의 쓰레드 가 서로 끝나기를 기다리고 있는 상태 • 기아상태(Starvation)는 다수의 쓰레드가 하나 의 자원을 공유할때 하나의 쓰레드가 자원을 점유하고 놔주지 않는 상태 • synchronized 를 이용해서 자원을 동기화할 때 위의 상태에 빠지지 않도록 조심해야함 13년 10월 25일 금요일
  • 98. lock관리 • synchronized(Object) • notify • notifyAll • wait 13년 10월 25일 금요일
  • 99. java.util.concurrent • ReentrantLock • ExecutorService Threadpooling Thread 생성 및 실행 BlockingQueue, ConcurrentHashMap 13년 10월 25일 금요일
  • 100. 기본 I/O와 파일 I/O 13년 10월 25일 금요일
  • 101. 기본 I/O • • 13년 10월 25일 금요일 입력 스트림 : 소스에서 데 이터를 순차적으로 읽는 것 출력 스트림 : 대상에 데이 터를 순차적으로 쓰는 것
  • 102. 바이트,캐릭터,버퍼스트 림 • 바이트 스트림 : 8 바이트 단위로 입/출력하는 스트림, FileInputStream, FileOutputStream • 캐릭터 스트림 : 문자형 데이터타입을 지원하는 스트림, 캐릭터 셋을 설정해야함, FileReader, FileWriter • 버퍼 스트림 : 버퍼를 가진 스트림, BufferReader, BufferWriter, BufferedInputStream, BufferedOutputStream 13년 10월 25일 금요일
  • 103. 콘솔출력 및 포멧팅 • Console console = System.console(); • System.out.format(“ 3 x 4 는 %d 이다”, i); • %[인자번호$][플래그][폭][.정밀도]유형 • System.out.format("%1$+20.5f %n",Math.PI); -> " 13년 10월 25일 금요일 +3.14159"
  • 104. 데이터, 객체 스트림 • • 객체 스트림은 파일 또는 네트워크에 객체를 저장할 수 있는 I/O를 제공해준다. ObjectInputStream, ObjectOutputStream • 13년 10월 25일 금요일 데이터 스트림은 String 타입의 데이터뿐만 아니라 기본형 타입의 값도 다룰 수 있다. DataInputStream, DataOutputStream 직렬화(serialization)는 객체를 저장하기 위해서 복원 가능한 형태의 스트림으로 저장하는 행위를 말한다.
  • 105. nio.Path클래스 • • • • • • 13년 10월 25일 금요일 Path 클래스는 디렉토리와 파일 경로에 대한 정 보를 담고 있다. Path p = Paths.get("/Users/system") p.getName() : Users p.toString() : /Users/system p.getNameCount() : 3 p.subPath(0,1) : Users
  • 106. 디렉토리와 파일 다루기 • 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일 금요일
  • 107. 파일에 읽고 쓰기 • Files.readAllBytes, Files.readAllLines, Files.write • Files.newBufferedWriter, Files.newBufferedReader • SeekableByteChannel s = Files.newByteChannel(...) 13년 10월 25일 금요일
  • 108. FileVisitor • FileVisitor는 특정 조건에 맞는 파일 또는 디렉토리 를 추출할 수 있게 해준다. • • • visitFile : 디렉토리 내의 파일이 호출 되었을 때 • visitFileFailed : 디렉토리 내의 파일을 호출 할 수 없 을때 13년 10월 25일 금요일 preVisitDirectory : 디렉토리 내에 들어가기 전에 postVisitDirectory : 디렉토리에서 나올 때, 이 때에 는 하위 디렉토리는 탐색이 끝났다.
  • 110. OSI 7 계층 A컴퓨터 B컴퓨터 Application layer Application layer Presentation layer Presentation layer Session layer Session layer Transport layer Transport layer Network layer Network layer Datalink layer Datalink layer Physical layer Physical layer 13년 10월 25일 금요일
  • 111. TCP와 UDP • TCP : 인터넷 프로토콜(IP)기반으로 동작하며 세션이 유지된 상태로 메시지를 전달 • UDP : 인터넷 프로토콜(IP)기반으로 동작하며 데이터 전송에 대한 신뢰성이 없다. 13년 10월 25일 금요일
  • 112. 포트 • 13년 10월 25일 금요일 포트 : 하나의 물리적 인 커넥션을 여러 개 의 연결로 분할하여 사용할 수 있도록 부 여되는 번호
  • 113. URL 클래스 • URL은 웹페이지의 주소를 의미함 • 자바에서는 손쉽게 웹페이지에 접근할 수 있 도록 URL클래스를 제공 • URL hostURL = new URL("http:// blog.pizzastudio.org/"); • BufferedReader br = new BufferedReader(new InputStreamReader(host.openStream())); 13년 10월 25일 금요일
  • 114. TCP프로그래밍 • 서버와 클라이언트 프로그램 구조 • 서버: server = new ServerSocket(9999); clientSocket = server.accept(); • 클라이언트 : socket = new Socket("localhost", 9999); 13년 10월 25일 금요일
  • 115. UDP 프로그래밍 • UDP는 독립적인 데이터그램 단위로 데이터 를 잘라서 전송한다. 데이터그램이 순서대로 도착할 지에 대한 보장이 없다. • DatagramSocket socket = new DatagramSocket(9998); DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); socket.send(packet); 13년 10월 25일 금요일
  • 117. 데이터베이스 • 자료를 저장하고 관리하기 위한 별도의 시스 템 • 자료저장 방법에 따라 관계형 데이터베이스, 객체형 데이터베이스등이 있으나 현재 관계형 데이터베이스가 가장 널리 사용됨 • 대표적인 제품은 Oracle, MySQL, MS-SQL등 이 있음 13년 10월 25일 금요일
  • 118. 관계형 데이터베이스 • 자료를 저장할 때 테이블 단위로 자료를 저장 함 • 테이블은 행과 열로 구분되어 있는 구조 • SQL이라는 일종의 언어를 통해서 자료를 질 의할 수 있음 • SQL : select * from emp; select * from dept; • select, insert, update, delete, create 13년 10월 25일 금요일
  • 119. JDBC • 데이터베이스에 접근하여 작업할 수 있도록 연결을 제공하는 라이브러리 모음 • 데이터베이스별로 JDBC 드라이버가 존재한 다. • JDBC 인터페이스는 모두 동일하기 때문에 데 이터베이스별로 JDBC를 사용하는 방법은 동 일하다. 13년 10월 25일 금요일
  • 120. Connection • • • jdbc:oracle:thin -> jdbc 드라이버 이름 • • 13년 10월 25일 금요일 Connection con = DriverManager.getConnection("jdbc:oracle:thin: @//localhost:1521/xe","system","manager"); xe -> 오라클 DB의 sid localhost:1521 -> 데이터베이스 서버의 주소와 포 트번호 system, manager -> DB의 아이디와 패스워드
  • 121. 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일 금요일
  • 122. ResultSet 타입 • 커서의 동작방 식을 지정하거 나 ResultSet의 변경을 데이터 베이스에 직접 반영할 수 있다. 13년 10월 25일 금요일 TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENITIVE CONCUR_READ_ONLY CONCUR_UPDATEABLE
  • 123. 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일 금요일
  • 124. RowSet • • 13년 10월 25일 금요일 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();
  • 126. JComponent • JComponent -▷ Container -▷ Component • 스윙의 모든 컴포넌트는 JComponent를 상속 받고 있다. • setToolTipText, setBorder, setMinimumSize, 더블 버퍼링, 키 연결, 드래 그 앤드롭 관련 기능 제공 13년 10월 25일 금요일
  • 128. Label, TextField, TextArea • JLabel label = new JLabel("라벨입니다.", JLabel.CENTER); • JTextField field = new JTextField(20); • JTextArea area = new JTextArea(20,10); 13년 10월 25일 금요일
  • 129. Button • JButton button = new JButton("저장"); • JCheckBox krBox = new JCheckBox("한 국"); • JRadioButton krRad = new JRadioButton("한국"); • ButtonGroup group = new ButtonGroup(); • group.add(krRad); 13년 10월 25일 금요일
  • 130. Dialog • • public class DialogExample extends JPanel implements ActionListener { … @Override public void actionPerformed(ActionEvent e) { • 13년 10월 25일 금요일 JOptionPane.showMessageDialog(frame, "다이얼로그 테스트입니다."); 메시지 타입: ERROR_MESSAGE, INFORMATION_MESSSAGE,WARNING_MESSAGE, QUESTION_MESSAGE, PLAIN_MESSAGE
  • 131. Progress monitor • 프로그레스 모니터를 사용하면 다이얼로그에 진행상태를 표시할 수 있다. • ProgressMonitor progressMonitor = new ProgressMonitor(ProgressMonitorExample. this,"Task Number 1 ", "", 0, task.getLengthOfTask()); 13년 10월 25일 금요일
  • 132. Table, Scroll Pane • JTable table = new JTable(data, columnNames); JScrollPane scrollPane = new JScrollPane(table); table.setFillsViewportHeight(true); 13년 10월 25일 금요일
  • 133. ComboBox와 List • JComboBox fruitList = new JComboBox(fruits); • DefaultListModel model = new DefaultListModel(); • JList list = new JList(model); • list.setSelectionMode(ListSelectionModel.SI NGLE_INTERVAL_SELECTION); 13년 10월 25일 금요일
  • 134. 이벤트 처리 pubic class EventExample … implements ActionListener{ // 1. 이벤트 리스너 작성 // 2. 이벤트 리스너에서 이벤트를 받았을 때 처리해 야할 내용을 작성 public void actionPerformed(ActionEvent e){ ... } public void test(){ // 3. 이벤트를 받아야할 컴포넌트에 이벤트 리 스너를 등록한다. btn.addActionListener(this); 13년 10월 25일 금요일
  • 135. 이벤트의 종류 • 캐럿 리스너 • 속성 변경 리스너 • 액션 리스너 • 컨테이너 리스너 • 포커스 리스너 • 아이템 리스너 13년 10월 25일 금요일 • 리스트 선택 리스너 • 마우스 리스너
  • 136. The End 13년 10월 25일 금요일