20문제 4지 선다


1. 자바 언어의 특징

운영체제에 독립적 즉 OS(플랫폼)에 무관

보안이 강력

고급언어

객체지향



2. 자바언어 실행순서

*.java (소스 파일) -> 컴파일(javac.exe) -> *.class (바이트코드 클래스 파일) -> 실행(java.exe)



3. 자바의 자료형타입

가. 정수형

byte(1바이트, 8비트), 

short(2바이트, 16비트), 

int(4바이트, 32비트), 

long(8바이트, 64비트)

나. 실수형

float(4바이트, 32비트), 

double(8바이트, 64비트)

다. 논리형

boolean(1비트, true or false)

라. 단일문자

char

마. 레퍼런스 자료형(기본 자료형 8가지 외의 자료형): 클래스형, 배열형, 인터페이스형 

클래스형: 클래스로부터 생성된 객체(인스턴스)의 시작 주소값을 가진다

예) String name = “이순신”;  

Student student = new Student(1111, “이순신”);

배열형: 자바에서는 배열을 클래스로 취급하기 때문에 생성된 배열의 시작 주소값을 가진다

예) int[] array = new int[10];

인터페이스형: 인터페이스를 구현한 클래스의 인스턴스 시작 주소값을 가진다

예) Remote remocon = new RemoteControl();



4. 자바의 증감식: i++, ++i, i--, --i

증감 연산자: 1씩 증가(i++, i=i+1, i+=1), 1씩 감소(j--, j=j-1, j-=1)

++i : 선증가(현재 i 값에서 1 증가 시킨 후의 값을 씀)  --i : 선감소

i++ : 후증가(현재 i 값을 쓰고 난 다음 1 증가)  i-- : 후감소


5. 배열 생성법

배열은

가. 하나 이상의 값을 저장할 때 사용한다

나. 고정된 크기다

다. 단 하나의 자료형 타입만 저장이 가능하다

라. 배열의 인덱스는 0부터이다


생성은

자료형[] 이름 = 자료형[크기] // 타입[] 식별자 = new 타입[크기]

자료형 이름[] = 자료형[크기] // 타입 식별자[] = new 타입[크기]


int[] array = new int[5]; // 크기가 5인 array란 이름의 정수형 배열 생성


array[0] = 1;

int array[] = { 1, 2, 3, 4, 5 };



6. if, swich~case

가. if(조건){ // if 문

조건이 참이면 실행;

}

if(조건){ // if ~ else 문

조건이 참이면 실행;

}else{

조건이 거짓이면 실행;

}

if(조건1){ // if ~ else if ~ else 문

조건1이 참이면 실행;

} else if(조건2){

조건2이 참이면 실행;

} else{

조건1, 조건2이 거짓이면 실행;

}

나. switch(변수){

case 변수내용: // 변수 내용과 같은 case 일 경우 실행되는 영역

실행문;

break;

case 변수내용:

실행문;

break;

default: // 변수 내용과 같은 내용이 없는 경우 실행되는 기본값

기본 실행문;

break;

}

switch(식){

case 값1:

명령문들

break;

default :

명령문들

break;

}



7. for

for(초기화; 종료조건; 반복실행){

종료조건이 참인 동안 반복적으로 실행될 구문

}



8. 반복문 종류

가. for(초기화; 종료조건; 반복실행){

종료조건이 참인 동안 반복적으로 실행될 구문

}

for(초기화식; 조건식; 업데이트식){

실행부분

}

나. 향상된 for문 - 주로 배열항목 처리시 

for(변수타입 변수이름 : 배열이름){

실행부분

}

다.  while(조건){

조건이 참인 동안 반복 실행 영역

}

라.  do {

1. 일단 한번은 실행한다

2. 조건식이 참인 동안 반복한다

} while(조건식);

마. break, continue

break문 - 반복작업을 중간에 중단.

반복문 내에서 break문을 만나면, break문 이하의 내용을 중단하고 블럭( { } )을 탈출한다

continue문 - 실행을 즉시 중단하면서 반복은 지속.

반복문에서 continue문을 만나면, 아래 문장을 실행하지 않고 블럭의 처음으로 돌아가서 반복을 계속함



9. try catch 예외처리문

Try ~ Catch, 자바의 예외처리 순서

가. try구문으로 진입

나. try구문에서 정상 구문이 실행되다가 예외가 발생하면

다. 제어가 catch구문으로 이동, catch블록에서 예외를 처리

라. 예외 유무와 상관없이 finally 문은 무조건 마지막으로 실행


try{

문장;

} catch(exception e){

예외처리 구문;

} fianlly{

문장;

}


try{

try 블록

} catch (익셉션타입 익셉션변수) {

catch블록

} finally {

finally블록

}



10. 클래스 구성요소

클래스 구성요소 : 변수명(필드명), 생성자, 메서드



11. 클래스, 인터페이스 상속 // 추가정리 필요

자식클래스에서 부모클래스와 동일한 이름의 변수를 정의하면 부모클래스의 변수는 상속을 받지 않고 자식클래스의 변수를 사용한다

