① 배열의 활용 - 섞기
import java.util.Arrays;
class Ex5_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<100;i++){
int n=(int)(Math.random()*10);
int tmp=numArr[0];
numArr[0]=numArr[n];
numArr[n]=tmp;
}
System.out.println(Arrays.toString(numArr));
}
}
- random()을 이용해서 배열의 임의의 위치에 있는 값과
배열의 첫 번째 요소 nummArr[0]의 값을 교환하는 일을 100번 반복해서 섞는다.
② String 배열의 생성과 초기화
- String[] str=new String[]; 과 같이 int형 배열의 선언과 생성 방법은 다르지 않다.
- String[] str=new String[] {"AA", "BB", "CC"}; //new String[]은 생략할 수 있다.
str[1]="AA";
str[2]="BB";
str[3]="CC";
③ String클래스
- String객체(문자열)는 읽을 수만 있을 뿐 내용을 변경할 수 없다.
→ 변경 가능한 문자열을 다루려면, StringBuffer클래스를 사용하면 된다.
④ String클래스의 주요 메서드
메서드 | 설명 |
char charAt(int index) | 문자열에서 해당 위치(index)에 있는 문자를 반환한다. |
int length() | 문자열의 길이를 반환한다. |
String substring(int from, int to) | 문자열 해당 범위의 문자열을 반환한다. (to는 포함 안 됨) |
boolean equals(Object obj) | 문자열의 내용이 같은지 확인한다. 같으면 true, 다르면 false |
char[] toCahrArray() | 문자열을 문자배열(char[])로 변환해서 반환한다. |
String str="ABCDE";
char ch=str.CharAt(3); //문자열 str의 4번째 문자 'D'를 ch에 저장.
String tmp=str.substring(2,4); //str에서 'CD'만 반환. (to는 포함 안 됨.)
if(str.equals("abcde")){ //str과 "abcde"의 내용이 같은지 확인함.
...
}
⑤ 2차원 배열의 선언
- 2차원 배열을 선언하는 방법은 1차원 배열과 같다. 다만 대괄호[]가 하나 더 들어간다.
ex) int[][] score=new int[4][3];
score[0][0] | score[0][1] | score[0][2] |
score[1][0] | score[1][1] | score[1][2] |
score[2][0] | score[2][1] | score[2][2] |
score[3][0] | score[3][1] | score[3][2] |
⑥ 2차원 배열의 초기화
- 2차원 배열도 괄호{}를 사용해서 생성과 초기화를 동시에 할 수 있다.
다만, 1차원 배열보다 괄호{}를 한 번 더 써서 구분해 준다.
int[][] score=new int[][] { // //new int[][] 생략 가능.
{1,2,3},
{4,5,6}
};
→ 한 줄 보단 줄바꿈을 해주는 것이 보기도 좋고 이해하기 쉽다.
class Ex5_9{
public static void main(String[] args){
int[][] score={
{100, 100, 100}
, {20, 20, 20}
, {30, 30, 30}
, {40, 40, 40}
, {50, 50, 50}
};
int korTotal=0, engTotal=0, mathTotal=0;
System.out.println("번호 국어 영어 수학 총점 평균");
System.out.println("==========================================");
for(int i=0;i<score.length;i++) {
int sum=0;
float avg=0.0f
korTotal+=score[i][0];
engTotal+=score[i][1];
mathTotal+=score[i][2];
System.out.printf(%3d", i+1);
for(int j=0;j<score[i].length;j++) {
sum+=score[i][j];
System.out.printf(%5d", score[i][j]);
}
avg=sum/(float)score[i].length;
System.out.printf("%5d %5.1f%n", sum, avg);
}
System.out.println("==========================================");
System.out.printf("총점:%3d %4d %4d%n", korTotal, engTotal, mathTotal);
}
}
결과
번호 국어 영어 수학 총점 평균
==========================================
1 100 100 100 300 100.0
2 20 20 20 60 20.0
3 30 30 30 90 30.0
4 40 40 40 120 40.0
5 50 50 50 150 50.0
==========================================
총점: 240 240 240
-new int[5][3]; 에서 [5]는 score.length이고 [3]은 socre[i].length이다.
⑦ Arrays클래스의 유용한 메서드
- 배열의 비교와 출력 : equals(), toString()
toString() | 배열의 모든 요소를 문자열로 출력한다. |
deepToString() | 2차원 뿐만 아니라 다차원 배열을 출력한다. |
equals() | 두 배열에 저장된 모든 요소를 비교해서 같으면 true, 다르면 flase를 반환한다. |
deepEquals() | 다차원 배열 비교에 사용한다. |
- 배열의 복사 : copyOf(), copyOfRange()
copyOf() | 배열 전체를 복사해서 새로운 배열을 만들어 반환한다. |
copyOfRange() | 배열의 일부를 복사해서 새로운 배열을 만들어 반화나한다. |
→ 늘 그렇듯이 copyOfRange()에서 범위를 지정할 때 지정된 범위의 끝은 포함되지 않는다.
- 배열의 정렬 : sort()
sort() | 배열을 오름차순으로 정렬할 때 사용한다. |
'프로그래밍 > Java' 카테고리의 다른 글
Java_객체지향언어(2)_인스턴스변수, 클래스변수, 지역변수, 메서드 사용법, 기본형 매개변수와 참조형 매개변수의 차이 (0) | 2022.10.23 |
---|---|
Java_객체지향언어(1)_클래스와 객체_객체 생성과 사용 방법 (0) | 2022.10.21 |
Java_배열(1) (2) | 2022.10.05 |
Java_조건문과 반복문(2) (0) | 2022.09.29 |
Java_조건문과 반복문(1) (0) | 2022.09.22 |