Javajungsuk5, Javajungsuk5_10
package javajungsuk5;
public class Ch05_1a3 {
public static void main(String[] args) {
// 5-1 ~ 5-3 배열의 생성과 선언, 배열의 인덱스
// 배열 선언 : 배열을 다루기 위한 참조변수의 선언
// 타입[] 변수이름; >> 배열 선언(참조변수)
// 변수이름 new 타입[길이]; >> 배열을 생성(실제 저장공간을 생성)
int[] score; // 1. 배열의 선언 (참조변수)
score = new int[5]; // 2. 배열의 생성 / int 저장공간 인덱스 0~4까지 5개 생성
// int[] score = new int[5]; / 배열의 선언과 생성을 동시에 할 수 있다.
score[3] = 100; // 4번째의 저장공간에 100을 저장한 것
System.out.println("score[0] = "+ score[0]);
System.out.println("score[1] = " + score[1]);
System.out.println("score[2] = " + score[2]);
System.out.println("score[3] = " + score[3]);
System.out.println("score[4] = " + score[4]);
int ang = score[3];
System.out.println("ang = " + ang);
}
}
package javajungsuk5;
import java.util.Arrays;
public class Ch05_4a5 {
public static void main(String[] args) {
// 5-4 ~ 5-5 배열의 길이, 배열의 초기화
// 배열의 길이 : 배열이름.length
// 배열은 한 번 생성하면 길이를 바꿀 수 없다. / 1. 왜? , 2. 부족할 땐 어떻게?
// 1. 메모리를 저장했고 공간이 더 필요한데 그 다음 공간들이 비어있다는 보장이 없다.
// 2. 더 큰 배열을 생성하여 기존에 저장했던 것을 복사하고 저장한다.
int[] arr = new int[10]; // 길이가 5인 배열
System.out.println(arr.length); // index 범위 : 0~9 / 10개
for(int i = 0; i < arr.length; i++) {
System.out.println("arr["+ i + "] = " +arr[i]); // 요소를 출력
}
// 배열의 초기화 : 각 요소에 값을 정하기 전은 자동 초기화 값인 0으로 되어있다.
int[] num = new int[3];
// System.out.println(num[0]);
// System.out.println(num[1]);
// 10씩 증가하는 값
for(int j = 0; j < num.length; j++) {
num[j] = j * 10 + 10;
} // for의 끝
System.out.println(num[0]);
System.out.println(num[1]);
System.out.println(num[2]);
int[] score = {33, 44, 55}; // int[] score = new int[]{33, 44, 55};와 같다. new int[]는 생략이 가능하다.
System.out.println(Arrays.toString(score));
System.out.println("1%의 확률로 선언과 초기화를 나눠야할 때, 에러가 발생하지 않도록 나눠서 해야한다.");
}
}
package javajungsuk5;
import java.util.Arrays; // 엥? 자동으로 추가가 됐었네... Arrays를 사용하려면 import가 필요하다.
public class Ch05_6a7 {
public static void main(String[] args) {
// 5-6 ~ 5-7 배열의 출력
int[] num = {10, 20, 30, 40, 50}; // 길이가 5인 int배열
char[] charr = {'A', 'B', 'C', 'D'}; // 길이가 4인 char배열
System.out.println(num); // [I@2a139a55 >> [ 은 배열을 의미, I는 int, @는 위치(주소)를 의미한다.
System.out.println(charr); // ABCD가 출력된다.
System.out.println("배열의 이름을 출력하는 것으로는 num의 값들을 출력할 수 없다."); // 예외 : char >> 저장된 문자를 출력가능
for(int i = 0; i < num.length; i++) {
System.out.println(num[i]); // num의 값을 순서대로 하나씩 출력
} // for의 끝
// 더 편한 방법 : Arrays.toString()
System.out.println(Arrays.toString(num)); // 배열의 모든 요소를 한번에 출력
}
}
package javajungsuk5;
public class Ch05_8a9 {
public static void main(String[] args) {
// 5-8 ~ 5-9 배열의 활용(1): 총합과 평균, (2): 최댓값과 최솟값
int[] score = {100, 90, 88, 100, 100};
int sum = 0; // 총점을 저장하기 위한 변수
for(int i = 0; i < score.length; i++) {
sum += score[i];
} // for의 끝
// 1. 평균값 구하기
System.out.println(sum); // 총점을 출력
System.out.println(sum / score.length); // int / int = 정수가 나오기 때문에 틀린 출력
System.out.println(sum / (float) score.length); // 형변환을 해주어 평균값을 제대로 출력
// 2. 예제 참고
}
}
package javajungsuk5_10;
import java.util.Arrays;
public class Ch05_10a11 {
public static void main(String[] args) {
// 5-10 ~ 5-11 배열의 활용(3): 섞기, (4): 로또번호 만들기
int[] num = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.println(Arrays.toString(num));
// 배열의 길이만큼 반복
for(int i = 0; i < num.length; i++) {
int n = (int)(Math.random() *10); // num처럼 0 ~ 9
int tmp = num[0]; // 0을 i로 바꾸면 반복하며 인덱스의 자리 순서대로 임의의 값과 서로 값을 바꾼다. / 처음에는 0과 임의의 숫자
num[0] = num[n];
num[n] = tmp;
}// for의 끝
System.out.println(Arrays.toString(num));
} // main의 끝
}
package javajungsuk5_10;
import java.util.Arrays;
public class Ch05_12a13 {
public static void main(String[] args) {
// 5-12 ~ 5-13 String배열
// String은 기본형이 아닌 참조형이기 때문에 기본값이 0이 아니라 null로 저장이 된다.
String[] name = new String[3];// 3개의 문자열을 저장할 수 있는 배열을 생성
String[] ang = {"Ang!", "앙!"}; // 한번에 값을 저장
// 문자열을 직접 저장
name[0] = "Lee";
name[1] = "Ju";
name[2] = "hee";
System.out.println(Arrays.toString(name));
System.out.println(Arrays.toString(ang));
String[] fruit = {"orange", "Pomegranate", "cherry"};
for(int i = 0; i < 5; i++) {
int tmp = (int)(Math.random() * 3); // 0 ~ 2
System.out.println(fruit[tmp]); // 랜덤으로 출력
} // for의 끝
} // main의 끝
}
package javajungsuk5_10;
public class Ch05_14a15 {
public static void main(String[] args) {
// 5-14 ~ 5-15 String클래스
// String 클래스 = char[] + 메서드(기능) / 서로 관련이 있어서 결합한 것
// 내용을 변경할 수 없다.
String str = "ABCDE"; // "ABCDE" = char[]
char ch = str.charAt(2);
System.out.println(ch ); // 문자 'C'를 출력
String str2 = str.substring(1, 4); // from ~ to 범위 반환하는 매서드 / to는 포함하지 않는다.
String str3 = str.substring(1); // to를 쓰지 않으면 문자열의 길이 끝까지 출력한다. (1, str.length())와 같다.
System.out.println(str2);
System.out.println(str3);
}
}
package javajungsuk5_10;
public class Ch05_16a17 {
public static void main(String[] args) {
// 5-16 ~ 5-17 커맨드 라인 입력받기
// 커맨드 라인으로 입력한 값이 문자열 배열에 담겨서 전달된다.
// 커맨드 라인에서 값을 주면 프로그램 내에서 쓸수있다.
// 아 어려웡... 이게 뭐지
System.out.println("매개변수의 개수 : " + args.length);
for(int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "] = \"" + args[i] + "\"");
} // for의 끝
} // main의 끝
}
package javajungsuk5_10;
public class Ch05_18a20 {
public static void main(String[] args) {
// 5-18 ~ 5-20 2차원 배열
// 2차원 배열 : 테이블 형태의 데이터를 저장하기 위한 배열
// 1차원 배열이 여러개면 2차원 배열 / 2차원 배열이 여러개면 3차원 배열
int[][] num = new int[4][3]; // 4행 3열의 2차원 배열을 생성한다. / int * 4 * 3 >> int * 12의 공간이 생긴다.
int[][] baba = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}; // 2차원 배열의 생성과 초기화
System.out.println(num[0][0]);
System.out.println(baba[0][1]);
}
}
package javajungsuk5_10;
public class Ch05_21a23 {
public static void main(String[] args) {
// 5-21 ~ 5-23 2차원 배열(예제)
// for문 많이 쓰이기 때문에 외워야 한다.
// 개인별 총점과 평균 구하는 Ex5_9, Ex5_10예제 참고하기
int[][] num = {
{100, 100, 100},
{20, 20 , 20},
{30, 30, 30},
{40, 40, 40}
};
int sum = 0;
for(int i = 0; i < num.length; i++) {
for(int j = 0; j < num[i].length; j++) {
System.out.printf("num[%d][%d]=%d%n", i, j, num[i][j]);
sum += num[i][j];
}
} // for의 끝
System.out.println("sum=" + sum);
} // main의 끝
}
package javajungsuk5_10;
import java.util.Arrays;
public class Ch05_24 {
public static void main(String[] args) {
// 5-24 Arrays로 배열 다루기
// 배열의 비교와 출력 - equals(), toString()
// 배열의 복사 - copyOf(), copyOfRange()
// 배열의 정렬 - sort() / 오름차순
// Math클래스 - round() : 반올림 / random() : 랜덤
// deepToString() : 다차원(2차원 이상)일 때 사용한다. / 배열에 깊이 들어가서 출력
System.out.println("배열이 같은지 비교할 때 '=='을 쓰지 않고 equals()를 써야한다. "); // true, false를 반환
System.out.println("2차원 이상의 배열이면 deepEquals()를 써야한다. "); // deepToString()을 생각
int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, 2); // 2까지만 복사 >> [0, 1]
int[] arr3 = Arrays.copyOfRange(arr, 2 ,4); // from ~ to / 3부터 4까지라는 뜻이고 to는 포함하지 않고 출력 >> [3]
int[] arrall = Arrays.copyOf(arr, arr.length); // arr의 전체 복사 >> [0, 1, 2, 3, 4]
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr3));
System.out.println(Arrays.toString(arrall));
System.out.println(Arrays.copyOf(arr, arr.length)); // 배열의 출력은 Arrays.toString()을 써야 한다. [I@2a139a55
// 2차원 이상(다차원) 배열의 비교
String[][] eq = {
{"ang"},
{"ANG"}
};
String[][] eq2 = {
{"ang"},
{"ANG"}
};
System.out.println(eq==eq2); // 참조변수 값 비교 / false
System.out.println(Arrays.equals(eq, eq2)); // 1차원 배열일 때 사용 / false
System.out.println(Arrays.deepEquals(eq, eq2)); // 2차원 이상(다차원) 배열의 알맞은 비교 방법 / true
// 2차원 이상(다차원)의 배열일 때의 출력
int[][] num = {
{11, 22},
{33, 44}
};
System.out.println(Arrays.deepToString(num));
// 정렬하기
int[] sor = {6, 3, 5, 2}; // [2, 3, 5, 6]
Arrays.sort(sor);
int[] sor2 = sor;
System.out.println(Arrays.toString(sor2));
}
}
Comments