본문 바로가기
Language/JAVA

JAVA :: 자바 문법 정리(2)

by stern07s 2023. 4. 21.
728x90
반응형

JAVA :: 자바 문법 정리(2)

조건문과 반복문

JDK 1.5 부터 배열과 컬렉션에 저장된 요소에 접근할 때 기존보다 편리한 방법으로 처리할 수 있도록 for 문의 새로운 문법이 추가되었다.

for (타입 변수명 : 배열 또는 컬렉션) {
 // 반복할 문장
}

위의 문장에서 타입은 배열 또는 컬렉션의 요소의 타입이어야 한다. 배열 또는 컬렉션에 저장된 값이 매 반복마다 하나씩
순서대로 읽혀서 변수에 저장된다. 그러나 향상된 for 문은 일반적인 for 문과 달리 배열이나 컬렉션에 저장된 요소들을
읽어오는 용도로만 사용 수 있다는 제약이 있다.


반복문은 그저 같은 문장을 반복해서 수행하는 것이지만, 메서드를 호출하는 것은 반복문 보다 몇 가지 과정, 예를 들면 매개변수 복사와 종료 후 복귀할 주소저장 등, 이 추가로 필요하기 때문에 반복문보다 재귀호출의 수행시간이 더 오래 걸린다.

 

배열

배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것이다. 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한
참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다.


Java 에서는 배열의 길이가 0 일 수도 있다.


배열이름.length - 자바에서는 JVM 이 모든 배열의 길이를 별도로 관리하며, ‘배열이름.length’를 통해서 배열의 길이에 대한 정보를 얻을 수 있다. ‘배열이름.length’는 상수이다.


자바에서는 다음과 같이 배열을 간단히 초기화 할 수 있는 방법을 제공한다.

int[] score1 = new int[]{50, 60, 70, 80, 90}; // 배열의 생성과 초기화를 동시에
int[] score2 = {50, 60, 70, 80, 90} // new int[]를 생략할 수 있음

그러나 배열의 선언과 생성을 따로 하는 경우에는 생략할 수 없다.

int [] score;
score = new int[]{50, 60, 70, 80, 90}; // OK
score = {50, 60, 70, 80, 90}; // 에러. new int[]를 생략할 수 없음

만약 score 의 값을 바로 출력하면 어떻게 될까? 타입@주소의 형식으로 출력된다. ‘[I’는 1 차원 int 배열이라는 의미이고, ‘@’뒤에 나오는 16 진수는 배열의 주소인데 실제 주소가 아닌 내부 주소이다.

// 배열을 가리키는 참조변수 score 의 값을 출력
System.out.println(score); // [I@14318bb 와 같은 형식의 문자열이 출력된다.

예외적으로 char 배열은 println 메서드로 출력하면 각 요소가 구분자없이 그대로 출력되는데, 이것은 println 메서드가
char 배열일 때만 이렇게 동작하도록 작성되었기 때문이다.


for 문 대신 System 클래스의 arraycopy()를 사용하면 보다 간단하고 빠르게 배열을 복사할 수 있다.


자바에서 char 배열이 아닌 String 클래스를 이용해서 문자열을 처리하는 이유는 String 클래스가 char 배열에 여러 가지 기능을 추가하여 확장한 것이기 때문이다.


char 배열과 String 클래스의 한 가지 중요한 차이는, String 객체(문자열)는 읽을 수만 있을 뿐 내용을 변경할 수 없다. 
(변경 가능한 문자열을 다루려면, StringBuffer 클래스를 사용하면 된다.)

반응형

'Language > JAVA' 카테고리의 다른 글

JAVA :: 자바 문법 정리(4)  (0) 2023.04.23
JAVA :: 자바 문법 정리(3)  (0) 2023.04.22
JAVA :: 자바 문법 정리(1)  (0) 2023.04.20
JAVA :: 자바 용어 정리(5)  (0) 2023.04.19
JAVA :: 자바 용어 정리(4)  (0) 2023.04.18

댓글