Skip to content

코리아 IT 아카데미에서 학습했던 자바 기초 내용

Notifications You must be signed in to change notification settings

TaskerJang/Korea-IT-Academy-JAVA

Repository files navigation

코리아 IT 아카데미 - JAVA 기초

2023년 1월 2일

1. Ex1_first - 출력 기초

  • 파일: Ex1_print.java
  • System.out.println을 사용하여 기본 출력을 소개합니다.
  • 주석, main 메서드, 다양한 출력 예제를 다룹니다.

2. Ex2_value_type - 값 유형

  • 파일: Ex1_valueType.java
  • 자바의 다양한 값 유형에 대한 설명, 변수 선언 및 초기화 규칙을 다룹니다.

3. Ex3_casting - 형 변환

  • 파일: Ex1_promotion.java, Ex2_demotion.java
  • 자바에서의 형 변환(promotion 및 demotion)을 탐색합니다.
  • 다른 데이터 유형 간의 캐스팅을 설명합니다.

2023년 1월 3일

4. Ex1_operator - 연산자

  • 파일: Ex1_Operator.java, Ex2_Operator.java, Ex3_Operator.java, Ex4_work.java, Ex5_work.java
  • 다양한 연산자에 대해 설명하며, 산술, 대입, 비교, 논리 및 삼항 연산자를 포함합니다.
  • 연산자와 관련된 실용적인 예제와 연습이 포함되어 있습니다.

5. Ex4_work, Ex5_work - 실전 연습

  • 파일: Ex4_work.java, Ex5_work.java
  • 연산자와 변수 조작과 관련된 실전 연습이 포함되어 있습니다.
  • 생산률과 과일 농장 시나리오와 관련된 문제를 해결합니다.

2023년 1월 4일

6. Ex1_if - 조건문 기초

  • 파일: Ex1_if.java
  • 제어문 중 분기문에 해당하는 if문을 소개합니다.
  • 조건식의 참/거짓에 따라 실행되는 영역을 설명하고, 기본적인 사용법을 다룹니다.

7. Ex2_if_else - if-else 문

  • 파일: Ex2_if_else.java
  • if-else문을 활용하여 조건에 따라 다르게 처리하는 방법을 다룹니다.

8. Ex3_else_if - else-if 문

  • 파일: Ex3_else_if.java
  • else-if문을 사용하여 여러 조건을 순차적으로 검사하고 처리하는 방법을 소개합니다.

9. Ex1_switch - switch-case 문

  • 파일: Ex1_switch.java
  • switch-case문을 사용하여 비교값과 조건값을 통해 다양한 결과를 처리하는 방법을 설명합니다.

10. Ex2_switch - switch-case 문 (문자열 활용)

  • 파일: Ex2_switch.java
  • 문자열을 비교값으로 사용하여 switch-case문을 구성하는 방법을 소개합니다.

11. Ex3_switch - switch-case 문 (문자 활용)

  • 파일: Ex3_switch.java
  • switch-case문에서 문자(char)를 비교값으로 사용하는 방법을 다룹니다.

12. Ex4_work - switch-case 문 활용 (월별 일수 출력)

  • 파일: Ex4_work.java
  • switch-case문을 활용하여 입력받은 월에 따라 해당 월의 일수를 출력하는 예제를 다룹니다.

13. Ex5_work - switch-case 문을 이용한 간단한 계산기

  • 파일: Ex5_work.java
  • switch-case문을 사용하여 간단한 두 숫자의 연산을 수행하는 계산기 예제를 다룹니다.

14. Ex1_for - for문의 기본 구조 및 활용

  • 파일: Ex1_for.java
  • for문의 기본 구조와 다양한 활용 예제를 다룹니다.

15. Ex1_multi_for - 다중 for문의 기본 구조 및 활용

  • 파일: Ex1_multi_for.java
  • 다중 for문의 기본 구조와 활용 예제를 다룹니다. 이 예제에서는 2차원 배열의 형태를 표현하고 출력하는 방법을 보여줍니다.

16. Ex1_formatter - printf를 활용한 포맷팅

  • 파일: Ex1_formatter.java
  • printf를 사용하여 데이터를 원하는 구조로 출력하는 포맷팅 예제를 다룹니다. 다양한 데이터 유형에 대한 포맷 코드를 사용하는 방법을 설명합니다.

17. Ex2_work - 구구단 출력하기

  • 파일: Ex2_work.java
  • 사용자가 입력한 값에 따라 해당하는 구구단을 출력하는 예제를 다룹니다. 입력 값이 2에서 9 사이의 값이 아닌 경우 예외 처리 메시지를 출력합니다.

18. Ex1_Random - 난수 생성하기

  • 파일: Ex1_Random.java
  • Random 클래스를 사용하여 난수를 생성하는 방법을 다룹니다. 정수와 문자에 대한 난수 생성 예제를 포함합니다.

19. Ex1_while - while문의 기본 구조 및 활용

  • 파일: Ex1_while.java
  • while문의 기본 구조와 간단한 활용 예제를 다룹니다. 선 비교 후 처리하는 특징과 무한 반복을 방지하기 위한 num의 증가 예제가 포함되어 있습니다.

20. do-while 문의 기본 구조

do {
    // 조건식이 참일 때 실행되는 영역
} while(조건식);
  • do-while문은 먼저 영역을 실행한 후에 조건식을 평가합니다.
  • 최소 한 번은 영역이 실행된다는 특징이 있습니다.

21. Ex8_Work - 별찍기

  • 파일: Ex8_work
  • 내용: 별찍기 문제를 해결하여 for문에 대한 이해를 쌓았습니다. 해당 파일에서는 다양한 별찍기 패턴을 구현하는 연습을 진행했습니다.

22. Ex9_2work

  • 파일: Ex9_2work
  • 내용: 2중 for문을 사용하여 1부터 n까지의 합계를 계산하는 문제를 다루었습니다. 이를 통해 중첩된 반복문을 활용하는 방법에 대해 학습했습니다.

23. Ex1_Break

  • 파일: Ex1_Break
  • 내용: break 문을 활용하여 반복문을 탈출하는 방법에 대한 학습이 포함되어 있습니다.

