λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Java/μžλ°”μ˜ 정석

3μ£Όμ°¨: μ—°μ‚°μž

by oliviarla 2022. 9. 18.
 
μ—°μ‚°μž: 연산을 μˆ˜ν–‰ν•˜λŠ” 기호(+, *, / λ“±), 항상 연산을 μˆ˜ν–‰ν•˜κ³  λ‚œ ν›„ 결과값을 λ°˜ν™˜
ν”Όμ—°μ‚°μž: μ—°μ‚°μžμ˜ μž‘μ—… λŒ€μƒ(λ³€μˆ˜, μƒμˆ˜, λ¦¬ν„°λŸ΄, μˆ˜μ‹ λ“±)

μ‚°μˆ  μ—°μ‚°μž

- 사칙 μ—°μ‚°

+, -, *, / 쑴재

 

- 두 ν”Όμ—°μ‚°μžμ˜ νƒ€μž…

  • ν”Όμ—°μ‚°μžκ°€ μ •μˆ˜ν˜•μ΄λ©΄ λ‚˜λˆ„λŠ” 수둜 0 μ‚¬μš© λΆˆκ°€ (ArithmeticException λ°œμƒ)
  • λ‚˜λˆ„κΈ° μ—°μ‚°μžμ˜ 두 ν”Όμ—°μ‚°μžκ°€ λͺ¨λ‘ intνƒ€μž…μ΄λ©΄, μ—°μ‚° κ²°κ³Όμ—μ„œ μ†Œμˆ˜μ μ΄ λ‚˜μ˜¬ 경우 버림 처리
  • 두 ν”Όμ—°μ‚°μž 쀑 μ–΄λŠ ν•œ μͺ½μ„ μ‹€μˆ˜ν˜•μœΌλ‘œ ν˜•λ³€ν™˜ν•˜λ©΄ μ†Œμˆ˜μ  μ—°μ‚° κ°€λŠ₯

- μ˜€λ²„ν”Œλ‘œμš°μ— μ‘°μ‹¬ν•˜κΈ°

  • 큰 μžλ£Œν˜•μ˜ κ°’(int)을 μž‘μ€ μžλ£Œν˜•μ˜ λ³€μˆ˜(byte)에 μ €μž₯ν•˜λ €λ©΄ ν˜•λ³€ν™˜ μ—°μ‚°μž ν•„μš”
  • intνƒ€μž…κ³Ό int νƒ€μž…μ˜ μ—°μ‚° κ²°κ³ΌλŠ” int νƒ€μž… -> μ˜€λ²„ν”Œλ‘œμš° λ°œμƒ κ°€λŠ₯ν•˜λ―€λ‘œ λ‹€μŒκ³Ό 같이 μ˜ˆλ°©ν•΄μ€˜μ•Ό 함
long result = (long)100000*200000;

- Char의 μ—°μ‚°

  • charλ₯Ό int둜 ν˜•λ³€ν™˜ν•˜λ €λ©΄ 문자 '0'을 λΉΌμ€€λ‹€ ex) '2' - '0' -> 2
  • λŒ€λ¬Έμžμ™€ μ†Œλ¬Έμž κ°„ λ³€ν™˜ μ‹œ 32λ₯Ό λ”ν•˜κ±°λ‚˜ λΊ€λ‹€. ex) (char)'a' - 32
  • char에 intλ₯Ό λ”ν•˜λ©΄ intν˜•μ΄ λœλ‹€. 단, λ¦¬ν„°λŸ΄ κ°„μ˜ μ—°μ‚° μˆ˜ν–‰ μ‹œ char + int여도 charν˜•μ΄ λœλ‹€.
μƒμˆ˜ λ˜λŠ” λ¦¬ν„°λŸ΄ κ°„μ˜ 연산은 μ‹€ν–‰κ³Όμ •λ™μ•ˆ λ³€ν•˜λŠ” 값이 μ•„λ‹ˆλ―€λ‘œ 컴파일 μ‹œ μ»΄νŒŒμΌλŸ¬κ°€ 계산해 μ €μž₯

- λ‚˜λ¨Έμ§€ μ—°μ‚°

% 기호λ₯Ό μ‚¬μš©

주둜 홀짝 ꡬ뢄, 배수 검사 등에 μ‚¬μš©

