
package com.haenin.section01.array;
import java.util.Arrays;
public class Application1 {
public static void main(String[] args) {
/* 목표, 배열에 대해 이해하고 */
int[] arr = new int[5]; /* 필기. heap 영역에 [0][0][0][0][0] */
System.out.println(arr[0]);
System.out.println(arr);
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
for (int i = 0; i < 5; i++) {
arr[i] = 10 * (i+1);
}
/* 설명. 반복문 없이 1차원 배열 출력해보기 */
System.out.println(Arrays.toString(arr));
}
}
package com.haenin.section01.array;
import java.util.Arrays;
public class Application2 {
public static void main(String[] args) {
/* 목표, 배열의 사용방법을 익혀 배열을 사용할 수 있다. */
/* 설명.
* 배열의 사용방법
* 1. 배열의 선언
* 2. 배열의 크기 할당
* 3. 배열의 인덱스 공간에 값 대입
* */
/* 설명. 배열의 선언 및 초기화는 따로 진행할 수 있다. */
int[] iArr;
char cArr[]; // []의 위차가 변수면 뒤에 있어도 동작하지만 지양하자
iArr = new int[5];
cArr = new char[5];
/* 설명. 참조자료형을 출력하면 실제로는 해당 자료형의 toString()이 실행된다. */
System.out.println("iArr = " + iArr);
System.out.println("iArr의 10진수 주소: " + iArr.hashCode());
System.out.println("iArr 배열에 담긴 값: " + Arrays.toString(iArr));
/* 필기. 참조자료형이 들어옴 -> 주소값 iArr.toString()이 자동으로 작성, 참조자료형이 들어와서 투스트링이 붙는다 생각 */
}
}
package com.haenin.section01.array;
import java.util.Arrays;
public class Application3 {
public static void main(String[] args) {
/* 목표, 배열에 들어갈 초기 기본값 및 전달인자로써의 배열 자료형 */
/* 설명.
* 값의 형태별 기본값
* 정수: 0
* 실수: 0.0
* 논리: false
* 문자: \\u0000, \\0
* 참조: null
* */
int[] iArr = new int[5];
iArr = null; /* 필기. 실제 값이 없다. 힙영역 주소를 가지고 있지 않다. */
System.out.println(iArr);
/* 설명. 크기 및 원하는 값이 채워진 상태의 배열 바로 만들어보기 */
int[] iArr2 = {10, 11, 12, 13, 14};
int[] iArr3 = new int[]{20, 21, 22, 23, 24};
System.out.println(Arrays.toString(iArr2));
System.out.println(Arrays.toString(iArr3));
/* 설명. 다만 new연산자를 생략해서 안되는 경우가 있다. */
test(new int[]{10, 11, 12, 13, 14});
// test({10, 11, 12, 13, 14}); /* 필기. new 연산자 없이 x */
}
private static void test(int[] iArr2) {
System.out.println("메소드에서 넘겨받은 배열 확인: "+ Arrays.toString(iArr2));
}
}
package com.haenin.section01.array;
import java.util.Arrays;
import java.util.Scanner;
public class Application4 {
public static void main(String[] args) {
/* 목표, 배열을 사용하는 예시를 작성할 수 있다. */
int[] score = new int[5];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println(( i+1 ) + "번째 학생의 자바 점수를 입력하세요: ");
score[i] = sc.nextInt();
}
System.out.println("현재까지 입력된 점수들: " + Arrays.toString(score));
/* 설명. 합계(sum) 구하기 */
/* 설명.
* 배열은 그 길이를 활용해야 할 때 length라는 변수에 접근해서 활용할 수 있다.
* ( 유지보수 측면 및 입력된 크기의 배열이 할당될 때 사용하는 것 )
* */
// int sum = 0;
// for (int i = 0; i < score.length; i++) {
// sum += score[i];
// }
// System.out.println("합계 = " + sum);
/* 설명. 향상된 for문(또는 foreach문) 활용하기(처음부터 끝까지 순회) */
int sum = 0;
for (int s : score) {
sum += s; // [] 없는 변수 활용 가능
}
System.out.println("합계: " + sum);
double avg = sum / (double)score.length;
System.out.println("평균: " + avg);
}
}
package com.haenin.section01.array;
public class Application5 {
public static void main(String[] args) {
/* 목표, 1차원 배열을 사용해 무작위 카드 뽑기 */
String[] shape = {"SPADE", "CLOVER", "HEART", "DIAMOND"};
String[] number = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "JACK", "QUEEN", "KING", "ACE"};
int randomShape = (int)(Math.random() * 4);
int randomNumber = (int)(Math.random() * 13);
System.out.println("당신이 뽑은 카드는 \\"" + shape[randomShape] + " " + number[randomNumber] + "\\"입니다.");
}
}