24. Ex2_Break

  • 파일: Ex2_Break
  • 내용: switch 문과 break를 연동하여 사용하는 방법에 대한 학습이 담겨 있습니다.

25. Ex3_Continue

  • 파일: Ex3_Continue
  • 내용: Continue 문에 대한 학습 내용이 포함되어 있습니다.

26. Ex4_Continue

  • 파일: Ex4_Continue
  • 내용: while문과 Continue 문을 혼합해서 사용하는 방법에 대해 다루었습니다.

27. Ex5_label

  • 파일: Ex5_label
  • 내용: 반복문에 식별자를 지정하는 방법에 대한 학습이 포함되어 있습니다.

27. Ex6_label

  • 파일: Ex6_label
  • 내용: Continue 문과 식별자를 혼합해서 사용하는 방법에 대한 학습이 담겨 있습니다.

2023년 1월 6일

28. Ex1_Scanner

  • 파일: Ex1_Scanner
  • 내용: 키보드에서 값을 입력 받을 수 있게 해주는 Scanner 클래스에 대한 학습이 포함되어 있습니다.

29. Ex2_work

  • 파일: Ex2_work
  • 내용: Scanner 클래스를 활용하여 변수값들을 비교하는 방법에 대한 학습 내용이 담겨 있습니다.

30. Ex1_array

  • 파일: Ex1_array
  • 내용: 배열에 대한 학습 내용이 포함되어 있습니다.

31. Ex1_work

  • 파일: Ex1_work
  • 내용: 배열에 대한 선언과 생성을 한번에 하는 방법에 대한 학습이 담겨 있습니다.

32. Ex2_work

  • 파일: Ex2_work
  • 내용: 배열을 활용하여 최대값을 구하는 방법에 대한 학습 내용이 포함되어 있습니다.

33. Ex3_work

  • 파일: Ex3_work
  • 내용: 배열을 활용하여 소수를 판단하는 방법에 대한 학습이 포함되어 있습니다.

34. Ex4_work

  • 파일: Ex4_work
  • 내용: 배열을 활용하여 구구단을 구현하는 방법에 대한 학습이 담겨 있습니다.

35. Ex1_Baseball

  • 파일: Ex1_Baseball
  • 내용: 숫자 야구 게임을 구현하는 방법에 대한 학습이 담겨 있습니다.

36. Ex1_coin

  • 파일: Ex1_coin
  • 내용: 거스름돈을 계산하는 로직에 대한 학습이 담겨 있습니다.

37. Ex1_baseball

  • 파일: Ex1_baseball
  • 내용: 배열을 활용하여 숫자 야구 게임을 리팩토링하는 내용이 담겨 있습니다.

38. Ex2_lotto

  • 파일: Ex2_lotto
  • 내용: 배열을 활용하여 로또 게임을 구현하는 방법에 대한 학습이 담겨 있습니다.

2023년 1월 10일

  1. 배열 초기화:

    int[][] test = new int[2][3];

    이 코드는 2행 3열로 구성된 test라는 2차원 배열을 선언하고 초기화합니다.

  2. 값 할당:

    test[0][0] = 10;
    test[0][1] = 20;
    test[0][2] = 30;
    test[1][0] = 40;
    test[1][1] = 50;
    test[1][2] = 60;

    2차원 배열의 각 요소에 값을 할당합니다.

  3. 특정 값에 접근 및 출력:

    System.out.println(test[1][1]);

    지정된 인덱스 [1][1]의 값을 출력합니다.

  4. 중첩된 루프를 사용한 모든 값 출력:

    for (int i = 0; i < test.length; i++) {
        for (int j = 0; j < test[i].length; j++) {
            System.out.printf("%d ", test[i][j]);
        }
        System.out.println();
    }

Ex2_multi_array.java

이 Java 파일은 2차원 배열의 선언, 생성, 초기화를 한 번에 수행하는 예제입니다. 아래는 각 부분에 대한 설명입니다:

  1. 배열 선언 및 초기화:

    char[][] chArr = {{'J', 'A', 'V', 'A'}, {'S','P', 'R', 'I', 'N','G'}};

    chArr이라는 2차원 배열을 선언하고 초기화합니다.

  2. 모든 값 출력:

    for (int i = 0; i < chArr.length; i++) {
        for (int j = 0; j < chArr[i].length; j++) {
            System.out.printf("%c ", chArr[i][j]);
        }
        System.out.println();
    }

Ex3_multi_array.java

이 Java 파일은 가변적인 크기의 2차원 배열을 생성하는 예제입니다. 아래는 각 부분에 대한 설명입니다:

  1. 가변 크기의 2차원 배열 선언 및 초기화:

    int[][] num = new int[2][];
    num[0] = new int[3];
    num[1] = new int[2];

    큰 방(행) 중 하나에는 3개의 작은 방(열)이 있고, 다른 하나에는 2개의 작은 방이 있는 2차원 배열을 선언하고 초기화합니다.

  2. 모든 값 출력:

    for (int i = 0; i < num.length; i++) {
        for (int j = 0; j < num[i].length; j++) {
            System.out.printf("%d ", num[i][j]);
        }
        System.out.println();
    }

Ex4_multi_array.java

이 Java 파일은 2차원 배열에 저장된 모든 값의 합과 평균을 출력하는 예제입니다. 아래는 각 부분에 대한 설명입니다:

  1. 배열 초기화 및 값 합산:

    int[][] arr = { { 2, 4, 11, 28 }, { 5, 7, 10 }, { 12, 17, 3, 6 }, { 3, 2 } };

    arr이라는 2차원 배열을 선언하고 초기화하고, 배열에 저장된 모든 값의 합을 계산합니다.

  2. 평균 계산 및 출력:

    avg = (float) sum / k;
    System.out.printf("평균 : %.1f ", avg);

    저장된 값들의 평균을 계산하고 출력합니다.

Ex5_multi_array.java

