[Java] 자바 # 16, Array(배열) [feat.향상된 for문]

3명의 학생의 국어성적을 보관하고 처리하는 작업을 합니다.

int kor1 = 85;

int kor2 = 80; 

int kor3 = 90;

평균 계산 : System.out.println( "평균 : "+(kor1 + kor2 + kor3) / 3);


근데 학생이 300명이면.....? int kor1; int kor2; int kor3; ......... int kor300; 미친짓이죠.

>> 그래서 배열을 사용합니다.


Array

배열

- 자료형[]( [] 요 네모는 차원이라고 한다.. 1차원 2차원. 하는거... )

자료형[] 배열명(변수) = new 자료형[길이]


int[] kor = new int[3];

kor[0]=100;

kor[1]=90;

kor[2]=80;


int sum = kor[0]+kor[1]+kor[2];

double avr = sum/3.0;


System.out.println("총점: "+sum+" 평균 : "+avr);



배열탐색

- 루프변수를 배열의 방번호(index)로 쓴다


int []nums = new int[5];


nums[0]=100;

nums[1]=200;

nums[2]=300;

nums[3]=400;

nums[4]=500;

for(int i =0; i<nums.length; i++){

System.out.println(nums[i]);

}


또는 향상된 for문을 이용!!

향상된 for문이란..??


String[] arr = {"홍길동","아무개","호호호"};


for( String str : arr){

System.out.println(str);

}

향상된 for문 : 배열에 들어있는 데이터의 자료형에 대해서 변수를 선언하고 차례차례 배열안의 값을 str에 담아서 반복을 하는 for문, 또는 for-each문이라고도 부른다.


* 배열범위 초과 *

System.out.println(nums[-1]);

System.out.println(nums[5]);



자바에서는 모든 자료형으로 배열을 만들수 있다.(**************)


- 이렇게 BufferedReader로도 배열이 만들어 진다~

BufferedReader[] reader = new BufferedReader[3]; 



배열의 길이는 불변이다.

- 한번만든 방의 갯수는 절대로 수정할 수 없다.

-> 배열의 길이를 미리 예측!!해야한다.!!


동적배열 Dynamic Array

- 컴파일 작업때는 배열의 기이가 미정, 런타임 작업 때 배열의 길이가 결정.


int count =300; // 학생수 입력했다 치면.

int[] kor = new int[count];


System.out.println(kor.length); //300명 분의 배열 공간 확보!



배열의 초기화

- 배열은 방을 만든 직후에 사용자가 직접 초기화를 하지 않더라고 자동으로 초기화가 된다.

- 이렇게 자동으로 초기화되는 값을 default값이라고 부른다.

- (모든 참조형의 특징임. 문자열 예외)

정수형 : 0

실수형 : 0.0

논리형 : false

문자형 : \0

참조형 : null



배열 복사

1. 얕은 복사. shallow copy

- 참조형 변수끼리 주소값을 복사

2. 깊은 복사. deep copy

- 실제 배열의 복사본을 생성


int[] nums={10,20,30,40,50}; // 원본배열

int[] copy1;

int[] copy2;

int[] copy3;


- 얕은 복사

copy1 = nums;


- 얕은복사의 특징

copy1[0] = 100;

System.out.println(nums[0]); // "카피본을 수정했는데도 원본이 수정"


- 깊은 복사( 대표적인 방법 : 직접 대입 )

copy2 = new int[nums.length];

for(int i =0; i <nums.length; i++){

copy2[i] = nums[i];

System.out.print(copy2[i]+"  ");

}


배열의 초기화 리스트


[1차원 배열]

int[] ns1=new int[]{10,20,30};

int[] ns2 = {10,20,30};


[2차원 배열]

int[][] ns3 = new int[][]{{10,20,30},{40,50,60}};

int[][] ns4 = {{10,20,30},{40,50,60}};


[3차원 배열]

int[][][] ns5 =

{

{

{10,20,30},{10,20,30},{10,20,30}

} ,

{

{10,20,30},{10,20,30},{10,20,30}

}

};







댓글

Designed by JB FACTORY