어제 기술매니저님께서 책(혼자 공부하는 자바)에 나오는 연습문제 정도는 바로바로 풀 줄 알아야 한다고 하셔서 오늘은 복습에 초점을 맞출 예정입니다. 일단 챕터 5를 다 끝내고 챕터 1부터 연습문제 답지 안보고🤓 다 한번 풀어보겠습니다. 벌써 토요일이네요.

 

🎼오늘의 노래 그레이- 하기나 해

 

하기나 해!! 제발요!!

 

05-3 열거 타입

  • 열거 타입(enumeration type):한정된 값만 갖는 타입
    • 열거 상수(enumeration constant) 중에서 하나의 상수를 저장하는 타입

 

열거 타입 선언

  • 1. 열거 타입의 이름을 정하고 해당 이름으로 소스 파일(.java)을 생성해야 함
    • 이름은 관례적으로 첫 글자를 대문자로 하고 나머지는 소문자로 구성함
    • 여러 단어로 구성된 이름이라면 각 단어의 첫 글자는 대문자로 하는 것이 관례임
  • 2. 소스 파일 내용으로 열거 타입 선언 -> public enum : 열거 타입을 선언하기 위한 키워드 (반드시 소문자로 작성)
    • 열거 타입 이름은 소스 파일 이름과 대소문자가 모두 일치해야함
    • public enum 열거타입 이름 {...}
  • 3. 열거 상수 선언
    • 열거 탕비의 값으로 사용
    • 모두 대문자로 작성함
      • public enum Week { MOMDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
    • 여러 단어로 구성될 경우 밑줄(_)로 연결

 

열거 타입 변수

  • 열거 타입은 변수를 선언하고 사용 가능
    • 열거타입 변수;
  • 열거 상수를 저장
    • 열거타입 변수 = 열거타입.열거상수;
    • ex) Week today = Week.SUNDAY;
    • ex) Week birthday = null;
  • 열거 상수는 열거 객체로 생성
    • Week 의 경우 총 7개의 Week 객체로 생성
    • 메소드 영역에 생성된 열거 상수가 해당 Week 객체를 각각 참조
    • 열거 타입은 참조 타입
    • 열거 상수는 객체!
  • Week today = Week.SUNDAY;
    • 열거 타입 변수 today 스택 영역
    • today에 저장되는 값은 Week.SUNDAY 열거 상수가 참조하는 개체의 번지
    • 열거 상수 Week.SUNDAY와 변수는 서로 같은 Week 객체를 참조
    • today == Week.SUNDAY; //true

 

  • week1와 week2는 모두 Week.SATURDAY 상수라는 동일한 Week 객체를 참조
Week week1 = Week.SATURDAY;
Week week2 = Week.SATURDAY;
System.out.println( week1 == week2 ); //true
  • 자바는 컴퓨터의 날짜 및 요일, 시간을 얻기 위해 Calendar 클래스를 제공함
  • Calendar 변수를 선언 -> Calendar.getInstance()
    • Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR); //연
int month = now.get(Calendar.MONTH) +1; //월(1~12)
int day = now.get(Calendar.DAY_OF_MONTH); //일
int week = now.get(Calendar.DAY_OF_WEEK); //요일(1~7)
int hour = now.get(Calendar.HOUR); //시간
int minute = now.get(Calendar.MINUTE); //분
int second = now.get(Calendar.SECOND); //초

 

열거 타입과 열거 상수

Week.java (열거 타입 선언)

public enum Week {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}

Main.java (열거 타입 사용하기)

import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        Week today = null;
        Calendar cal = Calendar.getInstance();
        int week = cal.get(Calendar.DAY_OF_WEEK);

        switch (week) {
            case 1:
                today = Week.SUNDAY; break;
            case 2:
                today = Week.MONDAY; break;
            case 3:
                today = Week.TUESDAY; break;
            case 4:
                today = Week.WEDNESDAY; break;
            case 5:
                today = Week.THURSDAY; break;
            case 6:
                today = Week.FRIDAY; break;
            case 7:
                today = Week.SATURDAY; break;
        }

        System.out.println("오늘 요일: " + today);

        if(today == Week.SUNDAY) {
            System.out.println("일요일에는 축구를 합니다.");
        } else {
            System.out.println("열심히 자바 공부합니다.");
        }
    }
}

 

열거 타입을 사용하려면 public enum 열거 타입 선언한 먼저 해야함

 

 


확인문제 복습 손코딩으로 하기

손코딩으로 해야 는다는 글을 어디서 본 적이 있어서 복습은 노트에 손코딩하면서 하기로 결심했습니다. 확실히 답지도 안보고 문제만 보면서 펜으로 노트에 직접 쓰니까 더 머릿속에 잘 들어오는 듯 합니다. 그래도 한 번 푼 문제라고 풀리는 문제가 안풀리는 문제보다는 많습니다.

 

근데 생각보다 저는 더 악필이네요🤓

 

  • while문에 break; 잊지 않기
  • 타입 선언 잊지 않기
  • 변수 선언한 {}를 벗어나놓고 왜 안되지 하지 않기
  • 이유 알고 쓰기
  • {} 빼먹지 않기; 실행 순서 알기
  • 문제를 꼼꼼히 읽읍시다
  • String 변수는 .equals() 메소드를 사용

chapter 2 변수

Chapter 02-1

1. o,x 문제

  • 변수는 하나의 값에만 저장할 수 있음
  • 변수 선언 시에 사용한 타입의 값만 저장할 수 있음
  • 변수는 초기 값이 저장되지 않은 상태에서 읽을 수 없음

2. 변수 이름으로 사용할 수 있는 것 o,x 문제

  • $value는 사용할 수 있음
    • 첫번째 글자는 문자이거나 '$', '_' 만 가능함

 

Chapter 02-2

2. o,x 문제

  • char var = 'AB'; //char 타입이 아니라 String 타입임
  • long var = 50000000000; //long은 int 타입의 범위를 벗어 날 시 숫자 뒤에 L 을 붙어야 함
  • String var = "나의 직업은 "개발자" 입니다."; //"를 썼으면 안에는 '를 써야함
  • float = 1e2f; // 변수 이름을 빼먹음😱😱

 

Chapter 02-3

10. 다음 코드 실행했을 때 출력 결과

String str1 = 2+3+""; //5
String str2 = 2+""+3; //23
String str3 = "+2+3; //23

+ 연산에서의 문자열 자동 타입 변환

숫자 + 숫자 -> 덧셈 연산 -> 숫자

"문자열" + 숫자 -> " 문자열"+"숫자" -> "문자열숫자"

숫자 + "문자열" -> "숫자" + "문자열" -> "숫자문자열"

 

손코딩 연습

 

 

+ Recent posts