✅ 카멜 표기법: 단어가 여러개 붙을 때 앞단어 제외 첫자 대문자 표기, java/c# 변수, 메서드
ex) numberOfStudent
✅ 파스칼 표기법: 모든 단어 앞단어 대문자, 클래스, 인터페이스에서 사용
ex) NumberOfStudent
✅ 스네이크/팟홀 표기법: 모든 단어 소문자, _ 로 단어구분, c++
ex) number_of_student
✅ 헝가리안: 접두사에 자료형
ex) intNumberOfStudent
✔️ Project: 대문자 사용 권장
✔️ package: 소문자 시작
✔️ 상수: 모든 단어 대문자, 스네이크 표기법 ex) MAX_PRIORITY
자료형 없이 지역변수(java10 이상): var
✔️ 추론 가능한 변수에 대한 자료형 선언x, 한변 선언되면 다른 타입으로 대입x
var i = 10; | var j = 10.0; | var str = "hello";
자료 표현
✅ 2진수: 0b + 2진수 | int bNum = 0B1010;
✅ 8진수: 0 + 8진수 | int oNum = 012;
✅ 16진수: 0x + 16진수 | int xNum = 0XA;
자료형
✔️ 1바이트 = 8비트
✔️ 첫번째 비트는 부호비트: 0 양수 / 1 음수
✔️ 리터럴은 상수풀에 있음. 프로그램에서 사용하는 모든 정수형 숫자(literal)은 int(4byte)로 / 실수형 숫자는 double(8byte)로 저장됨
long lnum = 12345678900; //오류
long lnumber = 12345678900L;
double dnum = 3.14;
float fnum = 3.14F;
cf. 모든 숫자는 int로 잡히므로 int의 범위가 넘어가는 숫자는 잡을수 없음, 숫자뒤에 L을 선언하여 8바이트로 잡도록 함. 실수는 8바이트로 잡히므로 4바이트인 float을 사용하려면 숫자 뒤에 F
부동소수점: 가수 x 밑수지수 ( 1.m x 2n )
✔️ 부동소수점은 지수부가 0을 표현할 수 없기 때문에 약간의 오차 발생
문자형: char, 유니코드(\u)
✔️ encoding: 문자→숫자 / decoding: 숫자→문자
cf. 'A': 2byte 문자 - "A" : 문자열(string, A\0)
상수(constant) 선언: final 예약어
final int MAX_NUM = 100;
형변환
✅ 묵시적 형변환(자동): 작은 바이트/덜 정밀한(정수) → 큰 바이트/더 정밀한(실수)
✅ 명시적 형변환(강제): double dNum = 3.14; int iNum = (int)dNum;
✔️ 증감/대입만 ←, 나머지 →
❶ 괄호 (), []
❷ 중감(++,--), 부호(+,-), 비트(~), 논리(!)
❸ 산술(*,/,%) ▶️ 산술(+,-)
❹ 쉬프트(>>,<<,>>>)
❺ 비교(>,<,<=,>=,instanceof) ▶️ ==, !=
❻ 논리 & ▶️ 논리 ^ ▶️ 논리 | ▶️ 논리 && ▶️ 논리 ||
❼ 조건(조건식? A:B)
❽ 대입(=,+=,-=,/=,%=,&=,^=,|=,<<=,>>=,>>>=,~=)
✅ 시프트 연산자:
10<<2: 0001010 -> 00101000 (10X22)
✔️ >>>: >>와 동일한 연산인데 채워지는 비트가 부호와 상관없이 0
case 2-> yield 28 ❌
case 2-> { yield 28 } ⭕
case 2-> 28 ⭕
// :을 블록으로 인식하기 때문에 가능
case 2: yield 28 ⭕
// 블록 내에 다른 식이 있다면 yield를 써야함
default->{ int k=0; 0;} ❌
default->{ int k=0; yield 0;} ⭕
int day = switch (month) {
case 1, 3, 5, 7, 8, 10,12 -> 31;
case 4,6,9,11 -> 30;
case 2 -> 28;
default->{ yield 0;}
};
System.out.println(month + "월은 " + day + "일입니다.");