오늘 공부한 내용 ✍️
java
상수 (constant)
- 상수 선언하기
- 상수는 변하지 않는 수
- 원주율, 1년 12개월 등
- final 예약어 사용하여 선언 (method, class에 다 쓸 수 있음) ex) final int MAX_NUM = 100;
- 보통 전부 대문자로 표현
- 상수 사용하면 변하지 않는 값 반복하여 사용할 때, 의미있는 문자로 인식하기 쉽고, 변하더라도 선언한 부분만 변경하면 되므로 여러 부분 수정할 필요 X
- 리터럴(literal)
- 프로그램에서 사용하는 저장되어있는 숫자, 문자, 논리값
- java 구조 -> num = 10 이라할 때, 10이란 값 (4byte) 저장되어있는 메모리에서 num 값에 복붙하는 것 (원본은 그대로)
- 리터럴은 상수 풀(constant pool)에 있음
- 상수 풀 (constant pool)
- 컴퓨터에서 프로그램 실행하는 법 -> 하드에서 메모리로 프로그램 로드
- 해당 기능 쓸 때만 메모리에 로드되는 타입도 있지만 프로그램 로드되면 메모리 먼저 차지하는 타입도 있음
- 먼저 차지하는 타입 = constant pool or data area = 상수(리터럴), static 변수 등이 담김
- 프로그램이 unload 될 때 같이 사라짐
- 정수 리터럴은 int, 실수는 double로 저장되어있음
- 정수의 범위가 넘어가는 경우는 L or l, float는 F or f 식별자 써줘야함
- 형 변환 (type conversion)
- 서로 다른 자료형 간 연산 등의 수행 위해 하나의 자료형으로 통일하는 것
- 묵시적 형변환 (explicit type conversion, 자동 형 변환)과 명시적 형변환 (implicit type conversion, 강제 형 변환)이 있음
- 묵시적 형변환 (자동)
- 바이트 크기가 작은 자료형 -> 큰 자료형
- 덜 정밀한 자료형 -> 더 정밀한 자료형

연산자
조건문
- if문
- switch - case 문
- if-else if-else문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현
- 비교 조건이 특정 값이나 문자열일 겨우 사용
- break 문을 사용하여 각 조건이 만족되면 switch 블럭을 빠져나오도록 함
- java 14부터 좀 더 간결해진 표현식이 지원됨 (break 사용 안함)
- case 1,2,3 이나 case 1: case 2: 이런식으로 붙여서 쓰기 가능 (윗버전부터)
반복문
-
while문
- 주어진 조건에 맞는 동안 (true) 지정된 수행문을 반복적으로 수행하는 제어문
- 조건이 맞지 않으면 반복하던 수행을 멈추게 됨
- 조건은 주로 반복 횟수나 값의 비교의 결과에 따라 true, false 판단 됨
- ex) 달리는 자동차, 특정 온도까지 가동되는 에어컨 등
while(조건식) {
수행문1;
}
- 지역 변수에서 사용 전 초기화 해줘야함 ex) int sum x -> int sum = 0;
-
do-while 문
-
for문
-

-
각 반복문 주 사용처
-
for문 생략 가능 종류
-
초기화식 생략 : 이미 이전에 값이 초기화 되어 for 내부에서 값을 지정할 필요가 없는 경우
-

-
조건식 생략 : 반복 수행에 대한 조건이 수행문 내부에 있는 경우
-

-
증감식 생략 : 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과값에 결정되는 경우
-

-
무한 반복
-

-
중첩 반복문 (Nested Loop)
- 반복문 내부에 또 다른 반복문
- 여러 겹으로 반복문 겹쳐서 구현 가능 (단 수행시간에 문제 발생 가능)
- 외부 반복문과 내부 반복문 간의 변수 값 변화에 유의하며 구현해야함
-
break문
- 감싸고 있는 제어문의 블록에서 빠져 나오는 기능 (switch문에서도 사용)
- 반복문에서는 주로 조건문(if)와 같이 사용하여 조건에 해당되는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동
- 여러 반복문이 중첩되어 있는 경우엔 break문이 포함되어 있는 반복문만 빠져나옴
-
continue문
- 반복문 내부에서 조건문(if)같이 사용하며, 조건이 맞는 경우 (true이면) 이후 반복문은 블럭 내부의 다른 수행문들을 수행하지 않음
어려웠던 내용 😅
- 비트 연산자 부분
- 처음엔 용도를 몰라 어려웠다. 알고나니 내용 자체 뿐만 아니라 개념적으로도 좋았다.
- for문 사용법
- 파이썬보단 c언어 같은 부분이 있고, 활용 방법도 다양해 복잡한 느낌이 들었다.
궁금한 내용 / 부족한 내용 🔍
느낀점 🤔
- 생기초는 다 뗐는데, 생각해보니 아직 배열 쪽은 건드리지도 않았다. 얼른 배워서 알고리즘 풀어보며 적응해야지
자료 및 내용 출처: https://gitlab.com/easyspubjava/javacoursework/-/tree/master