toggle menu

[Java] 배열 선언과 초기화

2012. 7. 23. 09:16 JAVA

자바에서 배열도 객체이고, 배열을 선언한다고 해서 값을 저장할 공간이 만들어지는 것이 아니라 실제 메모리상의 배열을 가리키는 포인터가 만들어진다.



배열 선언

//타입[] 변수명으로 선언
int [] numberArray;


//타입 변수명 [] 으로 선언
int numberArray[];


//특정 값 대입하며 배열 선언
int [] intArray = { 1, 2, 3, 4 };
int [] intArray = new int [] { 1, 2, 3, 4 };


//객체이므로 doubleArray에는 null이 대입된다.
double [] doubleArray;


//배열 생성해 할당하면(초기화) 배열의 주소가 들어가게 된다.
doubleArray = new double[10];


//Boolean 형태로 배열을 선언하고 초기화하는 예제
boolean [] bitList;
bitList = new boolean[10]; //기본값으로 초기화
Arrays.fill(bitList, false); //특정 값으로 초기화


//배열의 길이
bitList.length // 10

 



배열을 주소형태로 파라메터값으로 넘기기

C언에서는 파라메터로 배열 등의 포인터를 전달해줄 수 있는데, 마찬가지로 동일하게 자바에서도 파라메터로 주소값을 넘길 수 있다.

class MainClass { 
	public static void main( String [] args ) {
		....
		new MainClass().printScore( args );
	}
	
	public void printScore( String [] args ) {
		......
	}
}

 

 

 

배열 정렬

Arrays.sort( 배열명 );

 



클래스 배열 선언

//클래스 배열 3개 선언
Test [] test = new Test[3];
System.out.println( test[0] );  // 각 배열에는 아직 NULL값만 존재한다.
System.out.println( test );  // 그러나 여기에는 주소값이 들어가있다!!

test[0] = new Test(); //이제야 객체가 들어간다. NULL값 대신 주소값이 들어가있다.

  

 

 

2차원 배열 선언

int [] [] intArrays = new int [행][열];

intArrays // 여기에는 주소값이 들어있다.
intArrays[0] // 여기에도 주소값이 들어있다.
intArrays[0][0] // 여기에는 0이 들어간다.

intArrays.length // 행의 갯수를 리턴한다.
intArrays[0].length // 이때는 열의 갯수를 리턴한다.

//다차원 배열의 할당 선언
boolean [] [] booleanArrays = { {true, true}, {false, false, false}, ... };

 

 

 

새롭게 바뀐 배열의 반복문

for( 배열타입 임시변수이름 : 돌리고 싶은 배열 이름 ) {
	System.out.print( 임시변수이름 );
}

//실제 예
for( int i : intArray ) {
	System.out.print( i ); //배열의 각 값이 i에 담겨진다.
}

 

 

 

새롭게 바뀐 배열의 반복문의 2차원 배열 적용

for( String [] s : stringArrays ) // 행을 가져오기
	for( String t : s ) // 열을 가져오기
		System.out.print( t ); //2차원 배열의 각 값이 t에 담겨진다.

 

 

 

2차원 배열 선언에 대한 고찰

public class ArrayTest {
	public static void main(String[] args) {
		/**
		 * 정상적인 2차원 배열 선언
		 */
		
		Object[][] Test = new Object[3][];
		
		System.out.println(Test.length);
		//현재 Test 배열의 크기이므로 3이 출력된다.
	
		for(int i=0; i<Test.length;i++) {
			Test[i] = new Object[3];
			
			Test[i][0] = i + " - 0";
			Test[i][1] = i + " - 1";
			Test[i][2] = i + " - 2";
		}
		
		for(int i=0; i<Test.length;i++) {
			System.out.print(Test[i][0] + "\t");
			System.out.print(Test[i][1] + "\t");
			System.out.println(Test[i][2]);
		}
		
		
		/**
		 * 비정상적인 2차원 배열 선언
		 */
		
		Object[] Test2 = new Object[3];
		
		System.out.println(Test2.length);
		//현재 Test 배열의 크기이므로 3이 출력된다.
	
		for(int i=0; i<Test2.length;i++) {
			Test2[i] = new Object[3];
			
			//아래 구문은 오류가 난다!!!!
			//즉 1차원 배열 안에 또다시 배열을 넣는 것은 불가능하다.
			
			Test2[i][0] = i + " - 0"; //오류!
			Test2[i][1] = i + " - 1"; //오류! 
			Test2[i][2] = i + " - 2"; //오류!
			
			//위의 정상적인 선언처럼 처음부터 2차원 배열로 선언후,
			//다시 그 안에 1차원 배열을 넣는 것이 정상적이다.

		}
	}
}

 

 

 


JAVA 관련 포스팅 더보기