카테고리 없음

2024. 6. 28. (금) 슈퍼코딩 부트캠프 Day 23 / 주특기 1주차

태영9922 2024. 6. 29. 16:12

1. Java 이중 반복문

- 큰범위 와 작은범위로 나누어 구현

- 작은 범위를 먼저 수행하고 큰범위를 나중에 수행하기.

//구구단 이중 반복문 출력
public class Gugudan {
    public static void main(String[] args) {
        for (int i = 2; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                System.out.printf("%d * %d = %d%n", i, j, j * i);
            }
            System.out.println();
        }
    }
}
//별트리 찍기
public class Star {
    public static void main(String[] args) {
        int row;
        int col;
        for (row = 1; row <= 9; row++) {
            for (col = 1; col <= row; col++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

/*

*
**
***
****
*****
******
*******
********
*********

*/

 

2. Java 반복문 제어

- continue : 반복문 안에 조건문에서 조건을 만족하면 continue 실행 시 해당 반복을 실행하지 않고 다음 반복으로 넘어감

//continue를 사용해서 홀수만 더하기
public class OddNumberTotal {
    public static void main(String[] args) {
        int total = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) continue; //짝수일때 continue 실행하여 total에 더해지지 않음
            total += i;
        }
        System.out.println(total);
    }
}

 

- break : 반복문 안에 조건문에서 조건을 만족하면 break 실행 시 반복문 탈출

//1부터 100까지 더하다가 특정 조건에 만나면 반복문 탈출하기
public class Break {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i == 10) break; //i가 10이면 더하기 하지 않고 break
            sum += i;
        }
        System.out.println(sum);
    }
}

1. Java array

- 기존 변수 선언의 한계점 : 비슷한 내용을 저장하려는 경우 필요한 갯수만큼 변수 선언이 필요함. (ex. 30명의 학생정보를 저장하려면 변수 30개 선언했어야함.)

public class ArrayDeclaration {
    public static void main(String[] args) {
        int[] intArr = new int[5];
        int[] intArr2 = new int[]{1, 2, 3, 4, 5};
        int[] intArr3 = {1, 2, 3, 4, 5};

        float[] floatArr = new float[5];
        float[] floatArr2 = {1.5f, 2.5f, 3.5f, 4.5f, 5.5f};

        boolean[] booleans = new boolean[5];
        boolean[] booleans2 = {true, false, true, true, false};
        
        char[] charArr = new char[5];
        char[] charArr2 = {'a', 'b', 'c', 'd', 'e'};
        
        String[] stringArr = new String[5];
        String[] stringArr2 = {"abc", "bcd", "cde"};
        
        /*
        [0, 0, 0, 0, 0]
        [1, 2, 3, 4, 5]
        [1, 2, 3, 4, 5]
        
        [0.0, 0.0, 0.0, 0.0, 0.0]
        [1.5, 2.5, 3.5, 4.5, 5.5]
        
        [false, false, false, false, false]
        [true, false, true, true, false]
        
        [, , , , ]
        [a, b, c, d, e]
        
        [null, null, null, null, null]
        [abc, bcd, cde]
        */
    }
}

 

 

2. array 사용하기

- index 는 0부터 시작

//배열 인덱스에 접근하기
public class ArrayIndex {
    public static void main(String[] args) {
        int[] studentScores = {90, 87, 88, 75, 99, 65};
        int score1 = studentScores[0]; //첫번째 요소 가져오기
        System.out.println(score1); //90
        
        studentScores[2] = 93; //배열 요소 값 대입
        System.out.println(Arrays.toString(studentScores)); //[90, 87, 93, 75, 99, 65]

	int score6 = studentScores[6]; //배열 요소를 벗어난 범위
        System.out.println(score6); //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
    }
}

 

- 배열과 반복문 사용

