[기초]Method , Array ,

2010. 1. 31. 09:46Java

■ Method 의 정의 및 용법
자주 반복하여 사용하는 내용에 대해 특정 이름으로 정의한 묶음

접근_제한자 지정_예약어 결과형_리턴값
메서드명(매개변수들) throws 예외_클래스들{
   내용 정의부;
}
-Call by Name : 메서드의 이름에 의해 호출되는 메서드로 특정 매개변수 없이 실행
-Call by Value : 메서스를 이름으로 호출할 때 특정 매개변수를 전달하여 그 값을 기초로 실행하는 메서드
-Call by Reference : 메서드 호출 시 매개변수로 사용되는 값이 특정 위치를 참조하는 reference 변수
(배열,클래스 객체) 

※ Call by Value 와 Reference 의 차이 : 원본 데이터 값이 변하냐 안하냐!!!!(응 그거 궁금했어용)
Call by Value : 안변해 , Call by Reference : 변해!!

결과형 리턴값 : 메서드를 실행한 후 결과로 되돌려 주는 값
- return 예약어를 이용
- void : 실행 후 돌려 줄 결과가 없을 때
-  원시 타입 자료형 : 8대 자료형(boolean , byte,short,char,int,long  , float, double)
-  클래스형 : 모든 클래스나 인터페이스 형 (String)

■ 단일 차원 배열
배열의 정의 : 동일한 자료 형으로 선언된 데이터 공간을 메모리 상에 연속적으로 나열하여 데이터 관리의 효율성을 높인 것이다.!!!!!!
기존 자료 처리와 배열의 비교한다면 동일 자료형의 관리 , 유사 문구의 관리
cf) Garbage Collection Heap 에 할당을 시킬수 있는 연산자는 new 

 - 배열은 Reference 이다.
 - 배열명은 4byte 객체이다.
 - 배열의 길이는 length 속성을 이용할 수 있다.
 - 배열의 실제 데이터는 Heap 영역에 표시된다. (new 연산자의 의미 : Heap에 대한 할당)
 - Garbage Collection에 의해서 소멸된다.
 - 각 공간은 첨자로 구분된다. (첨자는 0부터)
 - 공간의 값은 자동으로 Default로 초기화 된다.(다른건 꼭 초기화 시켜라!!!)
 - 동적으로 공간 할당이 가능하다.선언과 초기화
 - 자료형[] 배열명 = {초기값,초기값...};

 - 단일 차원 배열의 선언
자료형 [] 배열명;    or   자료형 배열명[];

 int [] x ;
(레퍼런스 주소 저장)
GC 힙 영역   12 byte 할당 -> 메모리 할당    x= new int[3];
런타임 스택 영역 -> 4byte 메모리 할당(void main) 주소를 저장하는 공간(레퍼런스)
레지스트리 영역

단일 차원 배열의 초기화
배열명 = new 자료형[개수];
동적메모리할당 연산자
배열명 = new 자료형[]{초기값,초기값...};

■ main Mehtod의 String 배열
(public static void main(String[] args){})

용도 : 프로그램 시작시 초기값 전달
형식 : java 클래스 명 초기값 초기값
배열 형식 : args.length
종료 Method : System.exit(처리수)
단일 차원 배열

 for(int i = 0; i<inwon ; ++i){
   for(int j =0  ; j<inwon; j++){
    if(tot[i]<tot[j]) rank[i]++;
   } 
  }

■ 다차원 배열
 자료형[][] 배열명;
 자료형 [] 배열명[];
 자료형 배열명 [][];

다차원 배열의 초기화
 배열명 = new 자료형[수][수]'
 배열명 = new 자료형[][]{{2,3},{4,4,5,5,5}};  행과 열이 동일하지 않아도 된다.
 배열명 = new 자료형[개수][]; //동적배열
- 행의 개수는 지정하고, 열의개수는 비워두면... 동적 배열이 가능합니다.
- 다차원 배열에서 각 영역은 모두 Reference 이고, 마지막 배열 공간만 실제 데이터 공간이래
- 다차원 배열은 단일 차원 배열로 구성된다.
- 다차원 배열은 다중 For 문과 함께 사용하죠
- 다차원 배열에서는 동적 배열이 가능해버렷!!!