IT’s Portfolio

[Java] Lecture - Day 3 λ³Έλ¬Έ

Development Study/Java

[Java] Lecture - Day 3

f1r3_r41n 2023. 12. 12. 01:00
728x90
λ°˜μ‘ν˜•

πŸ–₯ Basic Java - Day 3

Constant

  • final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ μ„ μ–Έ
  • μ„ μ–Έ μ‹œ μ΄ˆκΈ°κ°’ 지정 ν•„μˆ˜
  • μ‹€ν–‰ 쀑 κ°’ λ³€κ²½ λΆˆκ°€

var

  • Java 10λΆ€ν„° λ„μž…
  • κΈ°μ‘΄μ—λŠ” λ³€μˆ˜μ˜ νƒ€μž…μ„ λ°˜λ“œμ‹œ μ§€μ •ν•˜μ—¬ μ„ μ–Έν–ˆμŒ
  • var ν‚€μ›Œλ“œλ‘œ λ³€μˆ˜ μ„ μ–Έ μ‹œ νƒ€μž… μƒλž΅μ΄ κ°€λŠ₯ν•˜λ©° νƒ€μž…μ€ μ»΄νŒŒμΌλŸ¬κ°€ μΆ”λ‘ ν•˜μ—¬ 결정함
  • μ΄ˆκΈ°κ°’μ΄ 주어지지 μ•ŠμœΌλ©΄ 컴파일 였λ₯˜
  • 지역 λ³€μˆ˜ μ„ μ–Έμ—λ§Œ ν•œμ •λ¨

νƒ€μž… λ³€ν™˜

  • ν•œ νƒ€μž…μ˜ 값을 λ‹€λ₯Έ νƒ€μž…μ˜ κ°’μœΌλ‘œ λ³€ν™˜
  • μžλ™ νƒ€μž… λ³€ν™˜
    • μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ μ›λž˜μ˜ νƒ€μž…λ³΄λ‹€ 큰 νƒ€μž…μœΌλ‘œ μžλ™ λ³€ν™˜
    • μΉ˜ν™˜λ¬Έμ΄λ‚˜ μˆ˜μ‹ λ‚΄μ—μ„œ νƒ€μž…μ΄ μΌμΉ˜ν•˜μ§€ μ•Šμ„ λ•Œ λ°œμƒ
  • κ°•μ œ νƒ€μž… λ³€ν™˜
    • 개발자의 μ˜λ„μ  νƒ€μž… λ³€ν™˜
    • κ΄„ν˜Έ μ•ˆμ— κ°œλ°œμžκ°€ λͺ…μ‹œμ μœΌλ‘œ νƒ€μž… λ³€ν™˜ 지정
    • κ°•μ œ λ³€ν™˜μ€ κ°’ 손싀 μš°λ €κ°€ 따름

System.in

  • ν‚€λ³΄λ“œμ™€ μ—°κ²°λœ μžλ°”μ˜ ν‘œμ€€ μž…λ ₯ 슀트림
  • μž…λ ₯λ˜λŠ” ν‚€λ₯Ό λ°”μ΄νŠΈλ‘œ λ¦¬ν„΄ν•˜λŠ” μ €μˆ˜μ€€ 슀트림
  • 직접 μ‚¬μš© μ‹œ λ°”μ΄νŠΈλ₯Ό λ¬Έμžλ‚˜ 숫자둜 λ³€ν™˜ν•œν•˜λŠ” λ§Žμ€ 어렀움이 있음

Scanner

  • 읽은 λ°”μ΄νŠΈλ₯Ό λ‹€μ–‘ν•œ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ 리턴
    • java.util.Scanner
  • Scanner a = new Scanner(System.in);
    • ν‚€λ³΄λ“œμ— μ—°κ²°λœ System.inμ—κ²Œ ν‚€λ₯Ό 읽게 ν•˜κ³ , μ›ν•˜λŠ” νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ 리턴
  • ν‚€ μž…λ ₯
    • ScannerλŠ” μž…λ ₯λ˜λŠ” ν‚€ 값을 곡백으둜 κ΅¬λΆ„λ˜λŠ” 토큰 λ‹¨μœ„λ‘œ 읽음
    • 곡백 문자 : \t, \f, \r, ' ', \n
    • κ°œλ°œμžκ°€ μ›ν•˜λŠ” νƒ€μž… κ°’μœΌλ‘œ μ‰½κ²Œ 읽을 수 있음
  • μ£Όμš” λ©”μ†Œλ“œ
    • next() : λ‹€μŒ 토큰을 λ¬Έμžμ—΄λ‘œ 리턴
    • nextByte() : λ‹€μŒ 토큰을 byte νƒ€μž…μœΌλ‘œ 리턴
    • nextShort() : λ‹€μŒ 토큰을 short νƒ€μž…μœΌλ‘œ 리턴
    • nextInt() : λ‹€μŒ 토큰을 int νƒ€μž…μœΌλ‘œ 리턴
    • nextLong() : λ‹€μŒ 토큰을 long νƒ€μž…μœΌλ‘œ 리턴
    • nextFloat() : λ‹€μŒ 토큰을 float νƒ€μž…μœΌλ‘œ 리턴
    • nextDouble() : λ‹€μŒ 토큰을 double νƒ€μž…μœΌλ‘œ 리턴
    • nextBoolean() : λ‹€μŒ 토큰을 boolean νƒ€μž…μœΌλ‘œ 리턴
    • nextLine() : '\n'을 ν¬ν•¨ν•˜λŠ” ν•œ 라인을 읽고 '\n'을 버린 λ‚˜λ¨Έμ§€λ§Œ λ¬Έμžμ—΄λ‘œ 리턴
    • close() : 객체 μ‚¬μš© μ’…λ£Œ
    • hasNext() : ν˜„μž¬ μž…λ ₯된 토큰이 있으면 true, μ•„λ‹ˆλ©΄ μƒˆλ‘œμš΄ μž…λ ₯ λ•ŒκΉŒμ§€ λ¬΄ν•œμ • λŒ€κΈ°
      • μƒˆλ‘œμš΄ μž…λ ₯이 λ“€μ–΄μ˜¬ λ•Œ true 리턴
      • ^z μž…λ ₯되면 μž…λ ₯ λμ΄λ―€λ‘œ false 리턴

