일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 혼공단
- Doit파이썬스터디
- 제이펍
- 스터디완료
- 3주차후기
- 혼공분석
- 맛있는디자인
- 애프터이펙트
- 6주차후기
- 프리미어프로
- 혼공자
- 맛있는디자인스터디11기
- 혼공파
- 혼공학습단
- CC2023
- 전면개정2판
- 진짜쓰는일러스트레이터
- 후기
- 챌린지
- 맛있는디자인스터디13기
- 생성형AI
- 혼공C
- 맛있는디자인스터디12기
- 스터디
- 회고
- CS2023
- Doit점프투파이썬
- 혼공JS
- 혼공
- 혼공머신
- Today
- Total
애독자's 공부방
[혼공자] 2주차 _ 혼자 공부하는 자바(개정판) 본문
혼공단 - 혼공자, 혼자 공부하는 자바(개정판)
■ 공부한 내용
# | 진도 | 기본 숙제(필수) | 추가 숙제(선택) |
2주차 (7/8 ~ 7/14) |
Chapter 04 ~ 05 | p.164 직접 해보는 손코딩(switch문) 실행 후 결과 화면 캡쳐하기 | p.223 하단 (05-2) 확인 문제 6번 풀고 정리하기 |

□ Chapter 04
▷ 04-1
- if문: 조건식이 true가 되면 중괄호 내부를 실행
. if( 조건식 ) { 실행문 }
- if-else문: 조건식이 true가 되면 중괄호 내부를 실행하고, false가 되면 else 중괄호 내부를 실행
. if( 조건식 ) { 실행문A } else { 실행문B }
- if-else if-else문: 조건식1이 true가 되면 if 중괄호 내부를 실행하고, 조건식2가 true가 되면 else if 중괄호 내부를 실행하며, 조건식1과 조건식2가 모두 false가 되면 else 중괄호 내부를 실행
. if( 조건식1 ) { 실행문A } else if( 조건식2 ) { 실행문B } else { 실행문C }
- switch문: 변수의 값이 값1이면 첫 번째 case 코드를 실행하고, 값2이면 두 번째 case 코드를 실행하며, 값1과 값2가 모두 아니면 default 코드를 실행
. switch( 변수 ) { case 값1: 실행문A case 값2: 실행문B default: 실행문C }
▷ 04-2
- for문: 조건식이 true가 될 때까지만 중괄호 내부를 반복하고, 반복할 때마다 증감식이 실행되며, 초기화식은 조건식과 증감식에서 사용할 루프 카운터 변수를 초기화 (주로 지정된 횟수만큼 반복할 때 사용)
. for( 초기화식; 조건식; 증감식 ) { 실행문 }
- 중첩for문: for문이 또 다른 for문을 내포한 것으로, 바깥쪽 for문이 한 번 실행할 때마다 중첩된 for문은 지정된 횟수만큼 반복해서 돌다가 다시 바깥쪽 for문으로 복귀
. for( 초기화식1; 조건식1; 증감식1 ) { 실행문A; for( 초기화식2; 조건식2; 증감식2 ) { 실행문B } }
- while문: 조건식이 true가 될 때까지만 중괄호 내부를 반복 실행
. while( 조건식 ) { 실행문 }
- do-while문: 먼저 do 중괄호 내부를 실행하고, 그다음 조건식이 true가 되면 다시 중괄호 내부를 반복 실행
. do { 실행문 } while( 조건식 );
- break문: for문, while문, do-while문 내부에서 실행되면 반복을 취소
- continue문: for문, while문, do-while문 내부에서 실행되면 증감식 또는 조건식으로 복귀
□ Chapter 05
▷ 05-1
- 기본 타입: byte, short, char, int, long, float, double, boolean
. 기본 타입의 변수에는 값 자체를 저장
- 참조 타입: 기본 타입을 제외한 배열, 열거, 클래스, 인터페이스 등으로, 번지로 객체를 참조한다는 의미
. 참조 타입의 변수에는 객체의 번지가 저장
- 메모리 사용 영역: JVM은 운영체제에서 할당받은 메모리 영역(Runtime Data Area)을 3개 영역으로 구분해서 사용
. 메소드 영역: JVM이 시작될 때 생성되고, 모든 스레드가 공유
→ 정적 필드, 상수, 메소드 코드, 생성자 코드가 위치
. 힙 영역: 객체와 배열이 생성되는 영역
. JVM 스택 영역: 최초로 변수에 값이 저장(초기화)될 때 변수를 생성
→ 변수는 선언된 블록 안에서만 스택에 존재하고 블록을 벗어나면 스택에서 제거됨
- 비교 연산자(==, !=): 기본 타입에서 사용되면 값을 비교, 참조 타입에서 사용되면 번지를 비교
. == 연산의 결과가 true이면 같은 객체를 참조한다는 뜻이고, false이면 다른 객체를 참조한다는 뜻
- null: 참조 타입 변수가 객체를 참조하지 않는다는 뜻으로 이 값을 가질 수 있음
. null 값도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성됨
- NullPointerException: 참조 변수가 null을 가지고 있는 경우에는, 참조 객체가 없으므로 참조 변수를 통해 객체를 사용 불가
. null인 참조 변수를 통해 존재하지 않는 객체의 필드나 메소드를 사용하면 해당 오류가 발생
▷ 05-2
- 배열: 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조
. 인덱스: 배열 항목에 붙인 번호 (0번부터 시작하며 0~'배열길이-1'까지 범위를 갖음)
- 배열 선언: 변수 선언과 비슷, 대괄호가 추가되어 '타입[] 변수;' 형태로 선언됨
. 타입: 배열에 저장될 데이터의 타입
- 배열 생성: { 값1, 값2, 값3, ... }처럼 값 목록으로 생성하는 방법과, 'new 타입[길이];'로 생성하는 방법 존재
- 배열 길이: 배열에 저장할 수 있는 항목(값)의 수
. 배열의 length 필드에 저장되어 있기에, '변수.length'로 배열 길이를 확인
- 명령 라인 입력: 문자열 목록으로 구성된 String[] 배열이 생성되어 main() 메소드를 호출할 때 매개값으로 전달
. main() 메소드의 매개값인 String[] args의 의미: main()은 이를 통해 명령 라인에서 입력된 데이터의 수(배열의 길이)와 입력된 데이터(배열의 항목 값)을 알 수 있음
1) JDK 11 이후: java -p . -m 모듈명/패키지.클래스 문자열0 문자열1 문자열2 ... 문자열n-1
2) JDK 8 이전: java 패키지.클래스 문자열0 문자열1 문자열2 ... 문자열n-1
- 다차원 배열: 배열 항목(값)이 도 다른 배열을 참조할 때
. 선언 및 생성 방법: 타입[][]변수 = new 타입[길이1][길이2];
1) 변수.length: 1차원 배열의 길이1
2) 변수[인덱스].length: 해당 항목이 참조하는 2차원 배열의 길이2
- 향상된 for문: for( 타입 변수 : 배열 ) { 실행문 }
. 반복 실행을 하기 위해 루프 카운터 변수와 증감식을 사용하지 않음
→ 배열의 항목 개수만큼 반복하고, 자동적으로 for문을 탈출 (반복할 때마다 변수에는 배열에서 가져온 항목이 저장)
▷ 05-3
- 열거 타입: 몇 가지로 제한된 상수를 가지는 타입
. 열거 상수: 열거 타입 선언 때 주어진 상수를 말하며, '타입.상수' 형태로 사용
예) Week.MONDAY: Week 열거 타입의 상수 MONDAY 사용
- 열거 타입 선언: enum 타입 { 상수, 상수, ... } 형태로 선언
예) enum 타입 { MONDAY, TUESDAY, ... , SUNDAY }
- 열거 타입 변수: 열거 타입으로 선언된 변수로, 열거 타입 변수에는 열거 상수 중 하나가 대입됨
예) Week today = Week.FRIDAY; ← today: 열거 타입 변수
■ 기본 숙제
- p.164 직접 해보는 손코딩(switch문) 실행 후 결과 화면 캡쳐하기
. 저는 6번이 나왔습니다.

