2023. 5. 11. 20:34ㆍ개발자 공부/Java
1. 배열 : 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
- 배열의 선언과 생성
배열의 선언 : 배열을 다루기 위한 참조변수의 선언
● 선언 방법
1) 타입[ ] 변수이름;
int[ ] age ; , String[ ] name;
2) 타입 변수이름[ ];
int age[ ]; , String name[ ] ;
● 배열의 생성 : 실제 저장공간을 생성
타입[ ] 변수이름 = new 타입 [길이]
ex) int[ ] age; → int 타입의 배열을 다루게 위란 참조 변수 age 선언
age = new int[5]; → int 타입의 값 5개를 저장할 수 있는 배열 생성
- 배열의 인덱스 : 각 요소 (저장공간)에 자동으로 붙는 일렬 번호
인덱스 (index)의 범위는 0부터 "배열의 길이 -1'까지
2. 배열의 길이와 초기화
- 배열의 길이 (int형 상수) : 배열이름 뒤에 "length"를 붙이면 배열 길이를 정수 형태로 반환한다.
int[ ] arr = new int [5]; → 길이가 5인 int 배열
int tmp = arr.length; → arr.length의 값은 5이고, tmp 값은 5가 저장된다.
"배열은 한번 생성되면 컴파일 후 실행되는 동안은 그 길이(크기)를 바꿀 수 없습니다."
- 배열의 초기화 : 배열의 각 요소에 처음으로 값을 저장하는 것을 의미합니다.
→ 배열은 기본적으로 저장 하려는 값의 타입의 기본값으로 자동 초기화 해준다.
● 초기화 방법
1) int[ ] num = new int[ ]{1, 2, 3, 4, 5, 6, 7, 8, 9};
2) int[ ] num = {1, 2, 3, 4, 5, 6, 7, 8, 9}; → new int[ ] 를 생략 가능
- 배열의 출력
int[ ] iArr = {100, 90, 80, 70, 60, 50, 40, 30, 20, 10}; → 배열을 가리키는 참조 변수 iArr 을 출력
System.out.println(iArr); → 메모리 주소와 비슷한 (I@7a81197d) 문자열이 출력 [(배열을 뜻함), I(int 타입을 뜻함), @(위치를 뜻함)
※ 예외 확인 하기 - char[ ]
char[ ] chArr = {'a', 'b', 'c', 'd'};
System.out.println(chArr); → abcd 가 출력되는데 이는 println 메서드의 기능 때문!
→ 배열의 요소 하나씩 출력하기
for (int i = 0; i < arr.length; i++) {
System.out.println("arr[" + i + "] = " + arr[i]);
}
→ Arrays.toString(배열) : 배열의 모든 요소를 문자열로 만들어서 반환한다.
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
}
}
- 총합과 평균
class Arrays3_2 {
public static void main(String[ ] args) {
int sum = 0; → 총합을 저장하기 위한 변수
float avg = 0f; → 평균을 저장하기 위한 변수
int[ ] score = {100, 40, 33, 50, 77, 29};
for (int i = 0; i < score.length; i++) {
System.out.println("score[" + i + "] = " + score[i]);
sum += score[i]; → 반복문을 이용해서 배열에 저장되어 있는 값들을 모두 더한다.
}
avg = sum / (float) (score.length); → 계산결과를 float 타입으로 얻기 위해 형변환
System.out.println("총합 = " + sum);
System.out.println("평균 = " + avg);
}
}
- 최대값과 최소값
class Arrays3_3 {
public static void main(String[ ] args) {
int[ ] score = {65, 97, 88, 43, 33, 91, 28};
int max = score[0]; → 최대값을 배열의 첫 번째 값으로 초기화 한다.
int min = score[0]; → 최소값을 배열의 첫 번째 값으로 초기화 한다.
for (int i = 1; i < score.length; i++) { → 배열의 두 번째 요소부터 읽기 위해서 변수 i의 값을 1로 초기화 한다.
if (score[i] > max) {
max = score[i];
} else if(score[i] < min) {
min = score[i];
}
}
System.out.println("최대값 = " + max);
System.out.println("최소값 = " + min);
}
}
- 랜덤으로 숫자 섞기
class Arrays3_4 {
public static void main(String[ ] args) {
int[ ] numArr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.println("원본 = " + Arrays.toString(numArr));
for (int i = 0; i < numArr.length; i++) {
int num = (int) (Math.random() * 10); → 0 ~ 9 중의 값을 임으로 얻는다
int tmp = numArr[0]; → numArr[0]과 number[n] 의 값을 서로 바꾼다
numArr[0] = numArr[n];
numArr[n] = tmp;
System.out.println("결과 = " + Arrays.toString(numArr));
}
}
3. String 배열
: 여래개의 문자열을 저장 할 수 있는 배열
String [ ] name = new String [3];
→ 3개의 문자열을 담을 수 있는 배열을 생성하며, 참조형 이기 때문에 기본값 null로 초기화 된다.
→ String 클래스는 내용을 변경할 수 없으며, 새로운게 만들어집니다.
ex) String name = "choi";
String firstName = "wb";
name = name + firstName;
4. 2차원 배열
: 테이블 형태의 데이터를 저장하기 위한 배열이다.
- 2차원 배열의 선언과 생성
: int[ ][ ] score = new int[4][3]; → 4행 3열의 2차원 score가 생성된다.
→ 행 index (0 ~ 행의 수 -1), 열 index (0 ~ 열의 수 -1)
- 2차원 배열의 초기화
1) int[ ] [ ] score = new int[ ][ ]{{ }, { }, { }, { }};
2) int[ ][ ] score = {{ }, { }, { }, { }};
4. Array
: 배열의 비교와 출력 _ equals ( ), toString( )
- 배열 출력
tostring ( ) : 배열을 문자열로 바꿔줌
deeptostring ( ) : 2차원 또는 다차원 배열 사용
- 배열 비교
1차원 비교에는 equals
System.out.println("Arrays.equals(strArr1[0], strArr2[0]) = " + Arrays.equals(strArr1[0], strArr2[0])); // true
- 배열 복사
● copyof () : 배열 전체를 복사
int [ ] arr = {0,1,2,3,4} ;
int [ ] arr2 = Arrays.copyof (arr.length); → arr2 = {0,1,2,3,4}
int [ ] arr3 = Arrays.copyof (arr, 3); → arr3 = {0,1,2}
int [ ] arr4 = Arrays.copyof (arr, 7); → arr3 = {0,1,2,3,4,0,0}
● copyOfRange () : 배열의 일부를 복사해서 새로운 배열을 만들어 반환하며, 지정된 범위의 끝은 포험되지 않는다.
int [ ] arr5 = Arrays.copyOfRange (arr, 시작부분, 끝부분 )
int [ ] arr5 = Arrays.copyOfRange (arr, 2, 4) → arr5 = {2,3}
- 배열의 정렬
● sort () : 배열을 정렬하는 역할
int[ ] arr = {3, 1, 8, 5, 9, 2, 10, 7, 6, 4};
Arrays.sort(arr); → 오름차순으로 정렬된다.
System.out.println("sort");
System.out.println("Arrays.toString(arr); → [0, 1, 2, 3, 4]
'개발자 공부 > Java' 카테고리의 다른 글
5/23일 [Java 문법 종합반] 2주차 : 연산자, 조건문, 반복문 (0) | 2023.05.23 |
---|---|
5/22일, [Java 문법 종합반] 1주차 : JVM, 변수 (0) | 2023.05.22 |
5/10일 사전캠프 Part 3 ( 조건문과 반복문) (0) | 2023.05.10 |
5/9일 사전캠프 2일차 Part 2 (연산자) (0) | 2023.05.09 |
5/9일 사전캠프 2일차 Part 1 (상수와 리터럴) (0) | 2023.05.09 |