package com.mywork.ex;
public class Ex01_primitive_array {
public static void main(String[] args) {
/*
* 1. 배열(Array)
* 1) 선언 방법
* (1) int[] arr = new int[3]; // 길이가 3인 arr 배열
* // 공간이 4개 (arr 주소 1개 -> arr 실제 공간 -> int[3])
* --------------비선호 방식--------------
* (2) int arr[] = new int[3];
* int[] arr; // 참조 변수 arr 선언
* arr = new int[3]; // int 3개 생성 후 주소를 arr에 저장!
* 2) 초기화 방법
* (1) int[] arr = new int[]{10, 20, 30 }; // 선언과 동시에 초기화
* (2) int[] arr = {10, 20, 30};
*
* ---------------잘못된 예---------------
* (3) int[] arr; // 선언
* arr = {10 , 20, 30}; // 초기화 -> 이와 같은 형식은 불가능!
*
* 3) 특징
* (1) 배열의 인덱스는 0부터 시작한다.
* (2) 배열이 생성되면 자동으로 0으로 초기화된다.
* (3) 배열이 생성되면 배열의 길이를 length 필드 값으로 사용할 수 있다.
* int[] arr = new int[3];
* 배열의 길이 : arr.length == 3
* (4) 배열의 인덱스 사용 범위를 벗어나면 ArrayIndexOutOfBoundsException 예외 클래스가 발생된다.
*/
int[] arr1 = new int[3]; // 모두 0으로 초기화 된 상태
int[] arr2 = {10,20,30};
for(int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
for(int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
System.out.println(arr1[3]); //인덱스 범위를 벗어난 요소 (예외발생)
}
}
package com.mywork.ex;
import java.util.Scanner;
public class Ex02_for_each {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[3];
// 1. 일반 for문
for(int i = 0; i < arr.length; i++) {
System.out.print(i + 1 + "번째 입력");
arr[i] = scanner.nextInt();
}
// 2. for - each 문 (향상 for 문)
for(int num : arr) { // arr 배열의 각 요소를 num 변수로 전달해서 처리
System.out.println(num);
}
// 주의사항.
int[] arr2 = new int[3];
// 1. for - each 문을 통한 입력
// 기본자료형의 배열은 for-each 문으로 배열의 수정이 불가능하다.
// 배열에 직접 접근하지 않고 배열 요소의 값을 다른 변수로 받아서 처리하기 때문!!
for(int num : arr2) {
System.out.print("입력 >> ");
num = scanner.nextInt();
}
// 2. for - each 문을 통한 출력
for(int num : arr2) {
System.out.println(num);
}
scanner.close();
}
}
package com.mywork.ex;
import java.util.Scanner;
public class Ex03_string_array {
public static void main(String[] args) {
/*
* String 배열
* 1. 문자열을 여러 개 저장하기 위해서 사용한다.
* 2. 일반적으로 한 번 문자열이 저장되면 수정될 일이 없다.
* 3. 수정될 일이 없다면 for - each 문을 활요하는 것이 좋다.
*/
Scanner scanner = new Scanner(System.in);
String[] names = new String[3];
// 1. 입력 (일반 for문)
for(int i = 0; i < names.length; i++) {
System.out.print("성명 입력 >> ");
names[i] = scanner.nextLine();
}
// 2. 출력 (for - each문)
for(String str : names) {
System.out.println(str);
}
scanner.close();
// 초기화 방법
String[] friends = new String[] {"alice","james","tom"};
String[] hobbies = {"운동", "독서", "영화"};
for (String friend : friends) {
System.out.println(friend);
}
for (String hobby : hobbies) {
System.out.println(hobby);
}
}
}
package com.mywork.ex;
public class Ex04_2D_array {
public static void main(String[] args) {
/*
* 고정형 2차원 배열
* 1. 행과 열이 고정되어 있는 2차원 배열
* 2. 선언 방법
* int[][] arr = new int[3][4]; // 3행 4열
* 3. 초기화 방법
* int[][] arr = new int[][] { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
* int[][] arr = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
*/
int[][] arr = new int[][] { {1,2,3}, {4,5,6} }; // 2행 3열 초기화
// i : 행, j : 열
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}
package com.mywork.ex;
public class Ex05_2D_array {
public static void main(String[] args) {
/*
* 가변형 2차원 배열
* 1. 행만 고정하고 열이 고정되어 있지 않은 배열
* 2. 선언 방법
* int[][] arr = new int[3][]; 3행 n열 배열
* arr[0] = new int[3]; 0행은 3열
* arr[1] = new int[2]; 1행은 2열
* arr[2] = new int[4]; 2행은 4열
*/
int[][] arr = { {1,2,3}, {4,5}, {6,7,8,9} };
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}