■ 추가 숙제(선택)
- p.223 하단 (05-2) 확인 문제 6번 풀고 정리하기
. 저는 향상된 for문 사용해서 진행했습니다.
. 찾아보니 최대값(max)을 구하는 방법은 여러가지가 있었으나, import를 하지 않는 방법으로 진행했습니다.
→ Java.lang.Math.max() 이용
※ https://docs.oracle.com/javase%2F8%2Fdocs%2Fapi%2F%2F/java/lang/Math.html#max-int-int-
if (selectNo == 1) {
System.out.print("학생수> ");
studentNum = Integer.parseInt(scanner.nextLine());
scores = new int[studentNum];
} else if(selectNo == 2) {
for(int i=0; i<scores.length; i++) {
System.out.print("scores[" + i + "]> ");
scores[i] = Integer.parseInt(scanner.nextLine());
}
} else if(selectNo == 3) {
for(int i=0; i<scores.length; i++) {
System.out.println("scores["+ i +"]> "+ scores[i]);
}
} else if(selectNo == 4) {
int max = Integer.MIN_VALUE;
int sum = 0;
for(int score : scores) {
max = Math.max(max, score);
sum = sum + score;
}
System.out.println("최고 점수: " + max);
double avg = (double) sum / scores.length;
System.out.println("평균 점수: " + avg);
}

'Java > 혼공학습단 12기' 카테고리의 다른 글
[혼공자] 6주차 _ 혼자 공부하는 자바(개정판) (0) | 2024.08.11 |
---|---|
[혼공자] 5주차 _ 혼자 공부하는 자바(개정판) (0) | 2024.08.04 |
[혼공자] 4주차 _ 혼자 공부하는 자바(개정판) (1) | 2024.07.22 |
[혼공자] 3주차 _ 혼자 공부하는 자바(개정판) (0) | 2024.07.15 |
[혼공자] 1주차 _ 혼자 공부하는 자바(개정판) (0) | 2024.07.02 |