Java/Java 기초

배열과 메소드

nickmorohe 2023. 12. 13. 15:32

1. 배열

 

(1) 배열의 선언


자료형[] 배열명 = new 자료형[배열크기];
자료형[] 배열명 = {값1, 값2, 값3, 값4};
자료형[] 배열명 = new 자료형[]{값1, 값2, 값3, .. }
자료형[] 배열명 = null;


(2) 배열의 사용


배열명[index]
저장공간으로 쓰일 때는 배열명[index] 뒤에 =(대입연산자)가 온다
값으로 쓰일 때는 배열명[index]로만 사용한다


(3) 배열과 for문 


배열선언
for(int i = 0; i < 배열명.length; i++){
              syso(배열명[i]);
}


2. for-each문(빠른 for문, 확장 for문)


배열이나 컬렉션을 순회할 때 사용하는 반복문
요소의 타입과 변수명을 지정하여 간편하게 순회 가능

for(자료형 변수명 : 배열 또는 컬렉션){
           // 요소에 대한 작업 수행
}

- 변수에는 배열의 요소가 한개씩 차례대로 담긴다
- 반복이나 증감식이 없음


(1) 주요 특징


배열 또는 컬렉션의 모든 요소를 차례대로 접근
요소를 수정할 수 없음(읽기전용)
인덱스는 사용 불가능
요소의 타입은 배열 또는 컬렉션의 타입과 일치해야함


(2) 유의사항


배열 또는 컬렉션이 비어있을 경우엔 NullPointerException 이 발생할 수 있으므로 예외처리를 필요
배열의 요소를 수정하는 작업이 필요한 경우 일반 for문을 사용해야함


3. 2차원 배열


배열안에 배열
※ 2차원 이상의 배열은 메모리 낭비가 심하므로 선호하지 않는다


(1) 2차원 배열 선언


자료형[][] 배열명 = new 자료형[행][열];
자료형[][] 배열명 = {{값1, 값2, 값3}, {값1, 값2, 값3}};


(2) 2차원 배열 길이


배열명.length; 행의길이
배열명[행인덱스].length; 열의길이


(3) 2차원에서 요소 값 넣기


for(int i=0; i < 배열명.length; i++){ //i 행인덱스
         for(int j=0; j< 배열명[i].length; j++){ //j 열인덱스
                배열명[i][j] = 값;
                출력시에도 syso(배열명[i][j]); 행인덱스와 열인덱스를 이용한다
         }
}


(4) 2차원 배열의 빠른 for문(for-each문)


for(int[] row : 배열명){ //바깥 for문에서 각 행을 가져오고
           for(int value : row){ // 안쪽 for문에서 행의 열요소를 가져온다
                        syso(value)
           }
}


3. 메소드


(1) 함수와 메소드


클래스 밖에 선언되어 있다면 함수라고 부르지만 클래스 내부에 선언되어있는 함수는 메소드라고 부른다
자바에서는 모든 함수가 클래스 내부에서 선언되기 때문에 메소드만 존재한다


(2) 메소드


기능
이름뒤에 소괄호
단, 키워드 뒤에 소괄호는 메소드가 아니다


(3) 메소드의 선언과 구현(정의)


리턴타입 메소드명(자료형 매개변수명, ...) //선언부
{ //구현부
                실행할 문장;
                return 리턴값;
}


1) 리턴타입 : 반환할 값이 있다면 반환값의 자료형을 작성한다. 없다면 void를 작성한다
2) 메소드명 : 동사로 작성한다
3) 매개변수: 외부에서 전달받을 값이 있다면 자료형과 순서에 맞게 선언해준다(자료형이 반드시 필요하다)
생략이 가능하다(외부에서 값을 받을 수 없다)
4) 실행할문장: 생략이 가능하다. 메소드의 기능을 구현하는 코드를 작성한다
5) return : 생략이 가능하다. 리턴값이 없다면 값이 아니다


(4) 메소드의 정의와 사용


메소드를 정의할 때는 {}중괄호가 있고 반드시 메소드 밖에서 정의한다
메소드를 사용할 때는 {}중괄호가 없고 반드시 메소드 안에서 사용한다