이전에 java 학습 경험이 있기에 넘길까 하다가 '내가 생각하는 기초'와 '강사가 생각하는 기초'가 다를 수 있다고 생각하기에 2배속으로 빠르게 들었다. 역시나 새롭게 배울 부분이 있었기에 잘 들었다는 생각이 든다.
- 학습 내용을 전부 다 적지 않고 새롭게 알게됐거나 기억해둘 필요가 있는 사항을 정리했다
1. 부호비트(MSB, Most Significant Bit)
- MSB는 영어 뜻 그대로 최상위 비트를 말한다
- 부호를 결정지으며 가장 왼쪽에 위치한다
- 숫자를 양수, 음수로 변경할 때는 부호만 바꾸는 것이 아니라 '2의 보수' 라는 개념을 함께 고려해야 한다
public class BinaryTest {
public static void main(String[] args) {
int num = 10;
int bNum = 0B1010; // 2진수
int oNum = 012; // 8진수
int xNum = 0XA; // 16진수
}
}
2. 변수와 메모리
변수를 선언하면 해당되는 자료형의 크기 만큼 메모리가 할당
변수는 할당된 메모리를 가리키는 이름
int level = 10; // 4바이트 정수형 메모리가 level 이라는 이름으로 할당 됨
3. String은 기본 자료형(primitive data type)이 아니다
- 문자를 할당할 때 ''(싱글 쿼테이션)은 문자형을 나타내며 ""(더블 쿼테이션)은 문자열을 나타낸다
4. 지역변수 자료형 없이 사용하기
- java 10 부터 지원
- 지역변수에서만 사용 가능
- 한번 선언하여 추론 된 변수는 다른 타입의 값을 대입 할 수 없음
public class LocalVariableType {
public static void main(String[] args) {
var i = 10;
var j = 10.0;
var str = "hello";
System.out.println(i);
System.out.println(j);
System.out.println(str);
str = "test";
//str = 3;
}
}
5. 상수(Constant)는 대문자 표기, final 붙임
final int MAX_NUM = 100;
final int MIN_NUM;
6. 형 변환
- 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어 짐
- 덜 정밀한 자료형에서 더 정밀한 자료형으로읜 형 변환은 자동으로 이루어 짐
7. 단락 회로 평가 (short circuit evaluation)
- 논리 연산에서 모든 항이 실행되지 않는 경우를 말한다
논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
-- 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
-- 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음
public class ShortCircuit {
public static void main(String[] args) {
int num1 = 10;
int i = 2;
boolean value = ((num1 = num1 + 10 ) < 10) && ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
value = ((num1 = num1 + 10 ) < 10) || ( ( i = i + 2 ) < 10);
System.out.println(value);
System.out.println(num1);
System.out.println(i);
}
}
8. 비트연산자
- java에서는 많이 사용하진 않음(이런게 있다 정도로 기억)
9. Switch Expression
- java 14부터 지원
- 식으로 표현 하여 반환 값을 받을 수 있음. 리턴 값이 없는 경우는 오류가 생김
- yield 키워드 사용
public class SwitchCaseUpTest {
public static void main(String[] args) {
int month = 3;
int day = switch (month) {
case 1, 3, 5, 7, 8, 10,12 -> {
System.out.println("한 달은 31일입니다.");
yield 31;
}
case 4,6,9,11 -> {
System.out.println("한 달은 30일입니다.");
yield 30;
}
case 2 ->{
System.out.println("한 달은 28일입니다.");
yield 28;
}
default->{
System.out.println("존재하지 않는 달 입니다.");
yield 0;
}
};
System.out.println(month + "월은 " + day + "일입니다.");
}
}
10. do-while
- while문은 조건을 먼저 체크하고 반복 수행이 된다면, do-while은 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크
- while문의 조건이 맞지 않으면(=true 가 아니면) 더 이상 수행하지 않음
11. for문 생략
- 초기화식 생략 : 이미 이전에 값이 초기화 되어 for 내부에서 값을 지정할 필요가 없는 경우
- 조건식 생략 : 반복 수행에 대한 조건이 수행문 내부에 있는 경우
- 증감식 생략 : 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과값에 결정되는 경우
- 무한 반복