이 Java 파일은 학생들의 정보를 등록하고 출력하는 예제입니다. 아래는 각 부분에 대한 설명입니다:

  1. 학생 정보 등록 및 출력:

    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt(); // 등록할 인원 수 입력
    
    String[] info = {"이름: ", "수학: ", "영어: "};
    String[][] str = new String[n][info.length];
    
    for (int i = 0; i < str.length; i++) {
        for (int j = 0; j < str[i].length; j++) {
            System.out.print(info[j]);
            str[i][j] = sc.next();
        }
        System.out.println("----------------------------------");
    }
    
    System.out.println(n + "명 등록완료!!");
    for (int i = 0; i < str.length; i++) {
        for (int j = 0; j < str[i].length; j++) {
            System.out.printf("%s\t", str[i][j]);
        }
        System.out.println();
    }

    키보드에서 학생의 수와 각 학생의 이름, 수학, 영어 성적을 입력받고 출력합니다.

Ex1_work.java

이 Java 파일은 피보나치 수열을 입력받은 값만큼 출력하는 예제입니다. 아래는 각 부분에 대한 설명입니다:

  1. 피보나치 수열 출력:

    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();
    int[] arr = new int[num];
    
    int n1 = 1, n2 = 0, n3 = 0;
    
    for (int i = 0; i < arr.length; i++) {
        n2 = n3;
        n3 = n1;
        n1 = n2 + n3;
        System.out.printf("%d ", n3);
    }

    입력

받은 값만큼 피보나치 수열을 계산하고 출력합니다.

Ex2_work.java

이 Java 파일은 주어진 크기만큼의 홀수 마방진을 생성하는 예제입니다. 아래는 각 부분에 대한 설명입니다:

  1. 홀수 마방진 생성 및 출력:

    Scanner sc = new Scanner(System.in);
    int[][] arr;
    int num = 1, y = 0, x = 0;
    
    System.out.print("사이즈: ");
    int size = sc.nextInt();
    x = size / 2;
    arr = new int[size][size];
    
    while (num <= size * size) {
        arr[y][x] = num;
        // ... 중략 ...
        num++;
    }
    
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            System.out.printf("%02d ", arr[i][j]);
        }
        System.out.println();
    }

    주어진 크기의 홀수 마방진을 생성하고 출력합니다.

2023년 1월 11일

Ex1_String.java

  1. 문자열 생성:

    String s1 = "abc";
    String s2 = "abc";
    String s3 = new String("abc");
    String s4 = new String("abc");

    문자열을 암시적 및 명시적으로 생성하는 예제입니다.

  2. 주소 비교 및 값 비교:

    if (s1 == s3) {
        System.out.println("주소가 같다.");
    } else {
        System.out.println("주소가 다릅니다.");
    }
    
    if (s1.equals(s3)) {
        System.out.println("값이 같습니다.");
    }

    ==를 사용하여 주소를 비교하고, .equals()를 사용하여 문자열의 값을 비교하는 예제입니다.

  3. 불변성과 값 변경:

    String greet = "안녕";
    greet += "하세요";

    문자열은 불변성을 가지며, 값을 변경하면 새로운 문자열이 생성됩니다.

Ex2_String_Method.java

이 Java 파일은 String 클래스의 다양한 메서드를 사용하는 예제입니다.

  1. 문자열 길이 및 문자 위치:

    int len = name.length();
    int index = name.indexOf('o');
    int lastIndex = name.lastIndexOf('o');
    char c = name.charAt(5);

    문자열의 길이, 특정 문자의 위치 및 마지막으로 나타난 문자의 위치를 구하는 예제입니다.

  2. 부분 문자열 추출:

    String s1 = name.substring(5);
    String s2 = name.substring(5, 10);

    문자열에서 일부분을 추출하는 예제입니다.

  3. 문자열 대체:

    String replaced1 = name.replace('.', '/');
    String replaced2 = name.replace("on", "ii");

    문자열 내의 특정 문자를 대체하는 예제입니다.

  4. 공백 제거 및 문자열 분할:

    String trimmed = id.trim();
    String[] idArray = id.split(" ");

    문자열의 양 끝 공백을 제거하고, 특정 문자를 기준으로 분할하는 예제입니다.

  5. 대소문자 비교 및 정수 변환:

    if (answer.equalsIgnoreCase("apple")) {
        System.out.println("값이 같다");
    }
    
    String num = "10";
    int a = Integer.parseInt(num);

    대소문자를 무시한 비교 및 문자열을 정수로 변환하는 예제입니다.

Ex1_String_Work.java

이 Java 파일은 주민번호를 입력받아 남성 또는 여성인지 출력하는 예제입니다.

Ex2_String_Work.java

이 Java 파일은 사용자로부터 문자열을 입력받고, 그 문자열에서 'a'의 개수를 출력하는 예제입니다.

Ex3_String_Work.java

이 Java 파일은 주어진 문자열이 회문수인지 판단하는 예제입니다.

Ex4_String_Work.java

이 Java 파일은 2차원 배열을 활용하여 배우의 이력을 검색하는 예제입니다.