μŒμˆ˜μ— λŒ€ν•œ λ‚˜λ¨Έμ§€ μ—°μ‚°
ν”Όμ—°μ‚°μžμ˜ λΆ€ν˜ΈλŠ” λͺ¨λ‘ λ¬΄μ‹œν•˜κ³  μ ˆλŒ“κ°’μœΌλ‘œ κ³„μ‚°ν•œ ν›„, λ‚˜λ¨Έμ§€ μ—°μ‚°ν•œ 결과에 μ™Όμͺ½ ν”Όμ—°μ‚°μžμ˜ λΆ€ν˜Έλ₯Ό λΆ™μ—¬ λ°˜ν™˜λœλ‹€.
ex) 10 % -8 ν•˜λ©΄ 2 λ°˜ν™˜, -10 % 8 ν•˜λ©΄ -2 λ°˜ν™˜

λΉ„νŠΈ μ—°μ‚°μž

ν”Όμ—°μ‚°μžλ₯Ό λΉ„νŠΈ λ‹¨μœ„λ‘œ 논리 μ—°μ‚°

 

| (OR μ—°μ‚°μž) : ν•œ μͺ½ 값이 1이면 1 λ°˜ν™˜, κ·Έμ™ΈλŠ” 0 λ°˜ν™˜, 주둜 νŠΉμ • λΉ„νŠΈμ˜ 값을 λ³€κ²½ν•  λ•Œ μ‚¬μš©

 

& (AND μ—°μ‚°μž) : μ–‘ μͺ½ λͺ¨λ‘ 1이어야 1 λ°˜ν™˜, κ·Έμ™ΈλŠ” 0 λ°˜ν™˜, 주둜 νŠΉμ • λΉ„νŠΈμ˜ 값을 뽑아낼 λ•Œ μ‚¬μš©

 

^ (XOR μ—°μ‚°μž) : 값이 λ‹€λ₯Ό λ•Œ 1 λ°˜ν™˜, κ·Έμ™ΈλŠ” 0 λ°˜ν™˜

 

~ (λΉ„νŠΈ μ „ν™˜ μ—°μ‚°μž) : 0κ³Ό 1을 λ³€ν™˜, 1의 보수 μ—°μ‚°μž

 

>>, << (μ‰¬ν”„νŠΈ μ—°μ‚°μž)

<< μ—°μ‚°μž: μ™Όμͺ½μœΌλ‘œ μ΄μ§„μˆ˜ 자리λ₯Ό 이동, 자리 μ΄λ™μœΌλ‘œ 인해 μ €μž₯λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 값듀은 버렀지고 0으둜 μ±„μ›Œμ§

>> μ—°μ‚°μž: λΆ€ν˜ΈμžˆλŠ” μ •μˆ˜λŠ” λΆ€ν˜Έλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄ μ™Όμͺ½ ν”Όμ—°μ‚°μžκ°€ 음수인 경우 빈자리λ₯Ό 1둜 μ±„μš°κ³ , μ–‘μˆ˜μΈ 경우 0으둜 채움

x << n은 x * 2^n κ³Ό κ°™λ‹€
x >> n은 x / 2^n κ³Ό κ°™λ‹€

관계 μ—°μ‚°μž

- λŒ€μ†ŒλΉ„κ΅ μ—°μ‚°μž

<, >, <=, >= κ°€ ν•΄λ‹Ή

booleanκ³Ό μ°Έμ‘°ν˜•μ„ μ œμ™Έν•œ λͺ¨λ“  μžλ£Œν˜•μ—μ„œ μ‚¬μš© κ°€λŠ₯

 

- λ“±κ°€ 비ꡐ μ—°μ‚°μž

==, != κ°€ ν•΄λ‹Ή

λͺ¨λ“  μžλ£Œν˜•μ— μ‚¬μš© κ°€λŠ₯

 

- λ¬Έμžμ—΄ 비ꡐ λ©”μ†Œλ“œ

λ¬Έμžμ—΄μ„ 비ꡐ할 λ•Œμ—λŠ” equals() λ©”μ†Œλ“œ μ‚¬μš©ν•  것

+) λŒ€μ†Œλ¬Έμž ꡬ뢄 없이 비ꡐ할 땐 equalsIgnoreCase() λ©”μ†Œλ“œ μ‚¬μš©

논리 μ—°μ‚°μž

- 논리 μ—°μ‚°μž

λ‘˜ μ΄μƒμ˜ 쑰건을 AND, OR둜 μ—°κ²°

|| (ORκ²°ν•©) : ν”Όμ—°μ‚°μž 쀑 μ–΄λŠ ν•œμͺ½λ§Œ true이면 true λ°˜ν™˜

