public class MainClass {
    public static void main(String[] args) {
        /*
            switch: 조건문에 해당된다.
                    값이 명확해야 한다 (= 범위설정은 불가)
                    if (number > 0) - 처리 불가
                    if (number == 0) - 처리 가능
                    소수값을 사용할 수 없다

            형식 :
                    switch(변수) {
                    case 값1:     if (변수 == 값1)
                        처리1
                        break;
                    case 값2:     else if (변수 == 값2)
                        처리2
                        break;
                           ...
                    default:      else
                        처리
                        break;
         */
        int count = 3;

        switch (count) {
            case 1:
                System.out.println("count는 1 입니다.");
                break;
            case 2:
                System.out.println("count2는 2 입니다.");
                break;
            default:
                System.out.println("default 입니다.");
                break;
        }

        String str = "ABC";
        switch (str) {
            case "ABC":
                System.out.println("일치합니다");
                break;
        }
    }
}
public class session3 {
    public static void main(String[] args) {
        /*
            제어문
            조건
                - if
                - switch
             순환(loop)
                - for
                - while
                - do while
             중단
                - break
                - continue
         */
        String nameOne = "홍길동";
        String nameTwo = "홍길";
        nameTwo = nameTwo + "동";

        if (nameOne.equals(nameTwo)) {
            System.out.println("두 문자열이 같습니다");
        } else {
            System.out.println("두 문자열이 같지 않습니다");
        }

        char c1 = 'A'; // 아스키코드 값 65
        char c2 = 'C'; // 아스키코드 값 67

        if (c1 == c2) {
            System.out.println("같은 문자입니다.");
        } else {
            System.out.println("다른 문자입니다.");
        }

        if (c1 < c2) {
            System.out.println("c1은 c2보다 작습니다.");
        } else {
            System.out.println("c1은 c2보다 큽니다.");
        }

        // char의 아스키코드 값이 보고 싶다면, cast 해주면 됨
        System.out.println( (int)c1 );

        // 아스키코드를 char로 바꾸고 싶다면, cast
        System.out.println( (char)65 );
    }
}
import java.util.Arrays;

public class session2 {
    public static void main(String[] args) {
        /*
            2차원 배열:
                1차원 배열을 확장한 배열

            형식:
                자료형 배열명[][] = new 자료형[3][5]; // 3개의 줄 X 5개 요소
         */

        int array2[][] = new int[3][5];
        int array11[]  = { 1, 2, 3, 4, 5 };
        array2[0] = array11;

        int[] array12 =  { 6, 7, 8, 9, 10 };
        array2[1] = array12;

        int[] array13 = { 11, 12, 13, 14, 15 };
        array2[2] = array13;

        // 2차원 배열에서는 .toString(array2)로 출력 불가. 반드시 행 또는 요소가 지정되어야 함
        System.out.println(Arrays.toString(array2[0]));
        System.out.println(Arrays.toString(array2[1]));
        System.out.println(Arrays.toString(array2[2]));

        System.out.println(array2[0][2]);
        System.out.println(array2[0][2]);

        // 2차원 배열의 length?
        System.out.println( array2.length);   // 묶음(행)의 길이가 출력된다
        System.out.println( array2[0].length); // rows의 길이가 출력된다

        // 초기화
        int[][] array22 = {
                { 1, 2, 3, 4, 5 },
                { 6, 7, 8, 9, 10},
                { 11, 12, 13, 14, 15}
        };

        System.out.println(Arrays.toString(array22[0]));
        System.out.println(Arrays.toString(array22[1]));
        System.out.println(Arrays.toString(array22[2]));

        // 학생수 = ? , 과목 수 = 3
        int students = 0;
        int study[][] = null;

        students = 21;
        study = new int[students][3];
    }
}
import java.util.Arrays;