public class ArrayFor {
    public static void main(String[] args) {
        int[] studentScores = {90, 87, 88, 75, 99, 65};
        for (int i = 0; i < studentScores.length; i++) {
            System.out.println(studentScores[i]);
        }

        for (int score : studentScores) { //배열의 각 요소를 score에 담아서 반복문 사용
            System.out.println(score);
        }
    }
}

1. 다차원 배열

public class TwoDimensionArray {
    public static void main(String[] args) {
        int[][] arr1 = new int[3][5]; //3row, 5col
        int[][] arr2 = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
        };//3row, 4col

        System.out.println(Arrays.deepToString(arr1)); //[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
        System.out.println(Arrays.deepToString(arr2)); //[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

        int myInt = arr2[0][2];
        int myInt2 = arr2[2][3];
        System.out.println(myInt); // 3
        System.out.println(myInt2); // 12

        arr2[2][3] = 20; //값 업데이트
        System.out.println(Arrays.deepToString(arr2)); //[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 20]]

        for (int row = 0; row < arr2.length; row++) {
            for (int col = 0; col < arr2[row].length; col++) {
                System.out.print(arr2[row][col] + " ");
            }
            System.out.println();
            /*
                1 2 3 4 
                5 6 7 8 
                9 10 11 20 
            * */
        }
    }

}

2. array 복사

- 얕은 복사 / 깊은 복사

- 얕은 복사 : 같은 물건에 여러 이름을 붙이는 것

int[] a = {1,2,3,4};
int[] b = a;
//a와 b가 같은 참조를 가리키고 있음, a의 값이 바뀌면 b의 값도 바뀜

- 깊은 복사 : 실제로 물건과 이름을 새로 만드는 것

 

- 리터럴과 객체 복사의 차이 : 리터럴은 유일한 상수여서 항상 값 자체가 복사됨(깊은 복사) // 객체는 새로 만들어낸 물건이다.

public class ArrayCopyTwo {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int[] arr1 = new int[arr.length];

        for (int i = 0; i < arr.length; i++) { //배열 복사 방법 1
            arr1[i] = arr[i];
        } //깊은 복사. 배열 객체를 새로 만듦

        int[] arr2 = Arrays.copyOf(arr, arr.length); //배열 복사 방법 2

        int[] arr3 = arr.clone(); //배열 복사 방법 3

        arr[0] = 100;
        System.out.println(Arrays.toString(arr)); //[100, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        System.out.println(Arrays.toString(arr1)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        System.out.println(Arrays.toString(arr2)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        System.out.println(Arrays.toString(arr3)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    }

 

- 2차원 배열 복사

public class TwoDimensionArrayCopy {
    public static void main(String[] args) {
        int[][] arr = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
        };
        int[][] arr1 = arr.clone(); //얕은 복사

        int[][] arr2 = new int[3][];

        for (int row = 0; row < 3; row++) { //깊은 복사
            arr2[row] = arr[row].clone();
        }

        arr[0][0] = 100;
        System.out.println(Arrays.deepToString(arr)); // [[100, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
        System.out.println(Arrays.deepToString(arr1));// [[100, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

        System.out.println(Arrays.deepToString(arr2)); //[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]


    }
}

 

 

3. Program Args

- Command Line Arguments

public static void main(String[] args)  // 무슨 의미일까?

Command에서 실행시 외부 변수를 입력하면 args로 받아와서 사용

java exercise.chapter_21.CmdLineArgs hello world
public class CmdLineArgs {
    public static void main(String[] args) {
        System.out.println(args.length); // 2 ->> [hello][world]
        System.out.println(args[0]);  // hello [hello]
        System.out.println(Arrays.toString(args)); // [hello, world]
    }
}

 

 

#슈퍼코딩, #1:1관리형부트캠프, #백엔드, #backend, #백엔드공부, #개발공부, #백엔드개발자 #취준일기, #취준기록, #취뽀, #빡공, #HTML/CSS, #javascript, #react , #java, #spring