2023년 1월 12일

  1. Computer.java:

    • Computer 클래스를 정의하며, 컴퓨터의 브랜드, SSD 용량, RAM 용량, CPU 속도, 색상 등의 속성을 나타냅니다.
    • getInfo 메서드를 통해 컴퓨터의 성능 정보를 출력합니다.
    • brand 속성은 private으로 선언하여 외부에서 직접 접근하지 못하도록 캡슐화를 시연합니다.
  2. comMain.java:

    • Computer 클래스를 테스트하는 main 메서드를 정의합니다.
    • Computer 클래스의 인스턴스를 생성하고, 정보를 출력하며 클래스 간의 상호작용을 보여줍니다.
  3. Chicken.java:

    • Chicken 클래스를 정의하며, 치킨의 브랜드, 고기 종류, 소스 등의 속성을 나타냅니다.
    • myChicken 메서드를 통해 치킨 정보를 출력합니다.
  4. ChickenMain.java:

    • Chicken 클래스의 다형성을 보여주는 main 메서드를 정의합니다.
    • 다른 소스로 각각의 치킨을 생성하여 정보를 출력합니다.
  5. Method1.java:

    • Method1 클래스를 정의하며, 간단한 메서드들을 포함합니다.
    • test1, test2, test3 메서드를 통해 메서드의 기본 구성과 반환값을 설명합니다.
  6. MetMain.java:

    • Method1 클래스의 메서드를 호출하여 실행하는 main 메서드를 정의합니다.
  7. Ex1_param.java:

    • Ex1_param 클래스를 정의하며, 메서드에 다양한 형태의 매개변수를 전달하는 예시를 제공합니다.
  8. Ex1_paramMain.java:

    • Ex1_param 클래스의 메서드를 호출하여 매개변수 전달의 특성을 확인하는 main 메서드를 정의합니다.
  9. VMethod.java:

    • 가변인자를 사용하는 v_test 메서드를 정의하여 여러 개의 매개변수를 다루는 방법을 보여줍니다.
  10. VMain.java:

    • VMethod 클래스의 가변인자 메서드를 호출하여 다양한 개수의 매개변수를 다루는 main 메서드를 정의합니다.
  11. Gugu.java:

    • 구구단을 출력하는 getGugudan 메서드를 정의합니다.
  12. GuguMain.java:

    • 사용자로부터 입력받은 숫자에 대한 구구단을 출력하는 main 메서드를 정의합니다.
  13. Calculator.java:

    • 간단한 사칙연산을 수행하는 getResult 메서드를 정의합니다.
  14. CalMain.java:

    • 사용자로부터 입력받은 숫자와 연산자를 통해 계산 결과를 출력하는 main 메서드를 정의합니다.
  15. Count.java:

    • 배열을 이용하여 숫자의 갯수를 세는 getCount 메서드를 정의합니다.
  16. GraphMain.java:

    • 난수 배열을 생성하고 Count 클래스의 메서드를 호출하여 각 숫자의 갯수를 출력하는 main 메서드를 정의합니다.

2023년 1월 13일

  1. Person.java (ex1_setter_getter):

    • Person 클래스는 이름(name), 전화번호(phone), 나이(age)를 private 멤버로 가지며, 이에 대한 setter와 getter 메서드를 제공합니다.
    • 클래스 외부에서는 직접적인 접근이 불가능하고, setter 메서드를 통해 값을 설정하거나, getter 메서드를 통해 값을 조회할 수 있습니다.
  2. PersonMain.java (ex1_setter_getter):

    • Person 클래스의 객체를 생성하고, setter 메서드를 이용하여 값을 설정하고, getter 메서드를 통해 값을 조회하는 예시를 보여줍니다.
  3. Person.java (ex2_class_array):

    • Person 클래스는 이름(name)과 나이(age)를 private 멤버로 가지며, 이에 대한 setter와 getter 메서드를 제공합니다.
  4. PersonMain.java (ex2_class_array):

    • Person 클래스의 객체 배열을 생성하고, 반복문을 사용하여 배열의 각 요소에 대한 setter 메서드를 호출하여 값을 설정합니다.
  5. Atm.java (ex3_account):

    • Atm 클래스는 입금(deposit), 출금(withdraw), 잔액 조회(showMoney) 메서드를 가지며, 잔액은 private으로 관리됩니다.
  6. User.java (ex3_account):

    • Atm 클래스를 이용하여 사용자에게 메뉴를 제공하고, 사용자의 입력에 따라 입금, 출금, 잔액 조회 기능을 수행하는 예시를 보여줍니다.
  7. Updown.java (ex4_work):

    • Updown 클래스는 1에서 50 사이의 난수를 생성하고, 사용자가 입력한 수가 더 큰지, 작은지 판단하여 UP 또는 DOWN 메시지를 출력합니다.
    • 정답을 맞추면 시도 횟수를 출력하고, isEnd 변수를 통해 게임 종료 여부를 확인합니다.
  8. UpdownMain.java (ex4_work):

    • Updown 클래스를 이용하여 UP&DOWN 게임을 실행하는 예시를 보여줍니다. 사용자가 정답을 맞추면 게임이 종료됩니다.
  9. Can.java (ex5_work):

    • Can 클래스는 음료수의 이름(canName)과 가격(price)을 가지며, 이에 대한 setter와 getter 메서드를 제공합니다.
  10. Vending.java (ex5_work):

    • Vending 클래스는 음료수 배열과 사용자의 투입금액을 관리합니다.
    • canInit 메서드를 통해 음료수 배열을 초기화하고, showCans 메서드를 통해 투입금액으로 살 수 있는 음료수 목록을 출력합니다.
    • outCan 메서드를 통해 사용자가 선택한 음료수를 제공하고, 잔액을 반환합니다.
  11. VendingMain.java (ex5_work):

    • Vending 클래스를 이용하여 사용자에게 음료수를 제공하는 자판기 프로그램의 예시를 보여줍니다.

2023년 1월 16일

ex1_overload 패키지:

  • Ex1_Overload.java:

    • 메서드 오버로딩을 설명합니다.
    • 동일한 이름(result)의 여러 메서드를 정의하며, 각 메서드는 다른 매개변수 유형 및 개수를 가집니다.
    • 각각의 result 메서드는 다양한 인자 유형에 대응합니다.
  • OverMain.java:

    • Ex1_Overload의 인스턴스를 생성하고 여러 오버로딩된 result 메서드를 호출합니다.
    • 다양한 인자로 result 메서드를 호출하여 오버로딩이 잘 동작하는지 보여줍니다.

ex2_overload 패키지:

  • Bread.java:

    • makeBread 메서드를 오버로딩하여 여러 가지 매개변수 조합에 대응합니다.
  • BreadMain.java:

    • Bread 클래스의 인스턴스를 생성하고 다양한 방법으로 makeBread 메서드를 호출하여 오버로딩이 잘 동작하는지 보여줍니다.

ex3_constructor 패키지:

  • Ex_Con.java:

    • 생성자를 소개하며, 객체 생성 시 메모리 할당 및 멤버 변수 초기화의 목적으로 사용된다고 설명합니다.
    • 생성자는 클래스 이름과 동일하며, 한 번 생성된 생성자는 추후에 재 호출이 불가능하다고 설명합니다.
  • ConMain.java:

    • Ex_Con 클래스의 인스턴스를 생성하여 생성자 호출을 보여줍니다.