super는 부모클래스를 가리킨다.

super.x하면 부모클래스의 변수 x를 호출한다


인터페이스(Interface)

가. interface 예약어로 정의

나. implements 예약어로 상속한다 || 클래스 상속은 extends 예약어로 한다

다. 다중 상속 가능 || 클래스는 단일상속만 가능

라. new에 의해 객체 생성을 못한다

마. 상수(수정할 수 없는 변수)와 추상메서드만 올 수 있다

바. 인터페이스에 정의된 메서드는 추상메서드다. 추상메서드이기 때문에 인터페이스를 상속받은 자식클래스에서 추상메서드를     오버라이딩 해야한다



12. 인터페이스, 추상메서드 오버라이딩 강제성 // 추가정리 필요

가. 부모클래스에 있는 메서드와 동일한 메서드를 자식클래스에서 재정의해서 사용하는 것

나. 오버라이딩은 상속관계를 전제로 한다

다. 자식클래스에서 오버라이딩 된 부모클래스의 메서드는 super.부모메서드이름()로 호출

라. 오버로딩과 다른 개념

(같은 클래스 내에서 메서드를 재정의 하면 오버로딩, 상속 등에 의해 다른 클래스에서 메서드를 재정의 하면 오버라이딩?)


추상클래스를 상속받는 클래스는 반드시 추상 메서드를 오버라이딩으로 구현해야한다

추상클래스는 서브 클래스들이 특정 메서드를 반드시 구현하도록 강제성을 부여한다



13. 접근지정자(Access Modifiers)

class 접근지정자

-public : 패키지 상관없이 어디서든 접근 가능

-생략 : 같은 패키지 안에서만 접근 가능


메서드, 필드 접근지정자

-public : 패키지 상관없이 어디서든 접근가능

-protected : 같은 패키지 않에서 접근 가능, 상속이 됐을 때 다른 패키지에서 접근 가능

-생략 : 같은 패키지 안에서만 접근 가능

- private : 같은 페키지 안에서만 접근 가능


가. private: 같은 패키지의 같은 클래스 내에서만 접근 가능

나. 생략(기본 접근지정자): 같은 패키지 내에서만 접근 가능

다. protected: 같은 패키지의 다른 클래스+ 상속받은 자식클래스에서 접근 가능

라. public: 같은 패키지 뿐만 아니라 다른 패키지에서도 접근 가능


public          - 같은 패키지 or 다른 패키지

protected     - 같은 패키지 or 다른패키지의 상속받은 자식클래스

생략            - 같은 패키지

private         - 같은 패키지의 같은 클래스



14. printf()

printf("출력제어", 출력문);


출력제어

%d - 정수

%f - 실수

%c - 문자

%s - 문자열

%b - boolean

등등등


\n 개행

\t 탭

\b 한칸 back

\r 커서를 맨앞으로



System.out.printf("%d,%d", a,b); // int a,b 일 때 %d


System.out.printf('%s', String str )

System.out.printf('%c', char ch )

System.out.printf('%d', int i )


15. java.util 패키지의 Random 클래스 : random();

java.util 패키지의 일부인 Random 클래스는 의사난수 발생기(Pseudorandom number generator)이다.

Random 클래스는 일정 범위의 값들에서 한 개의 수를 임의로 선택한다.


Random generator = new Random();

 // int 값의 범위에서 정수 랜덤값을 추출한다.

// (-2,147,483,648 ~2,147,483,647)

num1= generator.nextInt(); // nextInt() - int타입 난수를 리턴, nextInt(5) - 0이상 5미만의 int 타입 난수를 리턴

System.out.println("A random integer: "+num1);  

        

// 0~9 사이의 정수 랜덤값을 추출한다.

num1= generator.nextInt(10);            

System.out.println("Form 0 to 9: " + num1);

        

// 1~10 사이의 정수랜덤값을 추출한다.

num1= generator.nextInt(10) + 1;        

System.out.println("Form 1 to 10 : " + num1);

        

// 20~34 사이의 정수 랜덤값을 추출한다.

num1= generator.nextInt(15) + 20;   // nextInt(15) 로 0~14인 15개 중에 +20하면 20~34   

System.out.println("Form 20 to 34: " + num1);



16. Integer클래스 하위 메서드

Wrapper 클래스 중 Integer 클래스

parseInt(String) - 문자열 인수를 부호 비트가 있는 십진수 정수로 구문 분석합니다. 

ex) int total = Integer.parseInt("12345"); 12345라는 문자열을 int 타입의 값으로 바꾸어서 total 변수에 저장


byteValue() - Integer의 값을 바이트로 리턴합니다.

decode(String) - 문자열을 Integer로 코드화를 해제합니다.

doubleValue() - Integer의 값을 double로 리턴합니다.

equals(Object) - 객체를 지정한 객체와 비교합니다.

floatValue() - Integer의 값을 부동 소수(float)로 리턴합니다.

getInteger(String) - 지정된 이름을 가진 시스템 특성의 정수 값을 판별합니다.