식과 μ—°μ‚°μž

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

    • +, -, *, /, %
  • 증감 μ—°μ‚°μž

    • ++, --
    • a++ : aλ₯Ό 1 증가 ν›„ 증가 μ „ κ°’ λ°˜ν™˜
    • a-- : aλ₯Ό 1 κ°μ†Œ ν›„ κ°μ†Œ μ „ κ°’ λ°˜ν™˜
    • ++a : aλ₯Ό 1 증가 ν›„ μ¦κ°€λœ κ°’ λ°˜ν™˜
    • --a : aλ₯Ό 1 κ°μ†Œ ν›„ κ°μ†Œλœ κ°’ λ°˜ν™˜
  • λŒ€μž… μ—°μ‚°

    • = μ‚¬μš©
  • 비ꡐ μ—°μ‚°μž : 두 개의 값을 λΉ„κ΅ν•˜μ—¬ true/false κ²°κ³Ό

    • <, >, <=, >=, ==, !=
  • 논리 μ—°μ‚°μž : 두 개의 논리 값에 논리 μ—°μ‚° ν›„ 논리 κ²°κ³Ό

    • !, ^(XOR), ||(OR), &&(AND)
  • 쑰건 μ—°μ‚°

    • 3개의 ν”Όμ—°μ‚°μžλ‘œ κ΅¬μ„±λœ μ‚Όν•­ μ—°μ‚°μž
    • x1?x2:x3
      • x1이 true이면, μ—°μ‚°μ‹μ˜ κ²°κ³ΌλŠ” x2, false이면 x3
    • int big = (x>y)?x:y;
      • x와 y μ€‘μ—μ„œ 큰 값을 big에 μ €μž₯
  • λΉ„νŠΈ μ—°μ‚°

    • byte x = 10; == 0b00001010

    • λΉ„νŠΈ 논리 μ—°μ‚° : λΉ„νŠΈλΌλ¦¬ AND, OR, XOR, NOT μ—°μ‚°

      • &(AND), |(OR), ^(XOR), ~(NOT)

          01101010
        & 11001101
          01001000
        • 106 & 205 = 72
          01101010
        | 11001101
          11101111
        • 106 | 205 = 239
          01101010
        ^ 11001101
          10100111
        • 106 ^ 205 = 239
        ~ 01101010
          10010101
        • ~106 = -107
        byte flag = 0b00001010;
        if (flag & 0b00001000 == 0)
          System.out.print("μ˜¨λ„ 0도 μ΄ν•˜");
        else
          System.out.print("μ˜¨λ„ 0도 이상");
        • 냉μž₯κ³ μ—λŠ” 8개의 μ„Όμ„œκ°€ 있고 이듀은 flag λ³€μˆ˜μ™€ μ—°κ²°λ˜μ–΄ μžˆλ‹€κ³  ν•  λ•Œ, 냉μž₯고의 μ˜¨λ„κ°€ 0도 μ΄μƒμœΌλ‘œ μ˜¬λΌκ°€λ©΄ λΉ„νŠΈ 3이 1이 되고, 0도 μ΄ν•˜μ΄λ©΄ λΉ„νŠΈ 3이 0을 μœ μ§€ν•¨. μ΄λ•Œ, ν˜„μž¬ 냉μž₯고의 μ˜¨λ„κ°€ 0도 이상인지 νŒλ‹¨ν•˜λŠ” μ½”λ“œ
    • λΉ„νŠΈ μ‹œν”„νŠΈ μ—°μ‚° : λΉ„νŠΈλ₯Ό 였λ₯Έμͺ½μ΄λ‚˜ μ™Όμͺ½μœΌλ‘œ 이동

      • a >> b : μ‚°μˆ μ  였λ₯Έμͺ½ μ‹œν”„νŠΈ(a의 각 λΉ„νŠΈλ₯Ό 였λ₯Έμͺ½μœΌλ‘œ b번 μ‹œν”„νŠΈ)
        • μ΅œμƒμœ„ λΉ„νŠΈμ˜ λΉˆμžλ¦¬λŠ” μ‹œν”„νŠΈ μ „μ˜ μ΅œμƒμœ„ λΉ„νŠΈλ‘œ λ‹€μ‹œ 채움
      • a >>> b : 논리적 였λ₯Έμͺ½ μ‹œν”„νŠΈ(a의 각 λΉ„νŠΈλ₯Ό 였λ₯Έμͺ½μœΌλ‘œ b번 μ‹œν”„νŠΈ)
        • μ΅œμƒμœ„ λΉ„νŠΈμ˜ λΉˆμžλ¦¬λŠ” 0으둜 채움
      • a << b : μ‚°μˆ μ  μ™Όμͺ½ μ‹œν”„νŠΈ(a의 각 λΉ„νŠΈλ₯Ό μ™Όμͺ½μœΌλ‘œ b번 μ‹œν”„νŠΈ)
        • μ΅œν•˜μœ„ λΉ„νŠΈμ˜ λΉˆμžλ¦¬λŠ” 0으둜 채움