ex4_constructor 패키지:

  • Pen.java:

    • 생성자를 사용하여 Pen 클래스를 정의합니다.
    • 오버로딩된 생성자를 이용하여 다양한 방법으로 Pen 객체를 초기화합니다.
  • PenMain.java:

    • Pen 클래스의 다양한 생성자로 객체를 초기화하고 결과를 출력합니다.

ex5_constructor 패키지:

  • Person.java:

    • 생성자를 사용하여 Person 클래스를 정의합니다.
    • 이름과 나이를 매개변수로 받는 생성자를 사용하여 객체를 초기화합니다.
  • PMain.java:

    • Person 클래스의 인스턴스를 생성하고 생성자를 이용하여 초기화합니다.

ex6_static 패키지:

  • Bank.java:

    • Bank 클래스에서 static 변수 interest를 사용하여 이자율을 표현합니다.
    • static 변수는 클래스당 딱 한 개만 만들어지며, 객체가 아무리 많이 생성되어도 동일한 interest 값을 공유합니다.
  • BankMain.java:

    • Bank 클래스의 여러 인스턴스를 생성하고 static 변수인 interest 값을 변경하여 결과를 출력합니다.
  • Ex1_StaticTest.java:

    • static 변수와 일반 멤버 변수의 차이를 설명하고, 각각의 특징을 보여주는 클래스입니다.

2023년 1월 17일

ex1_vending 패키지:

  • Can.java:

    • Can 클래스를 정의하며, 음료수의 이름과 가격을 나타내는 멤버 변수를 가지고 있습니다.
  • VenMain.java:

    • VenMain 클래스는 자판기 프로그램의 메인 클래스입니다.
    • 사용자에게 돈을 입력받고, 자판기에서 제공하는 음료수 목록을 보여주는 등의 동작을 수행합니다.
  • Vending.java:

    • Vending 클래스는 자판기를 나타내며, 음료수 배열과 사용자에게 투입된 돈을 관리합니다.
    • 사용자에게 투입된 금액 범위 내의 음료수 목록을 출력하는 showCans 메서드와 음료수를 제공하고 잔액을 반환하는 outCan 메서드를 구현합니다.

ex2_inheritance 패키지:

  • Child.java:

    • Parent 클래스를 상속받는 Child 클래스를 정의하며, car라는 자식 클래스의 속성을 추가합니다.
  • ExtendsMain.java:

    • ExtendsMain 클래스는 상속 관계를 보여주는 메인 클래스입니다.
    • Child 클래스의 인스턴스를 생성하여 부모 클래스인 Parent의 속성과 자식 클래스의 속성을 출력합니다.
  • Parent.java:

    • Parent 클래스를 정의하며, moneystr라는 속성을 가지고 있습니다.

ex3_override 패키지:

  • Animal.java:

    • Animal 클래스를 정의하며, eyeleg라는 속성을 가지고 있습니다.
  • AnimalMain.java:

    • 다양한 동물 클래스(Bear, Lion, Elephant, Snake)의 인스턴스를 생성하여 속성을 출력하는 메인 클래스입니다.
  • Bear.java, Elephant.java, Lion.java, Snake.java:

    • 각각의 동물 클래스를 정의하며, Animal 클래스를 상속받습니다.
    • 동물의 특징을 나타내는 속성을 추가하고, Snake 클래스에서는 getLeg 메서드를 오버라이드하여 다리 개수를 0으로 설정합니다.

ex4_override 패키지:

  • CalMain.java:

    • Calculator 클래스와 이를 상속받은 CalPlusCalMinus 클래스를 사용하여 덧셈과 뺄셈을 수행하는 메인 클래스입니다.
  • CalPlus.java, CalMinus.java, Calculator.java:

    • 각각의 클래스를 정의하며, CalPlusCalMinusCalculator 클래스를 상속받아 덧셈과 뺄셈을 구현합니다.

ex5_super 패키지:

  • Child.java, Parent.java, SuperMain.java:
    • Parent 클래스를 상속받는 Child 클래스와 이를 테스트하는 SuperMain 클래스를 정의합니다.
    • super 키워드를 사용하여 부모 클래스의 생성자와 메서드를 호출하는 예제를 보여줍니다.

ex6_generic 패키지:

  • GenEx.java, GenMain.java:
    • 제네릭 클래스 GenEx와 이를 활용하는 메인 클래스 GenMain을 정의합니다.
    • 제네릭을 사용하여 다양한 타입의 데이터를 다룰 수 있는 클래스를 구현합니다.

2023년 1월 18일

ex1_work 패키지:

  • Work.java:

    • Work 클래스에는 알파벳 및 숫자에 대한 코드 배열을 기반으로 주어진 문자열을 암호화하는 setEnc 메서드가 있습니다.
  • WorkMain.java:

    • WorkMain 클래스는 Work 클래스를 사용하여 미리 정의된 코드 배열을 사용하여 문자열을 암호화하는 사용 예시를 보여줍니다.

ex2_abstract 패키지:

  • AbsChild.java:

    • AbsChild는 추상 클래스 AbsEx의 하위 클래스이며 추상 메서드 setValue에 대한 구현을 제공합니다.
  • AbsEx.java:

    • AbsEx는 추상 메서드 setValue와 일부 일반 필드를 포함하는 추상 클래스입니다.
  • AbsMain.java:

    • AbsMain 클래스는 AbsChild 클래스의 인스턴스화 및 오버라이드된 메서드 호출을 보여줍니다.

ex3_abstract 패키지:

  • Protoss.java, Terran.java, Zerg.java:

    • 추상 클래스 Unit를 확장하고 추상 메서드 decEnergy에 대한 구현을 제공하는 서로 다른 유닛 유형을 나타내는 클래스입니다.
  • Unit.java:

    • Unit 추상 클래스는 다양한 유닛 유형에 대한 공통 속성을 정의하며 추상 메서드 decEnergy를 포함합니다.
  • UnitMain.java:

    • 다양한 유닛 클래스 및 그들의 에너지 소비를 사용하는 방법을 보여주는 예시입니다.