getInteger(String, int) - 지정된 이름을 가진 시스템 특성의 정수 값을 판별합니다.

getInteger(String, Integer) - 지정된 이름을 가진 시스템 특성의 정수 값을 판별합니다.

hashCode() - Integer의 해시 코드를 리턴합니다.

intValue() - Integer의 값을 정수(int)로 리턴합니다.

longValue() - Integer의 값을 long으로 리턴합니다.

parseInt(String, int) - 문자열 인수를 두 번째 인수에서 지정된 밑수의 부호 비트가 있는 정수로 구문 분석합니다.

shortValue() - Integer의 값을 short로 리턴합니다.

toBinaryString(int) - 정수 인수의 문자열 표시를 2진수의 부호 비트가 없는 정수로 작성합니다.

toHexString(int) - 정수 인수의 문자열 표시를 16진수의 부호 비트가 없는 정수로 작성합니다.

toOctalString(int) - 정수 인수의 문자열 표시를 8진수의 부호 비트가 없는 정수로 작성합니다.

toString() - Integer의 값을 표시하는 String 객체를 리턴합니다.

toString(int) - 지정된 정수를 표시하는 새로운 String 객체를 리턴합니다.

toString(int, int) - 두 번째 인수에서 지정된 밑수로 첫번째 인수의 문자열 표시를 작성합니다.

valueOf(String) - 지정된 String 값으로 초기 설정된 새로운 Integer 객체를 리턴합니다.

valueOf(String, int) - 지정된 String의 값으로 초기 설정된 새로운 Integer 객체를 리턴합니다.



17. 멀티스레드 처리하는 법

가. 멀티스레드는  하나의 프로그램 내에서 여러개의 작업이 동시에 수행되는 것

나. 자바에서 멀티스레드 구현방법

1) Thread클래스를 상속하는 법. 단 단일 상속만 가능

2) Runnable인터페이스를 상속하는 법. 다중 상속이 가능함


스레드는 프로세스 내에서 동작하는 작은 실행 단위

여러개의 스레드를 사용해서 동시에 어떤 작업을 수행하는 것이 멀티 스레드


프로세스 - 프로세스는 운영체제 내에서 동작하는 독립적인 실행 단위로써 독립적인 주소공간을 가지며 동작


스레드 - 스레드는 하나의 프로세스 내에서 동작하는 작은 실행 단위

1. 프로세스보다 작은 단위이기 때문에 프로세스보다 가볍다

2. 스레드는 서로 자원을 공유하면서 동작한다


스레드는 프로세스 위에서 메모리를 서로 공유하면서 동작, 이때 스레드는 자신만의 지역변수를 가질 수 있다


스레드 생성

1. Thread클래스를 상속

class T1 extends Thread{ 

public void run(){

System.out.println("Thread T1");

}

}


T1 t = new T1(); // 또는 Thread t = new T1();

t.start();


java.lang.Thread 클래스의 생성자

Thread() // 새로운 스레드 객체를 생성

Thread(String name) // 새로운 스레드 객체를 지정된 이름으로 생성


java.lang.Thread 클래스의 메서드

void run() // 스레드가 생성되어 실행될 때 호출되는 메서드


2. Runnable 인터페이스를 구현

class T2 iimplements Runnable{ 

public void run(){

System.out.println("Thread T2");

}

}


T2 t2 = new T2();    // Runnable 인터페이스를 구현하는 클래스의 객체를 생성한 다음

Thread th = new Thread(t2); // 그 객체를 생성자 파라미터로 삼아 Thread 객체를 생성해야함

th.start();


java.lang.Runnable 인터페이스의 생성자

Thread(Runnable target)[] // 새로운 스레드 객체 생성, target은 run()메서드를 호출할 객체

Thread(Runnable target, String name) 


java.lang.Runnable 클래스의 메서드

void run() // 스레드가 생성되어 실행될 때 호출되는 메서드




18. java.util 패키지의 컬랙선

컬렉션(Collection) - Set, List, Queue 가 있다

1) 하나 이상의 값을 저장할 수 있다

2) 가변적 크기다. 

3) 복수 자료형 타입을 동시 저장 가능하다


컬렉션 중 리스트(List) 인터페이스 - ArrayList, Vector, LinkedList 가 있다

ArrayList 클래스 (java.util패키지)

가. 하나 이상의 요소값을 저장할 수 있다

나. 복수 자료형 타입을 동시 저장 가능하다 // 복수 자료형 타입의 동시 저장을 막으려면 제네릭 사용

다. 가변적 크기

라. 중복값 저장 허용(순서를 인덱스로 관리하기 때문)

마. 순차적 저장(인덱스 순서대로 저장)



'Web Develop. > Java' 카테고리의 다른 글

Java 월말평가 정리  (0) 2014.08.28
자바 수업 내용 정리-5  (0) 2014.08.11
자바 수엽 내용 정리-4  (0) 2014.08.07
자바 수업 내용 정리-3  (0) 2014.08.05
자바 수업 내용 정리-2  (0) 2014.08.04
자바 수업 내용 정리-1  (0) 2014.07.30

+ Recent posts