[Java] 자바 # 16, Array(배열) [feat.향상된 for문]
- 프로그래밍 언어/Java
- 2019. 2. 11. 21:37
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로도 배열이 만들어 진다~
배열의 길이는 불변이다.
- 한번만든 방의 갯수는 절대로 수정할 수 없다.
-> 배열의 길이를 미리 예측!!해야한다.!!
동적배열 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}
}
};
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #18, 정적 멤버 static (정적 키워드) (1) | 2019.02.13 |
---|---|
[Java] 자바 #17, 클래스(Class)와 접근제한자. (0) | 2019.02.11 |
[Java] 자바 #15 String과 문자열 함수(replace, substring, charAt 등등..) (0) | 2019.02.10 |
[Java] 자바 #14 반복문 (2) -while, do-while문 (0) | 2019.02.10 |
[Java] 자바 #13 반복문(1) - for문(break,continue) (0) | 2019.02.10 |