ex4_interface 패키지:

  • InterChild.java:

    • InterTest 인터페이스를 구현하고 추상 메서드 getVALUE에 대한 구현을 제공합니다.
  • InterMain.java:

    • InterChild 클래스의 인스턴스화 및 해당 메서드 호출을 보여주는 예시입니다.
  • InterTest.java:

    • 상수 VALUE와 추상 메서드 getVALUE를 포함하는 InterTest 인터페이스를 정의합니다.

ex5_interface 패키지:

  • AllMenu.java:

    • 세 개의 다른 인터페이스 (Menu1, Menu2, Menu3)를 확장하고 새로운 메서드 raJogi를 소개하는 인터페이스입니다.
  • ExMain.java:

    • Kitchen 클래스를 인스턴스화하고 해당 메서드를 호출하는 예시입니다.

2023년 1월 19일

ex1_work 패키지:

  • WordGameMain.java:

    • WordGameMain 클래스는 WordScramble 클래스를 사용하여 단어 섞기 게임을 실행하는 예시를 보여줍니다.
  • WordScramble.java:

    • WordScramble 클래스에는 단어 배열과 단어를 섞는 메서드가 정의되어 있습니다.

ex2_exception 패키지:

  • Ex1_TryCatch.java:

    • try-catch 구문을 사용하여 예외 처리하는 예시를 보여줍니다.
  • Ex2_TryCatch.java:

    • 배열 인덱스 초과 예외를 처리하는 예시를 보여줍니다.
  • Ex3_TryCatch.java:

    • 키보드에서 입력 받은 값이 정수인지 확인하는 예시를 보여줍니다.

ex3_thread 패키지:

  • ThreadEx.java, ThreadMain.java:
    • 기본적인 스레드 생성 및 실행 예시를 보여줍니다.

ex4_multi_thread 패키지:

  • T1.java, T2.java, TMain.java:
    • 두 개의 스레드를 생성하여 각각의 스레드에서 1 또는 2를 출력하는 예시를 보여줍니다.

ex5_thread 패키지:

  • T1.java, TMain.java:
    • 특정 숫자부터 0까지 1초에 한 번씩 카운트 다운하는 스레드를 생성하는 예시를 보여줍니다.

ex6_exception_work 패키지:

  • Work.java:
    • 키보드에서 입력 받은 값이 정수인지 확인하는 예시를 보여줍니다.

ex7_thread_work 패키지:

  • Work.java, WorkMain.java:
    • 1부터 100 사이의 난수를 생성하여 두 숫자를 더하는 문제를 출제하고, 키보드에서 사용자의 답을 입력받아 맞히는 게임을 실행하는 예시를 보여줍니다.

ex8_runnable 패키지:

  • T1.java, TMain.java:
    • Runnable 인터페이스를 구현하여 스레드를 생성하는 예시를 보여줍니다.

2023년 1월 20일

ex1_set 패키지:

  • Ex1_Set.java:

    • HashSet을 사용하여 중복을 허용하지 않는 집합을 만들고, 기본적인 집합 관련 메서드를 사용하는 예시입니다.
  • Ex2_Set.java:

    • 난수를 이용하여 중복을 허용하지 않는 HashSet과 중복을 허용하지 않으면서 정렬된 TreeSet을 생성하는 예시입니다.

ex2_map 패키지:

  • Ex1_Map.java:

    • HashMap을 사용하여 키-값 쌍을 저장하고, 특정 키를 통해 값을 조회하며 기본적인 맵 관련 메서드를 사용하는 예시입니다.
  • Ex2_Map.java:

    • 문자열 키와 문자 값을 저장하는 HashMap을 만들고, 맵의 값을 배열로 변환하여 사용하는 예시입니다.

ex3_work 패키지:

  • WorkMain.java:
    • 키보드로부터 입력을 받아 정수인지 판별하는 예시입니다.

ex4_map_work 패키지:

  • MapWork.java:
    • 아이디와 비밀번호를 저장하고 로그인을 시도하는 예시입니다.

2023년 1월 25일

ex1_list 패키지:

  • Ex1_ArrayList.java:

    • ArrayList을 사용하여 정수를 저장하고 관리하는 예시입니다. 특정 인덱스에 값을 추가, 수정, 삭제하는 등의 기능을 보여줍니다.
  • Ex2_ArrayList.java:

    • ArrayList을 사용하여 문자열을 저장하고 관리하는 예시입니다. 특정 인덱스에 값을 추가, 수정, 삭제하는 등의 기능을 보여줍니다.
  • Ex3_ArrayList.java:

    • ArrayList을 사용하여 중복된 문자열을 피하면서 사용자 입력을 받는 예시입니다. 중복 체크를 위해 contains 메서드를 활용합니다.
  • Ex4_ArrayClass.java:

    • ArrayList을 다루는 클래스 Ex4_ArrayClass를 정의한 후, 이를 활용하는 예시입니다. setArr 메서드를 통해 ArrayList에 값이 추가되고, 이를 메인에서 출력합니다.
  • Ex4_ArrayList.java:

    • Ex4_ArrayClass를 사용하여 ArrayList에 값을 추가하고, 메인에서 해당 ArrayList를 출력하는 예시입니다.

ex2_list 패키지:

  • User.java:

    • 사용자 정보를 담는 User 클래스입니다. 이름과 나이를 private 필드로 갖고 있으며, 각각의 Getter 및 Setter 메서드를 제공합니다.
  • UserMain.java:

    • User 클래스를 사용하여 사용자의 이름과 나이를 입력받고, 중복된 이름을 체크하여 리스트에 추가하는 예시입니다.

ex3_io_file 패키지:

  • Ex1_File.java:

    • 파일 및 IO 개념에 대한 기본적인 내용을 다루는 예시입니다. 파일 객체를 생성하고, 해당 파일이 존재하면 파일의 크기를 출력합니다.
  • Ex2_File.java:

    • 폴더 내의 파일 목록을 출력하는 예시입니다.
  • Ex3_File.java:

    • 폴더가 존재하지 않으면 생성하는 예시입니다.
  • Ex4_File.java:

    • 특정 폴더의 하위 목록 중 폴더만 출력하는 예시입니다.

