[JAVA] 01. 변수명 표기법/자료형/연산자 우선순위/switch-case문

Hyeongmin Jung·2023년 4월 11일
0

java

목록 보기
27/28

🐥 변수명 표기법

카멜 표기법: 단어가 여러개 붙을 때 앞단어 제외 첫자 대문자 표기, 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


🐤 switch-case

  • switch-case문: 문자열 지원, 반환값이 없다면 break 필수
    ✔️ java14 이상 break 사용X
    ✔️ , 로 조건 구분
    ✔️ return값을 받을 수 있음, return값이 없는 경우 오류(반환값이 있다면 default 필수) , yield

    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 + "일입니다.");

  • 무한 반복: while(true) / for( ; ; )

0개의 댓글