쑰건문

  • λ‹¨μˆœ if λ¬Έ
    • if κ΄„ν˜Έ μ•ˆμ— 쑰건식(λ…Όλ¦¬ν˜• λ³€μˆ˜λ‚˜ 논리 μ—°μ‚°)
      • μ‹€ν–‰ λ¬Έμž₯이 단일 λ¬Έμž₯인 경우 {} μƒλž΅ κ°€λŠ₯
  • if-else λ¬Έ
    • 쑰건식 결과에 따라 각각 μ‹€ν–‰ λ¬Έμž₯이 닀름
  • 닀쀑 if λ¬Έ
    • 쑰건문이 λ„ˆλ¬΄ λ§Žμ€ 경우, switch λ¬Έ μ‚¬μš© ꢌμž₯

switch λ¬Έ

  • 식과 case 문의 κ°’κ³Ό 비ꡐ
    • case의 비ꡐ κ°’κ³Ό μΌμΉ˜ν•˜λ©΄ ν•΄λ‹Ή case의 μ‹€ν–‰ λ¬Έμž₯ μˆ˜ν–‰
      • switch λ¬Έ λ‚΄μ˜ break λ¬Έ
        • break 문을 λ§Œλ‚˜λ©΄ switch 문을 벗어남
        • case 문에 break 문이 μ—†λ‹€λ©΄, λ‹€μŒ case 문으둜 μ‹€ν–‰ 계속
    • case의 비ꡐ κ°’κ³Ό μΌμΉ˜ν•˜λŠ” 것이 μ—†μœΌλ©΄ default λ¬Έ μ‹€ν–‰
      • default 문은 μƒλž΅ κ°€λŠ₯
  • case 문의 κ°’
    • 문자, μ •μˆ˜, λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄κ³Ό μ—΄κ±°μžλ§Œ ν—ˆμš©
    • μ‹€μˆ˜ λ¦¬ν„°λŸ΄μ€ ν—ˆμš©λ˜μ§€ μ•ŠμŒ

κ°œμ„ λœ switch λ¬Έ

  • κ°œλ°œμžμ—κ²Œ μ½”λ“œμ˜ 가독성과 생산성 지원(μžλ°” 14λΆ€ν„°)
    • ν™”μ‚΄ν‘œ case λ ˆμ΄λΈ”(case μƒμˆ˜ -> ...)
      • μΌμΉ˜ν•˜λŠ” case λ ˆμ΄λΈ”μ˜ μ‹€ν–‰λ¬Έλ§Œ μˆ˜ν–‰(break λ¬Έ ν•„μš” μ—†μŒ)
    • switch 연산식
      • 값을 λ°˜ν™˜ν•  수 μžˆλŠ” μ—°μ‚°μ‹μœΌλ‘œ μ‚¬μš© κ°€λŠ₯
    • 닀쀑 case λ ˆμ΄λΈ”
      • 콀마둜 μ—°κ²°λœ λ‹€μˆ˜μ˜ μƒμˆ˜λ₯Ό case λ ˆμ΄λΈ”λ‘œ μ‚¬μš© κ°€λŠ₯
    • yield μ˜ˆμ•½μ–΄
      • 값을 λ°˜ν™˜ν•˜λ©΄μ„œ switch 연산식을 μ’…λ£Œ
      • case, default λ ˆμ΄λΈ”μ˜ 싀행문이 블둝일 κ²½μš°μ—λ§Œ μ‚¬μš©
728x90
λ°˜μ‘ν˜•

'Development Study > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Java] Lecture - Day 5  (0) 2023.12.12
[Java] Lecture - Day 4  (0) 2023.12.12
[Java] Lecture - Day 1~2  (0) 2023.12.12
[Java] μ•Œκ³ λ¦¬μ¦˜ - μ„Έ μ •μˆ˜μ˜ μ΅œλŒ“κ°’  (0) 2020.04.06
[Java] μ‹œμž‘κΈ€  (0) 2020.04.03
Comments