work 패키지:

  • WordGame.java:

    • 스레드를 사용하여 일정 시간 간격으로 단어를 리스트에 추가하는 예시입니다.
  • WordGameMain.java:

    • WordGame 스레드를 실행하고, 사용자에게 단어를 입력받아 리스트에서 제거하는 게임을 구현한 예시입니다.

2023년 1월 26일

ex1_file_input 패키지:

  • Ex1_FileInput.java:

    • FileInputStream을 사용하여 파일을 읽어오는 예시입니다. 파일이 존재하면 파일의 내용을 1바이트씩 읽어 화면에 출력합니다.
  • Ex2_FileInput.java:

    • FileInputStream을 사용하여 파일을 읽어오는 예시입니다. 파일의 내용을 한 번에 읽어 byte 배열에 저장하고, 이를 String으로 변환하여 출력합니다.

ex2_input 패키지:

  • Ex1_FileInput.java:
    • System.in.read()를 사용하여 키보드 입력을 받는 예시입니다. 입력 받은 값을 byte 배열에 저장하고, 이를 String으로 변환하여 출력합니다.

ex3_buffered_input 패키지:

  • Ex1_BufferedInput.java:
    • BufferedInputStream을 사용하여 파일을 읽어오는 예시입니다. 파일의 내용을 한 번에 읽어 byte 배열에 저장하고, 이를 String으로 변환하여 출력합니다. BufferedInputStream을 사용하여 입출력 성능을 향상시킵니다.

util 패키지:

  • MyPath.java:
    • 상수 PATH를 정의한 인터페이스입니다. 파일 경로를 관리하는 데 사용됩니다.

2023년 1월 30일

ex1_output 패키지:

  • Ex1_output.java:

    • System.out을 사용하여 콘솔에 데이터를 출력하는 예시입니다. PrintStream을 통해 'A'를 출력하고, byte 배열을 사용하여 'B', 'C', 'D'를 출력합니다.
  • Ex2_FileOutput.java:

    • FileOutputStream을 사용하여 파일에 데이터를 출력하는 예시입니다. 파일 경로에 "fileOutput예제.txt" 파일을 생성하고, 문자열을 바이트로 변환하여 파일에 기록합니다.
  • Ex3_BufferedFileOutput.java:

    • BufferedOutputStream을 사용하여 파일에 데이터를 출력하는 예시입니다. "bos의 예제.txt" 파일에 "buffered스트림의 예제." 문자열을 기록하고, flush() 메서드로 버퍼의 내용을 물리적으로 기록합니다.

ex2_char_input 패키지:

  • Ex1_FileReader.java:

    • FileReader를 사용하여 파일을 읽어오는 예시입니다. "test.txt" 파일의 내용을 읽어와서 콘솔에 출력합니다.
  • Ex2_BufferedReader.java:

    • BufferedReader를 사용하여 파일을 읽어오는 예시입니다. "test.txt" 파일의 내용을 한 줄씩 읽어와서 콘솔에 출력합니다.

ex3_char_output 패키지:

  • Ex1_FileWriter.java:

    • FileWriter를 사용하여 파일에 데이터를 출력하는 예시입니다. "fileWriter의 예제.txt" 파일에 문자열을 기록합니다.
  • Ex2_BufferedWriter.java:

    • BufferedWriter를 사용하여 파일에 데이터를 출력하는 예시입니다. "bufferedWriter의 예제.txt" 파일에 문자열을 기록하고, newLine() 메서드로 새로운 줄을 추가합니다.

ex4_object_input 패키지:

  • ObjectInputMain.java:
    • ObjectInputStream을 사용하여 객체를 파일에서 읽어오는 예시입니다. "person.sav" 파일에서 Person 객체를 읽어와서 객체의 정보를 출력합니다.

ex5_object_output 패키지:

  • ObjectWriterMain.java:
    • ObjectOutputStream을 사용하여 객체를 파일에 저장하는 예시입니다. "person.sav" 파일에 Person 객체를 저장합니다.

ex6_base64 패키지:

  • Base64_main.java:
    • Java의 Base64 클래스를 사용하여 문자열을 암호화하고 복호화하는 예시입니다.

ex7_work 패키지:

  • ByteStreamWork.java:

    • FileInputStream을 사용하여 파일을 읽어오고, 회문수 여부를 판단하는 예시입니다.
  • CharStreamWork.java:

    • FileReader를 사용하여 파일을 읽어오고, 대문자와 소문자의 갯수를 세는 예시입니다.

ex8_work 패키지:

  • GameLoad.java:

    • ObjectInputStream을 사용하여 게임 데이터를 파일에서 읽어오는 예시입니다.
  • GameSave.java:

    • ObjectOutputStream을 사용하여 게임 데이터를 파일에 저장하는 예시입니다.
  • Rsp.java:

    • 게임 결과를 저장하는 Rsp 클래스입니다. 이 클래스는 Serializable을 구현하여 객체를 직렬화할 수 있게 합니다.
  • RspMain.java:

    • 가위바위보 게임을 구현한 메인 클래스입니다. 사용자와 컴퓨터 간의 게임을 진행하고, 결과를 저장하고 불러오는 기능이 구현되어 있습니다.

