250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- cluster index
- Functional Interfaces
- Wildcard
- 자율학습
- Interface
- 접근 제어자
- 인프런
- 혼공
- noncluster index
- Access Modifier
- java
- 혼공자바
- 혼공컴운
- 인터페이스
- 나도코딩
- literal
- 0 시작
- 오블완
- types
- HashMap
- Default
- Lazy loading
- Proxy Object
- 티스토리챌린지
- 접근제어자
- 혼공학습단
- Spring Data JPA
- dotnet
- 스프링 부트 3
- entrySet
Archives
- Today
- Total
지금을 사는 사람
혼자 공부하는 자바 2주차 본문
728x90
기본미션
- p.142 직접 해보는 손코딩(switch문) 실행 후 결과 화면 캡쳐하기
선택미션
- p.202 05-2 확인 문제 6번 풀고 정리하기
package sec02.verify.exam06;
import java.util.Scanner;
public class Exam06 {
public static void main(String[] args) {
boolean run = true; // while문을 종료시키기 위해 사용하는 변수
int studentNum = 0;
int[] scores = null;
Scanner scanner = new Scanner(System.in);
while (run) {
System.out.println("--------------------------------------------------------------");
System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
System.out.println("--------------------------------------------------------------");
System.out.print("선택> ");
int selectNo = Integer.parseInt(scanner.nextLine());
if (selectNo == 1) {
System.out.print("학생수> ");
studentNum = Integer.parseInt(scanner.nextLine());
scores = new int[studentNum]; // Scanner로 학생수를 받아 배열 할당
} else if (selectNo == 2) {
for (int i = 0; i < scores.length; i++) { // for문으로 배열을 순환하며 점수 입력
System.out.print("scores[" + i + "]> ");
scores[i] = Integer.parseInt(scanner.nextLine());
}
} else if (selectNo == 3) {
for (int i = 0; i < scores.length; i++) { // for문을 순환하며 입력된 값 출력
System.out.println("scores[" + i + "]: " + scores[i]);
}
} else if (selectNo == 4) {
int max = 0;
int sum = 0;
double avg = 0;
for (int i = 0; i < scores.length; i++) {
max = (max < scores[i]) ? scores[i] : max; // 3항 연산자 사용하여 최고 값 갱신
sum += scores[i];
}
avg = (double) sum / studentNum; // 평균을 구하기 위해 double로 캐스팅
System.out.println("최고 점수: " + max);
System.out.println("평균 점수: " + avg);
} else if (selectNo == 5) {
run = false;
}
}
System.out.println("프로그램 종료");
}
}
Chapter 04 : 조건문과 반복문
조건문
- 조건문은 조건식에 따라 다른 실행문을 실행하기 위해 사용
- if문, switch
if문
- 조건식의 결과에 따라 블록 실행 여부 결정
- 조건식이 true면 if 문 실행
if-else문
- if문을 확장한 형태
- if 문의 조건을 만족하지 않으면 else 문 실행
if-else if-else문
- if-else문을 확장한 형태
- 여러개의 조건을 처리할 필요가 있을 때 사용
switch문
- 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨
반복문
- 어떤 작업을 반복적으로 실행해야할 때 사용
for문
- 반복 횟수를 알고 있을 때 사용
- 주어진 횟수만큼 실행문을 반복
while문
- 조건에 따라 반복할 때 주로 사용
- 조건식이 true일 경우 계속해서 반복
do-while문
- do 블록을 먼저 실행 하는 것 외에는 while문과 동일
break문
- for, while, do-while문에서 실행을 중지할 때 사용
continue문
- 반복문을 종료하지 않고 계속 반복을 수행
Chapter 05 : 참조 타입
참조 타입과 참조 변수
- 자바의 타입은 primitive type과 reference type으로 구분
- primitive type : byte, char, float, boolean ...
- reference type : array, enum, class ...
기본 타입과 참조 타입
- 기본 타입은 실제 값을 변수에 저장
- 참조 타입은 값의 메모리 번지를 변수 안에 저장
메모리 사용 영역
- JVM은 운영체제에서 메모리 영역을 할당받아 그림과 같이 구분하여 사용
- 메소드 영역 : JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역. static field, constant, method, constructor 등을 저장
- 힙 영역 : 객체와 배열이 생성되는 영역. 참조하는 변수나 필드가 없다면 Garbage Collector가 자동으로 제거
- 스택 영역 : 메소드 호출 시 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거. method 내부에서 생성되는 로컬 변수 스택은 변수에 값이 최초로 저장 될 때 생성되었다가 블록을 벗어나면 스택에서 제거
참조 변수의 ==, != 연산
- 참조변수에서는 동일한 객체인지를 비교하는 것이기 때문에 해당 연산은 번지값을 비교하는
null과 NullPointerException
- 참조 타입 변수는 객체를 참조하지 않는 뜻인 null 값을 가질 수 있음
- null로 초기화된 변수는 스택에 생성됨
- 참조변수가 null 값을 가지고 있을 때 참조 타입을 참조하게되면 NullPointerException(예외)가 발생
배열
배열이란 ?
- 같은 타입의 데이터를 연속된 공간에 나열하고 각 데이터에 Index를 부여해 놓은 자료구조
- 인덱스는 0부터 시작
score[인덱스] // 해당 인덱스의 값을 구할 수 있다.
배열 선언
타입[] 변수; // 방법 1
타입 변수[]; // 방법 2
int[] intArray;
int intArray[];
- 배열은 참조 변수에 속하기 때문에 객체로 취급되며 힙 영역에 생성됨
- 참조할 객체가 없다면 배열 변수는 null 값으로 초기화
배열 생성
- 값 목록으로 배열 생성
타입[] 변수 = {값0, 값1, 값2, ...}; String[] names = {"홍길동", "고길동", ...};
- 값 목록으로 배열을 생성하면 이후 실행문에서 중괄호를 사용한 배열 생성이 허용되지 않음
- 값이 나중에 결정되어야 한다면 new 연산자를 사용할 것
타입[] 변수 = new 타입[길이]; int[] intArray = new int[5]; // 배열을 매개 변수로 사용하는 함수가 있을때에도 new를 사용 int add(int[] scores) {...} int result = add( {95, 85, 0} ); // 컴파일 에러 int result = add( new int[] {95, 85, 0} );
배열의 길이
배열 변수.length;
int[] intArray = { 10, 20, 30 };
int num = intArray.length;
intArray.length = 10; // length는 읽기 전용으로 오류 발생
다차원 배열
- 수학의 행렬과 같은 방식의 2차원 배열 구성도 가능
int[][] scores = new int[2][3];
배열 복사
- 배열은 한번 생성하면 크기 변경 불가
- 더 많은 공간이 필요하다면 더 큰 배열을 만들고 복사해야 함
int[] oldIntArray = { 1, 2, 3 }; int[] newIntArray = new int[5]; System.arraycopy(oldIntArray, 0, newIntArray, 0, oldIntArray.length);
향상된 for문
- 배열이나 컬렉션을 좀 더 쉽게 처리하기 위해 향상된 for문을 제공
- 변수와 증감식을 사용하지 않음
열거 타입
- 열거 상수 중에서 하나의 상수를 저장하는 타입
- 월~일과 같은 한정 된 값을 상수로 저
열거 타입 선언
- 열거 타입을 선언하려면 해당 이름으로 소스파일(.java) 파일이 필요
- 열거 타입 이름은 관례적으로 첫 글자를 대문자로 하고 나머지는 소문자로 구성
public enum Week { MONDAY, TUESDAY, ... }
열거 타입 변수 사용
Week today = Week.SUNDAY;
728x90
'스터디 > 혼공학습단' 카테고리의 다른 글
혼자 공부하는 자바 4주차 (0) | 2024.01.28 |
---|---|
혼자 공부하는 자바 3주차 (0) | 2024.01.17 |
혼자 공부하는 자바 1주차 (1) | 2024.01.03 |
혼공학습단 10기 회고 (0) | 2023.08.24 |
혼자 공부하는 컴퓨터 구조 + 운영체제 6주차 (0) | 2023.08.22 |