Java programming pdf

3,691 views
3,396 views

Published on

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

Published in: Education
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,691
On SlideShare
0
From Embeds
0
Number of Embeds
356
Actions
Shares
0
Downloads
146
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

Java programming pdf

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

×