2023년 1월 31일

  1. 파일 입출력 (File I/O)

    • Ex1_output: System.out을 사용하여 콘솔에 데이터를 출력하는 예제 및 파일에 데이터를 출력하는 예제가 포함되어 있습니다.
    • Ex2_FileOutput: FileOutputStream을 사용하여 파일에 데이터를 출력하는 예제입니다.
    • Ex3_BufferedFileOutput: BufferedOutputStream을 사용하여 파일에 데이터를 출력하는 예제입니다.
    • Ex1_FileReader: FileReader를 사용하여 파일에서 문자를 읽어오는 예제입니다.
    • Ex2_BufferedReader: BufferedReader를 사용하여 파일에서 한 줄씩 읽어오는 예제입니다.
    • Ex1_FileWriter: FileWriter를 사용하여 파일에 문자열을 쓰는 예제입니다.
    • Ex2_BufferedWriter: BufferedWriter를 사용하여 파일에 문자열을 쓰는 예제입니다.
  2. 객체 직렬화 (Object Serialization)

    • ObjectInputMain: 객체를 파일에 저장하고 읽어오는 예제입니다.
    • ObjectWriterMain: ObjectOutputStream을 사용하여 객체를 파일에 저장하는 예제입니다.
    • Person: Serializable을 구현한 객체 클래스로, 객체 직렬화를 위한 예제입니다.
  3. Base64 인코딩/디코딩

    • Base64_main: Java의 Base64 클래스를 사용하여 문자열을 인코딩하고 디코딩하는 예제입니다.
  4. 문제 해결 및 실습

    • ByteStreamWork: 파일에서 데이터를 읽어와 회문수인지 확인하는 예제입니다.
    • CharStreamWork: 파일에서 대문자와 소문자의 개수를 세는 예제입니다.
    • GameSaveGameLoad: 객체를 파일에 저장하고 불러오는 예제로, 가위바위보 게임의 결과를 저장합니다.
    • Rsp, RspMain: 간단한 가위바위보 게임의 결과를 저장하고 불러오는 예제입니다.
  5. 네트워크 통신

    • MyClientMyServer: 간단한 클라이언트-서버 통신 예제입니다. 클라이언트가 서버에 접속하면 서버에서 클라이언트의 IP 주소를 출력합니다.
  6. 윈도우 프레임 및 리스너

    • Ex1_frame, MyFrame, MyFrameMain: AWT를 사용하여 윈도우 프레임을 생성하는 예제입니다.
    • FrameMain: AWT를 사용하여 윈도우 프레임을 생성하고, 윈도우 이벤트를 감지하는 예제입니다.
    • MyListener, ClosingListener, ListenerClass, ListenerMain: 윈도우 리스너와 어댑터를 사용하여 윈도우 이벤트를 처리하는 예제입니다.

2023년 2월 1일

1. Ex1_ButtonTest (버튼 테스트)

  • Frame에 "확인"과 "닫기" 버튼이 있는 간단한 프레임을 생성합니다.
  • 버튼 클릭 이벤트를 처리하기 위해 ActionListener를 사용하였습니다.

2. Ex1_Button (버튼 이벤트 처리)

  • "버튼1", "버튼2", "버튼3" 세 개의 버튼을 만들어 각각의 버튼에 대한 클릭 이벤트를 처리합니다.
  • 버튼 이벤트를 처리하기 위해 ActionListener를 사용하였습니다.

3. Ex2_CheckBox (체크박스 및 라디오버튼)

  • "1. 당신의 취미는 무엇입니까?"라는 질문과 각각 "영화", "독서", "운동"에 대한 체크박스를 만들어 선택 상태를 출력합니다.
  • "2. 당신의 성별은 무엇입니까?"라는 질문과 "남자"와 "여자"에 대한 라디오버튼을 만들어 선택된 항목을 출력합니다.

4. Ex1_Choice (초이스)

  • 혈액형 선택을 위한 Choice를 생성하고 선택된 항목을 출력합니다.

5. Ex2_Choice (초이스 이벤트 처리)

  • "월", "화", ..., "일"까지의 항목을 가진 Choice를 생성하고 항목이 선택되면 콘솔에 출력합니다.

6. Memo (메모장 프로그램)

  • 기본적인 메모장 형태를 가진 프로그램입니다.
  • 상단에는 텍스트 필드와 "확인" 버튼이 있고, 중앙에는 텍스트 에어리어로 메모를 작성할 수 있습니다.
  • 하단에는 "저장"과 "닫기" 버튼이 있습니다.

각 예제는 AWT를 활용하여 간단한 GUI를 생성하고, 사용자 입력 또는 버튼 클릭과 같은 이벤트를 처리하는 방법을 보여줍니다. 코드를 실행하면 각각의 창이 나타나며 예제에 따라 다양한 GUI 컴포넌트와 이벤트 처리가 이루어집니다.

2023년 2월 2일

ImageTest.java

이 코드는 Java Swing을 사용하여 이미지를 화면에 표시하고, 버튼을 클릭하면 이미지가 변경되도록 하는 간단한 GUI 프로그램입니다.

  1. ImageIcon을 사용하여 이미지 파일을 로드합니다.
  2. JLabel을 생성하여 이미지를 표시합니다.
  3. JButton을 생성하고, 버튼을 클릭하면 이미지가 변경되도록 합니다.

ChatClient.java

이 코드는 Java Swing을 사용하여 간단한 채팅 클라이언트 프로그램을 구현한 것입니다.

  1. JFrame을 활용하여 GUI를 생성합니다.
  2. 서버에 접속하기 위해 Socket을 사용합니다.
  3. 텍스트 에어리어, 텍스트 필드, 전송 버튼이 있는 간단한 채팅 창을 만듭니다.
  4. 서버로 메시지를 전송하는 기능을 구현하고, 메시지를 받아와서 텍스트 에어리어에 출력합니다.
  5. 클라이언트는 별도의 스레드(Runnable 구현)에서 서버로부터 메시지를 지속적으로 수신하도록 합니다.

ChatClientMain.java

이 코드는 ChatClient를 실행하기 위한 메인 클래스입니다. 단순히 ChatClient 객체를 생성합니다.

ChatServer.java

이 코드는 간단한 다중 채팅 서버를 구현한 것입니다.

  1. ServerSocket을 사용하여 클라이언트의 연결을 기다립니다.
  2. 각 클라이언트에 대해 CopyClient 스레드를 생성하고 실행합니다.
  3. CopyClient는 클라이언트 간의 채팅을 관리하고, 새로운 클라이언트가 접속하면 서버에 알립니다.

ChatServerMain.java

이 코드는 ChatServer를 실행하기 위한 메인 클래스입니다. 단순히 ChatServer 객체를 생성하고 실행합니다.

CopyClient.java

이 코드는 서버에서 각 클라이언트를 별도의 스레드로 처리하기 위한 클래스입니다.

  1. 클라이언트로부터 메시지를 받아와서 서버에 전달합니다.
  2. 클라이언트가 종료되면 서버에서 해당 클라이언트를 리스트에서 제거하고, 나머지 클라이언트에게 퇴장 메시지를 전송합니다.

About

코리아 IT 아카데미에서 학습했던 자바 기초 내용

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages