안녕하세요! 이번주는 chap 4, 5를 공부했습니다~
Chap 4. 조건문과 반복문
조건문
if문
조건식 결과에 따라 블록의 실행 여부 결정됩니다. 조건식이 참(true)이라면 블록이 실행되고 거짓(false)라면 블록을 실행하지 않습니다.
if-else문
if문의 조건식이 참이면 if문 블록이 실행되고 거짓이면 else문 블록이 실행되는 구조입니다.
if-else if-else문
조건문이 여러개인 if문 구조입니다. if-else문의 확장된 구조라고 생각하시면 됩니다! 여러 개의 조건식 중 참이 되는 블록만 실행하고 실행한 전체 if문을 벗어나게 됩니다. else if 블록의 마지막에는 else문을 추가할 수 있습니다. 만약 모든 조건식이 거짓이라면 else 블록을 실행하고 if문을 벗어나게 됩니다.
switch문
변수가 어떤 값을 가지느냐에 따라 실행문이 선택됩니다. 괄호 안의 변수 값과 동일한 값을 갖는 case로 가서 실행문을 실행합니다. 만약 괄호 안의 변수 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행합니다.
case를 끝낼 때 적혀 있는 break는 다음 case를 실행하지 않고 switch문을 빠져나간다는 의미입니다. 만약 case의 끝에 break가 없다면 이후의 남아 있는 case가 계속해서 실행됩니다.이 개념은 제가 정보처리기사나 전공 문제를 풀 때 자주 까먹었던 개념이였습니다. 🥲 관련 문제를 푸실 때 꼭 유의하세요!
for문
주어진 횟수만큼 실행문을 반복 실행할 때 적합한 반복 제어문입니다. for문에는 ( )에 초기화식, 조건식, 증감식이 들어갈 수 있습니다. 조건식이 참일 때 반복문 내에 있는 실행문이 실행됩니다.
- 초기화식은 조건식과 실행문, 증감식에서 사용할 변수를 초기화하는 역할을 합니다. 초기화식에 선언된 변수는 for문 블록 내부에서 사용되는 로컬 변수입니다.
- 만약 변수를 for문 초기화식에서 선언하지 않고 for문 전에 선언하였다면 for문을 벗어나도 사용할 수 있습니다.
- 중첩 for문은 for문 안에 또 다른 for문을 포함하고 있는 구조입니다. 바깥 for문이 한 번 실행될 때마다 중첩된 for문은 지정된 횟수만큼 반복해서 돌다가 다시 바깥쪽 for문으로 돌아갑니다. 대표적인 예제로는 구구단 출력이 있습니다.
while문
조건식이 참일때 계속해서 반복하는 구조입니다. 조건식에는 주로 비교 또는 논리 연산식이 오며 조건식이 거짓이 되면 반복을 멈추고 while문을 벗어납니다. while문을 종료시키 위해서는 변수를 거짓으로 만들거나 break문을 사용하면 됩니다.
do-while문
조건식에 의해 반복되는 점은 while문과 동일하지만 특히 블록 내부의 실행문을 우선 실행하고 실행 결과에 따라 반복을 계속할 지 결정할 때 사용합니다.
break문
반복문을 중지할 때 사용됩니다. 만약 반복문이 중첩되었을 때는 가장 가까운 반복문만 종료하며 바깥 반복문은 종료되지 않습니다.
continue문
반복문 블록 내에서 continue문이 실행되면 for문의 증감식 또는 while, do-whlie문의 조건식으로 이동하며 반복문을 종료하지 않고 계속 해서 반복을 수행합니다. if문과 같이 사용될 때는 특정 조건을 만족하는 경우에 continue문을 실행해 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어가게 하는 역할을 합니다.
Chap 5. 참조 타입
참조 타입이란?
객체의 번지를 참조하는 타입에는 배열, 열거, 클래스, 인터페이스가 있습니다. 메모리의 번지를 변수 안에 저장하고 번지를 통해 객체를 참조한다는 뜻입니다.
메모리 사용 영역
- 메소드 영역: JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역입니다. 클래스 별로 코드를 분류해서 저장합니다.
- 힙 영역: 객체와 배열이 생성되는 영역입니다. 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조합니다.
- JVM 스택 영역: 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행합니다.
참조 변수의 연산
참조 타입 변수의 값은 힙 영역의 객체 주소이므로 ==, =! 연산은 번지의 값을 비교하는 연산이 됩니다. 동일한 번지의 값을 갖고 있다는 것은 동일한 객체를 참조한다는 것을 의미합니다. 만약 동일한 객체라면 ==의 값은 참이며 =!의 값은 거짓이 됩니다.
참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null 값을 가질 수 없습니다. null값도 초기값으로 사용할 수 있으므로 null로 초기화된 참조 변수는 스택 영역에서 생성됩니다.
String(클래스)
문자열은 String 객체로 생성되며 변수는 String 객체를 참조합니다. new 생성자를 통해 String 객체를 생성할 수 있습니다. new 연산자는 힙 영역에 새로운 객체를 만들 때 사용하는 연산자로 객체 생성 연산자라고 합니다.
배열
같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조입니다. 배열의 인덱스는 0부터 시작됩니다. 배열은 힙 영역에 생성되고 배열 변수는 힙 영역의 배열 객체를 참조하게 됩니다.
- 배열은 같은 타입의 데이터만 저장 가능
- 한번 생성된 배열은 수정 불가
열거
한정된 값인 열거 상수중에서 하나의 상수를 저장하는 타입입니다. 열거 타입을 선언하기 위해서는 먼저 열거 타입의 이름을 정하고 해당 이름으로 소스 파일(.java)을 생성해야 합니다.
public enum 열거타입이름 {...}
참조타입은 처음 배울 때도 어렵다고 생각했는데 여전히 쉬운거 같지는 않습니다. ㅠㅠ
3주차에는 더 빨리 공부를 시작해서 포스팅 시간을 앞당기는 것이 목표입니다. 그리고 선택미션까지 하는 것도!!
'Backend > JAVA' 카테고리의 다른 글
[혼공자] 1주차 Chap 1 - 3 (0) | 2024.01.07 |
---|