public class session1 {
    public static void main(String[] args) {
         /*
        변수: 이름을 지정하고 값을 입력/산출하기 위한 수
                int number;
                int number1, number2, number3, ...

        Array:  배열
                동일한 자료형(변수들)의 묶음.
                접근의 요소로 index(번호)로 접근한다.
                변수의 확장 버전
        형식:
                자료형 변수명[] = new 자료형[배열의 총 수];

     */
        int[] array = new int[3];   // 동적할당 (<-> 정적할당)
//    int array[] = new int[3];
//    int []array = new int[3];
        System.out.println(array[1]);

        array[0] = 11;
        array[1] = 22;
        array[2] = 33;

        // 가비지콜렉터 delete[] int;
        
        // 접근 방법
        System.out.println(array[0]);

        // 배열의 개수
        System.out.println(array.length);

        // 배열을 출력
        System.out.println(array);
            // [I@776ec8df => @이하부터 숫자: Heap 영역의 주소 => os가 할당한 것
            // 77 63 c8 df (32 bit = 4 byte)
            // 255 -> ff
        System.out.println(Arrays.toString(array)); // 배열을 눈으로 확인하는 용도

        // 배열의 초기화
//        int[] nArray = new int[5];
//        System.out.println(Arrays.toString(nArray)); // 지정된 요소 없으면 0으로 초기화

        // 배열의 초기화 (2)
        int[] nArray = { 10, 20, 30, 40, 50 };
        System.out.println(Arrays.toString(nArray));
        System.out.println(nArray[2]);
        System.out.println(nArray.length);

        int length = 5;
        int[] numArray = new int[length];
 
        // 배열의 초기화 (3) - null로 초기화
        int[] numArray2 = null; // 동적 할당 -> 무조건 null -> 메모리 초기화
        numArray2 = new int[length];

        // 배열의 Alias(별명)
        int[] arrayBase = { 1, 2, 3 };
        int[] arrayAlias = arrayBase;

        System.out.println(Arrays.toString(arrayAlias));
        arrayAlias[1] = 22;

        System.out.println(Arrays.toString(arrayAlias));
        System.out.println(Arrays.toString(arrayBase));
            // arrayAlias의 데이터를 바꾸었더니 arrayBase의 데이터도 바뀌었다.
            // 별명 = 같은 사람을 지칭

            // 언제 쓰이는가? 원본의 배열 이름이 너무 길 때, 줄여서 쓰고 싶을 때
        int[] myCharacterPositionX = { 1,2,3 };
        int[] myChPosX = myCharacterPositionX;
        myChPosX[2] = 33;
        System.out.println( myCharacterPositionX[2] );

        // 연습
        int[] myArr = new int[5];
        System.out.println(Arrays.toString(myArr));

        myArr = null;
        System.out.println(Arrays.toString(myArr));

        // 배열 교환 (temp를 이용한 swap)
        int[] arrayOne = { 1, 2, 3 };
        int[] arrayTwo = { 11, 22, 33 };
        int[] temp;

        temp = arrayOne;
        arrayOne = arrayTwo;
        arrayTwo = temp;

        System.out.println(Arrays.toString(arrayOne));
        System.out.println(Arrays.toString(arrayTwo));

    }
}
public class MainClass {
    public static void main(String[] args) {
        /*
        wrapper class
        일반 자료형(int, char, double...)을 클래스(기능추가)화 해 놓은 것

        일반자료형       wrapper class
        byte                Byte
        short               Short
        int                 Integer
        long                Long
        float               Float
        double              Double
        char                Character (한 문자만 쓸 때)
                            -> String (더 발전시켜놓은것, 문장 가능)
          */

        int num = 123;
        System.out.println("num = " + num);

        Integer inum = 333;
        System.out.println("inum = " + inum);

        // 형변환을 하는 경우에 wrapper class가 쓰인다. 그 외의 경우에는 별로 쓰이지 X
        // 숫자 -> 문자열 (문자열이 굉장히 보안에 강하다)
            // 정수
        String st = inum.toString();
        // String st = inum + "";  // 빈 문자열을 더하면 문자열로 인식한다.
        System.out.println("st: " + st);

        // 실수
        Double d = 123.4567;
        String dt = d.toString();
        // String dt = d + "";
        System.out.println("dt: " + dt);

        // 문자열 -> 숫자
        String strNum = "345";
        int n = Integer.parseInt(strNum);
        System.out.println("n = " + n);

        String strDou = "345.678";
        double d1 = Double.parseDouble(strDou);
        System.out.println("d1 = " + d1);

        // 숫자(2진수, 10진수, 16진수)
            // 10진수를 2진수로 변환
        int n10 = 12;
        String n2 = Integer.toBinaryString(n10);
        System.out.println("n2: " + n2);

            // 2진수를 10진수로 변환
        n2 = "10101100";
        n10 = Integer.parseInt(n2, 2);
        System.out.println("n10: " + n10);

            // 10진수를 16진수로
        n10 = 255; // 1111 1111
        String n16 = Integer.toHexString(n10);
        System.out.println("n16: " + n16);

            // 16진수를 10진수로
        n16 = "CA";
        n10 = Integer.parseInt(n16, 16);
        System.out.println("n10: " + n10);

        /*
            2진수 -> 16진수 -> 10진수
                    1100 1010
                    8421 8421
                       C    A
                      12   10
         16^1 * 12 + 16^0 * 10 = 202

            16진수 -> 2진수
                    9       3
                    8421    8421
                    1001    0011

        */


        /*
            String:
                    문자열 저장, 편집, 정보 취득
         */

        String str1;
        str1 = "Hello";

        // 1. 문자열의 길이
        int len = str1.length();
        System.out.println("len =" + len);

        // 2. 문자열끼리 합할 때
        String str2 = "World";
        String str3 = str1.concat(str2);
        // String str3 = str1 + str2;
        System.out.println(str3);

        // 3. 문자열 비교 (서로 같음, 다름)
        String str4 = "HelloWorldA";
        boolean b = str3.equals(str4);
        System.out.println("b ="+b);

        // 4. 지정 문자의 위치
        int pos = str4.indexOf("r");
        System.out.println("pos =" + pos);

        // 5. 문자열을 수정
        String str5 = str4.replace("l", "z");
        System.out.println("str5 = " + str5);

        // 6. 문자열 자르기 Array (나중에)

        // 6.1 문자열 자르기
        str5 = "안녕하세요 반갑습니다";
        String temp = str5.substring(6,8);
        System.out.println("temp = " + temp);

        // 7. 공백을 제거해 주는 함수 -> replace
            // ex) hello world -> 빈문자 = null 문자

        String str6 = "헌법재판소가 헌법재판관 6인 체제에서도 윤석열 대통령의 탄핵 심판 심리와 변론이 가능하다는 입장을 재확인하였다.";
        str6 = str6.replace(" ", "");
        System.out.println(str6);

        // 8. 앞뒤의 공백만 -> trim
        String str7 = "               java java java        ";
        str7 = str7.trim();
        System.out.println(str7);

        // 9. contains 탐색
        String str8 = "부산시 수영구";
        boolean b2 = str8.contains("수영");
        System.out.println("b2 = " +b2);

        // 10. charAt .. indexOf의 반대. 위치값(인덱스값)을 넣으면 해당 글자가 반환
        String str9 = "안녕하세요";
        char c1 = str9.charAt(2);
        System.out.println(c1);

    }
}
public class MainClass {
    public static void main(String[] args) {
        /*
        논리 연산자 (true / false)
        &&          AND         a 그리고 b
        ||          OR          a 또는 b
        !           NOT         a가 아님
        */

        int numberNot = 5;
        System.out.println(numberNot == 1);
        System.out.println(numberNot != 1);
        System.out.println( !(numberNot >= 5 && numberNot <= 10));
        System.out.println(numberNot < 5 || numberNot > 10);        // 13번 라인과 동일한 의미

        /*
            삼항 연산자
            조건에 따라서 값을 대입
            변수 = (조건)? 값1 : 값2 // 참이면 값1을 넣고, 거짓이면 값2를 넣어라.
        */

        int number, result;
        number = 3;
        result = (number > 0)? 10: 20;
        System.out.println("result =" + result);

        char c;
        c = (number > 1)? 'Y': 'N';
        System.out.println("c = " + c);

        String str;
        str = (number < 0)? "양수입니다": "음수입니다";

        System.out.println("str = " + str);
    }
}

+ Recent posts