13
박혜웅

C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

  • Upload
    -

  • View
    83

  • Download
    1

Embed Size (px)

Citation preview

Page 1: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

박혜웅

Page 2: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

추상화

현실세계의 클래스화

은닉화

private 변수를 이용하여 변수를 숨기고,

set...(), get...() 메소드를 이용하여 인터페이스 제공

상속

extends 키워드를 이용, 클래스 단일 상속만 지원.

implements 키워드를 이용, 인터페이스 다중상속 지원

다형성(상속이용)

overriding: 부모의 메소드에 세 메소드 추가 ride[타다]

overloading: 부모의 메소드를 덮어버림 load[싣다]

2

Page 3: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

Access Modifier 어디서나 접근 하위 패키지에서 접근 같은 패키지 접근

public O O O

protected X O O

default(기본값) X X O

protected X X X

Usage Modifier class 키워드 앞 variable 앞 method 앞

static X 클래스 변수로 선언됨. 클래스 메소드로 선언됨

final 상속 불가 변경 불가 overriding 불가

abstract 객체 생성 불가 X 빈 메소드

3

Page 4: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

메소드명 기능 예제

toString() 객체의 값을 문자열로 변환 String str = obj.toString();

equals() hashCode() 를 이용하여 같은 객체인지 비교 if( obj1.equals(obs2) )

clone() 객체 복사 obj2 = obj1.clone();

finalize() 객체 제거전 항상 자동으로 호출되는 메소드

getClass() 객체의 클래스 정보를 객체로 생성

Class info = ogj.getClass();info.getname();info.getSuperclass();info.DeclaredField();info.getDeclaredMethod();

4

Page 5: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

클래스명 기능 비고

String 자열 관리 고정된 문자열에 사용

StringBuilder 문자열 관리 변경이 많은 문자열에 사용. 동기화 안함

StringBuffer 문자열 관리 변경이 많은 문자열에 사용. 동기화 함

StringTokenizer 문자열을 여러 개의 토큰으로 분리함.

5

Page 6: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

타입 종류 예제

Primitive (원시형)선얶 int a;

대입 a=10;

Array (배열)

선얶 int a[];

할당 a = new int[10];

대입 a[1] = 5;

Reference (클래스)

정의class Person{public int a; }

선얶 Person p1;

할당 p1=new Person();

대입 p1.a = 5;

6

Page 7: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

종류 type size 값의 범위 예제

문자 char 2 유니코드 1문자

char c = 'a';char c = '한';char c = '\n';char c = '\uAAAA'

정수

byte 1 -27 ~ 27 -1 -128 ~ 127 byte b = (byte)5;

short 2 -215 ~ 215 -1 -32768 ~32767 short s = (short)30000;

int 4 -231 ~ 231 - 1 약 -21억 ~ 21억 int i = 1234567890;

long 8 -263 ~ 263 -1 약 922경 ~ 922경 long l = 1234567890123L

실수

float 4 float f = 3.14f;

double 8double d = 3.14;double d = 3.14d;

논리 boolean 1boolean b = true;boolean b = false;

자동 형변환

byte -> short,char -> int -> long -> float -> double

7

Page 8: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

변환 코드 예제

원시형->객체 new 랩퍼클래스(원시형) Byte B = new Byte(b);

객체->원시형 객체.xxxValue() byte b = B.byteValue();

문자열->원시형 랩퍼클래스.parseXXX(문자열) int I = Integer.parseInt("123");

문자열->객체랩퍼클래스.valueOf(문자열)new 랩퍼클래스(문자열)

Integer I = Integer.valueOf("123");Integer I = new Integer("123");

객체->문자열 객체.toString() String s = I.toString();

Primitive byte short char int long float double boolean

Wrapper Byte Short Character Integer Long Float Double Boolean

Boxing & UnBoxing

boxing: 원시형 -> 객체

unboxing: 객체 -> 원시형

8

Page 9: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

try-catch-finally

finally: 예외발생 여부에 관계없이 항상 실행

catch: 상위 예외가 앞쪽에 오도록 순서 유지 catch(Exception e){ }

throws : 예외 발생시 호출한 곳으로 예외 전달 void a() throws Exception{}

class c throws Exception{}

throw: 강제로 예외 발생 void a(){ throw new Exception(); }

9

Page 10: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

java.lang.Throwable

java.lang.Error java.lang.Exception

java.lang.RuntimeException java.io.IOException

java.lang.NullPointerException

java.lang.IndexOutOfBoundsException

10

인터페이스

주요 클래스

클래스

Page 11: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

class Super{

void a() throws IOException{}

}

class Sub extends Super{

void a(){}

void a() throws IOException{}

void a() throws FileNotFoundException{}

void a() throws Exception{} //IOException하위클래스 아님void a() throws SQLException{} //IOException하위클래스 아님

}

java.io.IOException

java.sql.SQLException

java.lang.Exception

java.io.FileNotFoundException

11

Page 12: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

Object

String, StringBuffer, StringBuilder

Math

Date, Calendar, GregorianCalendar, Thread

SimpleDateFormat, DecimalFormat, Formatter

12

Page 13: C프로그래머를 위한 Java 기초 입문 (Java1.5 기준)

switch(변수) 에서 변수에 사용가능한 변수타입

byte, char, short, int

static import 키워드

Static 클래스, 변수등의 패키지명 생략 import static java.lang.Math.*;

import static java.lang.System.out;

enum 키워드

기존 방식과 enum 사용방식 비교

13

기존코드 enum 사용코드

선얶

public class Gender{public static final int MALE=1;public static final int FEMALE=2;

}

public enum Gender{MALE, FEMALE

}

사용

void printGender( int g )switch(g)

case Gender.MALE: ~~~~~~case Gender.FEMALE: ~~~~~~

}

void printGender( Gender g )switch(g)

case MALE: ~~~~~case FEMALE: ~~~~~

}