8. 클래스 2

(1) 배열의 단점을 보완하여 서로 다른 Type의 데이터를 묶음

(2) Access Modifier (접근제어 명시자) ->클래스, 메서드,변수 다 쓸수있음

1) default :생략된 형태,제한된 접근

2) public : 완전 개방

3) private :완전 폐쇄

4) protected : 제한된 폐쇄

(3) 매서드

1) 인자 전달 방식

 - 값에 의한 전달 (call by value) 

직접적으로 값만 전달 소량의 데이터 전달

 - 참조에 의한 전달(call by reference)

인스턴스의 주소전달 대량의 데이터 전달.

2) 재귀 호출(recursive call)

(4) Static

1) 인스턴스와는 상관 없이 별도의 메모리로 생성

2) 여러 인스턴스들이 공유할 수 있는 메모리

3) 클래스 변수

4) Static block

Static {

Static 변수들만 모아서 일괄적인 처리 가능

}

(5) 중첩 클래스 ( 내부 클래스)

1) static 클래스

2) 일반 클래스


* Design Pattern

- Singleton Pattern

Private, 생성자, static (새로운 Singleton Pattern을 만들 수 있다.)

Design Pattern 구현방법

  1. 절대로 외부에서 인스턴스를 만들지 못하게 한다.

  2. 클래스 내부에서 단 하나의 인스턴스를 만들게 한다.

  3. 만들어진 인스턴스를 외부에서 사용할 수 있게 한다.


prjClass2.zip


'Java' 카테고리의 다른 글

[JAVA 정리] 10. Package  (0) 2017.06.24
[JAVA 정리] 9. 클래스3  (0) 2017.06.24
[JAVA 정리] 7. Array 배열  (0) 2017.06.24
[JAVA 정리] 6. 매서드  (0) 2017.06.24
[JAVA 정리] 5. 클래스1  (0) 2017.06.24

7. Array

(1) 정의

   1) 많은 양의 데이터를 다루기 위한 방법(변수를 줄이기 위해)

   2) 같은 이름으로 정의된 연속적인 메모리 공간

int kor1, eng1, mat1;

int kor2, eng2, mat2;

int kor3, eng3, mat3;


int[] a1, a2, a3;

//배열은 반복문을 사용할 수 있음

(2) 문법

   1) 자바에서는 배열을 객체(=클래스)로 취급한다.

int[] a1 = new int[3];

int[] a2 = new int[3];

int[] a3 = new int[3];

//a1 참조변수 -> 인스턴스 해서


(3) 활용

   1) 검색

- Sequential Searching -순차검색

- Binary searching - 이분 검색

데이터의 중간위치를 구한다

해당 데이터가 찾고자 하는 데이터인지 확인.


For(int row=0; row<data.length-1; row++){

For(int col = row+1; col<data.length; col++){

If(data[row] < data[col]) // {

Int temp = data[row];

Data[row] = data[col];

Data[col]

}

}

}


2) 정렬 (오름차순,내림차순)

   (1) Swap algorithm(교체 알고리즘)

Int a = 10, b=5, c; //동시처리가 안되므로 변수 하나 더 생성

C=a;

A=b;

B=c;

   (2) 선택정렬 :기준을 하나 선택해서 정렬해 나가는 것

데이터 중 기준 선정하기(최대값/최소값, 맨끝)

->데이터값이아닌 위치를 기준

   (3) 버블정렬 :서로 이웃하는 것끼리 정렬

   (4) 삽입정렬



(4) 다차원 배월( 2차원 이상의 배열)

   1) 1차원 배열 :각각의 변수를 한 줄로 된 연속적인 공간

   2) 2차원 배열 : 1차원 배열을 하나로 합친 것

   3) 3차원 배열 : 2차원 배열을 하나로 합친 것

   4) 1차원 배열과 다차원 배열의 차이 

- 1차원 배열 :값에 직접 접근방식 (메모리에 접근)

- 다차원 배열 :주소(참조)에 의한 간접 접근


Int[] a1 = new int[3];

Int[] a2 = new int[3];

Int[] a3 = new int[3];

Int[][] = mew int[3][3];


(5) 불규칙 배열 (다차원 배열) ->동적 바인딩


Char[] name1 = {‘T’, ‘o’,‘m’};

Char[] name2 = {‘J’, ‘a’,‘n’, ‘e’};

Char[] name3 = {‘J’, ‘o’,‘h’, ‘n’, ‘s’, ‘o’, ‘n’};

Char[] name4 = {‘홍’, ‘길’,‘동’};


Char[][] names = new char[4][7];


Names[0] = new char[3];

Names[1] = new char[4];

Names[2] = new char[7];

Names[3] = new char[3];


(6) String

1) java.lang

2) 자바는 문자열을 객체로 취급한다.

3) 동일한 문자열(인스턴스)을 중복해서 생성하지 않는다.

  ->메모리 낭비를 하지 않는다.

단 new를 통해서 생성할 경우 강제로 인스턴스 생성

4)절대 수정 불가(읽기 전용)

5) StringBuffer 수정 가능


(7) CommandLine Argument(명령행 인자)

프로그램 실행할 때 넘어가는 인자.


*Scanner

 - java.util

알맹이 기능이 없고 다른 클래스의 도움을 주는 역할을 한다.


1차원배열은 노가다필요. 2차원배열은 가독성이 떨어짐.


데이터 보관 원초적인 방법

1) 변수화

장점 :쓰기편함

단점 :많은 양의 데이터 저장 x

2) 배열

장점 :많은 양의 데이터를 저장 가능

단점 :크기 정해야함( 많이 ->낭비/적음 ->부족)

같은 형식 ( 정수는 정수끼리 , 실수는 실수끼리)

삽입, 삭제 거이 불가능(데이터가 많으면 많을수록 불가능)

6. 메서드

   1) 동작(기능)을 구현하는 역할 (함수)

   2) 만드는법

반환형 메서드(…) {

기능정의

  }

   3) 사용하는 법

메서드명(…)

   4) 메서드의 호출방식

- 인자가 없는 방식

- 인자가 있는 방식

- 리턴값 (반환값)이 있는 방식


매개변수와 실인자는1대1형식,개수가 매칭되어야 한다.

   5) return

- 복귀할때 값을 반환(단 1개만 가능)

- 메서드 강제 종료 ( return밑에있는 코드는 실행 불가능)

   6) 메서드의 오버로딩(Overloading)

- 중복정의 ( 같은 이름의 메서드를 여러 개 만들 수 있다.)

- 다형성

- 매개변수의 개수,형식,순서

   7) 생성자(Constructor)

- 인스턴스(instance)를 생성해 주는 기능

- 용도 : 초기화

- 호출시점 :인스턴스를 생성할 때 만 호출 (일회용)

- 작성방법

메서드명(…) {

기능 정의

}

= >반환형이 없다. (void) 

- 메서드명은 클래스 명과 동일하게 지어야함

- 모든 클래스는 항상 기본 생성자를(인자 없는 생성자)소유

- 단,임의의 생성자(인자 있는 생성자)를 만들게 되면 더 이상 기본 생성자는 존재하지 않게 된다.


8) Garbage Collection 

- finalize(); 

이미 만들어 져있는 메소드

protected void finalize() {} = >현재 garbage collection이 호출된다는 것을 알수있다.

- 거꾸로호출 : callback



+ Recent posts