&& (ANDκ²°ν•©) : ν”Όμ—°μ‚°μž μ–‘μͺ½ λͺ¨λ‘ trueμ—¬μ•Ό true λ°˜ν™˜

 

- 논리 λΆ€μ • μ—°μ‚°μž

! 기호λ₯Ό μ•žμ— λΆ™μ—¬ true와 falseλ₯Ό λ°˜λŒ€λ‘œ λ°”κΎΌλ‹€.

instanceof

μ°Έμ‘° λ³€μˆ˜κ°€ μ°Έμ‘°ν•˜κ³  μžˆλŠ” μΈμŠ€ν„΄μŠ€μ˜ μ‹€μ œ νƒ€μž…μ„ μ•Œμ•„λ³΄κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ—°μ‚°μž

κ²°κ³Όκ°€ true라면 κ²€μ‚¬ν•œ νƒ€μž…μœΌλ‘œμ˜ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” 뜻

주둜 쑰건문에 μ‚¬μš©λ¨

if (car instanceof SuperCar) {
		...
}

assignment(=) operator

- λŒ€μž… μ—°μ‚°μž

λ³€μˆ˜ 같은 μ €μž₯ 곡간에 κ°’ λ˜λŠ” μˆ˜μ‹μ˜ μ—°μ‚°κ²°κ³Όλ₯Ό μ €μž₯ν•˜λŠ” 데 μ‚¬μš©

μ—°μ‚° 진행 λ°©ν–₯이 였λ₯Έμͺ½μ—μ„œ μ™Όμͺ½ ex) x=y=3일 λ•Œ y=3을 λ¨Όμ € μˆ˜ν–‰ν•œ ν›„ x=y μˆ˜ν–‰

 

- 볡합 λŒ€μž… μ—°μ‚°μž : +=, *= λ“±κ³Ό 같이 λ‹€λ₯Έ μ—°μ‚°μž λŒ€μž… μ—°μ‚°μžκ°€ κ²°ν•©λœ ν˜•νƒœ

ν™”μ‚΄ν‘œ(->) μ—°μ‚°μž

λžŒλ‹€μ‹μ—μ„œ μ‚¬μš©λ˜λŠ” μ—°μ‚°μž

λžŒλ‹€μ‹μ΄λž€?
- λ©”μ†Œλ“œλ₯Ό ν•˜λ‚˜μ˜ 식(expression)으둜 ν‘œν˜„ν•œ 것
- λ©”μ†Œλ“œμ˜ 이름과 λ°˜ν™˜κ°’μ΄ μ—†λŠ” 읡λͺ…ν•¨μˆ˜μ΄λ‹€.

(λ§€κ°œλ³€μˆ˜ μ„ μ–Έ) -> (expression)

3ν•­ μ—°μ‚°μž

(쑰건식) ? λ°˜ν™˜κ°’1 :λ°˜ν™˜κ°’2

λ¬ΌμŒν‘œ '?' μ•žμ˜ 쑰건식에 따라 결괏값이 μ°Έ(true)이면 λ°˜ν™˜κ°’1을 λ°˜ν™˜ν•˜κ³ , 결괏값이 거짓(false)이면 λ°˜ν™˜κ°’2λ₯Ό λ°˜ν™˜

μ—°μ‚°μž μš°μ„  μˆœμœ„

(optional) Java 13. switch μ—°μ‚°μž

  • ν™”μ‚΄ν‘œ(->) μ—°μ‚°μž μ‚¬μš© κ°€λŠ₯
  • μ—¬λŸ¬ λͺ…λ Ήλ¬Έμ΄λ‚˜ μ½”λ“œλ‘œ μž‘μ„±ν•˜λ €λ©΄ μ€‘κ΄„ν˜Έ λΈ”λ‘μœΌλ‘œ λ¬Άμ–΄μ€€ ν›„ yield 문으둜 값을 λ°˜ν™˜ν•΄μ£Όμ–΄μ•Ό 함
int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> {
        System.out.println(6);
        yield 6;
    }
    case TUESDAY -> {
        System.out.println(7);
        yield 7;
    }
    case THURSDAY, SATURDAY -> {
        System.out.println(8);
        yield 8;
    }
    case WEDNESDAY -> {
        System.out.println(9);
        yield 9;
    }
    default -> {
        throw new IllegalStateException("Invalid day: " + day);
    }
};

 

λŒ“κΈ€