🌈 [Section1] 8. Java 기초

ν˜„μ£ΌΒ·2022λ…„ 8μ›” 30일
0

bootcamp

λͺ©λ‘ 보기
8/71

πŸ“• 였늘 배운 λ‚΄μš©!

  • Java의 νŠΉμ§•
  • λ³€μˆ˜ / μƒμˆ˜ / νƒ€μž…
  • λ¬Έμžμ—΄
  • μ—°μ‚°μž
  • μ½˜μ†”μ˜ μž…μΆœλ ₯

μ˜€λŠ˜μ€ λ‚΄κ°€ 이 λΆ€νŠΈμΊ ν”„ μ „ λ…ν•™μœΌλ‘œ 배운 λ‚΄μš©λ“€μ„ 거의 였늘과 내일 μ•ˆμ— λ‹€ 배우길래 γ… 
그만큼 양이 λ„ˆλ¬΄ λ§Žμ•„ μ›λž˜ μ•Œμ•˜λ˜ 뢀뢄은 μ œμ™Έν•˜κ³  μ–΄λ €μš΄ λΆ€λΆ„κ³Ό μƒˆλ‘œ μ•Œκ²Œλœ λ‚΄μš©λ§Œ μ •λ¦¬ν•˜λ €κ³  ν•œλ‹€ !


✏️ Java의 νŠΉμ§•

  1. μš΄μ˜μ²΄μ œμ— 독립적
    πŸ‘‰ JREκ°€ μ„€μΉ˜λ˜μ–΄ λͺ¨λ“  μš΄μ˜μ²΄μ œμ—μ„œ μ‚¬μš© κ°€λŠ₯
  2. 객체 지ν–₯ μ–Έμ–΄ (Object Oriented Programming, OOP)
    πŸ‘‰ μœ μ§€λ³΄μˆ˜κ°€ 쉽고 ν™•μž₯성이 λ†’μŒ
  3. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° 지원
    πŸ‘‰ μ½”λ“œκ°€ 간결해지고 λ‹€λ₯Έ κΈ°λŠ₯듀을 μ²˜λ¦¬ν•˜κΈ° μ‰¬μ›Œμ§
  4. μžλ™ λ©”λͺ¨λ¦¬ 관리 (Garbage Collection)
    πŸ‘‰ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•˜λŠ” 수고λ₯Ό λœμ–΄ 핡심 μ½”λ“œμ— 집쀑 κ°€λŠ₯

βœ” JVM(Java Virtual Machine)

  • μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œν‚€λŠ” 도ꡬ
  • ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” ν”„λ‘œκ·Έλž¨

βœ” JRE (Java Runtime Environment)

  • JVM(Java Virtual Machine) + ν‘œμ€€ 클래슀 라이브러리

βœ” JDK (Java Development Kit)

  • JRE + κ°œλ°œμ— ν•„μš”ν•œ 도ꡬ

βœ” 컴파일

  • μžλ°” μ–Έμ–΄λ₯Ό JVM(Java Virtual Machine)이 이해할 수 μžˆλŠ” μ½”λ“œ(λ°”μ΄νŠΈμ½”λ“œ, Bytecode)둜 λ³€ν™˜ν•˜λŠ” 것

✏️ μ½”λ“œ μš©μ–΄ μ„€λͺ…

public class Main {
  public static void main(String[] args) {

  }
}

μœ„μ˜ μ½”λ“œμ—μ„œ!

  • public class Main : μ ‘κ·Ό ν—ˆμš© λ²”μœ„κ°€ public인 Mainμ΄λΌλŠ” μ΄λ¦„μ˜ 클래슀λ₯Ό μ •μ˜ν•˜κ² λ‹€
  • public static void main(String[] args) : λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜λŠ” 문법
    (μ—¬κΈ°μ„œ λ©”μ„œλ“œλž€, μ–΄λ–€ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ 일련의 μ½”λ“œλ₯Ό 묢음으둜 묢은 것)
    (μ—¬κΈ°μ„œ μ–΄λ–€ κΈ°λŠ₯μ΄λž€? - 데이터λ₯Ό μž…λ ₯ λ°›μ•„ ν•΄λ‹Ή 데이터에 일련의 처리λ₯Ό κ°€ν•¨μœΌλ‘œμ¨ λ§Œλ“€μ–΄λ‚Έ 결과값을 λ°˜ν™˜ν•˜λŠ” 것)
  • void : λ°˜ν™˜ νƒ€μž… (λ©”μ„œλ“œκ°€ λ°˜ν™˜ν•  λ°˜ν™˜κ°’μ˜ μ’…λ₯˜ 및 μœ ν˜•)
  • main : λ©”μ„œλ“œμ΄λ¦„
  • String[] : λ§€κ°œλ³€μˆ˜ νƒ€μž… / args-λ§€κ°œλ³€μˆ˜ 이름 : μ™ΈλΆ€λ‘œλΆ€ν„° 전달받은 값을 λ§€κ°œν•΄μ£Όμ–΄ μ €μž₯ν•˜κ³  μžˆλŠ” λ³€μˆ˜
  • { } : λ©”μ„œλ“œ λ°”λ”” ( μ½”λ“œ μž‘μ„±ν•˜λŠ” λΆ€λΆ„ )
    ( return을 μ‚¬μš©ν•΄ μ–΄λ–€ 값을 λ°˜ν™˜ν•  수 있음 )

βœ” λ³€μˆ˜ μ„ μ–Έ

  • λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  κ·Έ 곡간에 λ‚΄κ°€ μ •ν•œ 이름을 λΆ™μ΄λŠ” 것

βœ” ν• λ‹Ή(λŒ€μž…)

  • λ‚΄κ°€ μ •ν•œ λ³€μˆ˜μ— μ–΄λ– ν•œ 값을 λ„£λŠ” 것

βœ” μ΄ˆκΈ°ν™”

  • λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  λ‚˜μ„œ 처음으둜 값을 ν• λ‹Ήν•˜λŠ” 것

βœ” μž¬ν• λ‹Ή

  • μ΄ˆκΈ°ν™”κ°€ 이루어진 후에 λ‹€μ‹œ λ‹€λ₯Έ 값을 ν• λ‹Ήν•˜λŠ” 것

✏️ λ³€μˆ˜μ™€ μƒμˆ˜

  • λ³€μˆ˜ : 값이 λ³€ν•  수 μžˆλŠ” 데이터λ₯Ό μž„μ‹œμ μœΌλ‘œ μ €μž₯ν•˜κΈ° μœ„ν•œ μˆ˜λ‹¨
    (μ €μž₯ν•˜κ³  μžˆλŠ” 값이 λ³€ν•  수 있음 (μž¬ν• λ‹Ή κ°€λŠ₯))
  • μƒμˆ˜ : λ³€ν•˜μ§€ 말아야 ν•  데이터λ₯Ό μž„μ‹œμ μœΌλ‘œ μ €μž₯ν•˜κΈ° μœ„ν•œ μˆ˜λ‹¨
    (μ €μž₯ν•˜κ³  μžˆλŠ” 값이 λΆˆλ³€ (μž¬ν• λ‹Ή λΆˆκ°€λŠ₯))

[ λ³€μˆ˜λͺ… κ·œμΉ™ ]

  1. 영문자, 숫자, _, $λ₯Ό μ‚¬μš©κ°€λŠ₯ (μ˜λ¬ΈμžλŠ” λŒ€μ†Œλ¬Έμžκ°€ κ΅¬λ³„λ˜μ–΄ 인식)
  2. 숫자둜 μ‹œμž‘ν•˜λŠ” λ³€μˆ˜λͺ…은 μ‚¬μš© λΆˆκ°€
  3. μžλ°”μ—μ„œ 이미 μ‚¬μš© 쀑인 μ˜ˆμ•½μ–΄(reserved word) λ³€μˆ˜λͺ…μœΌλ‘œ μ‚¬μš© λΆˆκ°€ ex. byte / class

읽기 쒋은 μ½”λ“œλŠ” 잘 지은 λ³€μˆ˜λͺ…μ—μ„œ μ‹œμž‘ν•œλ‹€ !!

✏️ νƒ€μž…

  • μ–΄λ–€ κ°’μ˜ μœ ν˜•κ³Ό μ’…λ₯˜ (값이 μ°¨μ§€ν•˜λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기/ μ €μž₯λ˜λŠ” 방식이 결정됨)
    (μ—¬κΈ°μ„œ μ €μž₯ν•˜λŠ” 방식은 κΈ°λ³Ένƒ€μž…, μ°Έμ‘°νƒ€μž…)
    • κΈ°λ³Ένƒ€μž…λ³€μˆ˜ - μ‹€μ œ 값이 λ³€μˆ˜μ— μ €μž₯ Ex. int / float
    • μ°Έμ‘°νƒ€μž…λ³€μˆ˜ - 데이터가 μ €μž₯된 μ£Όμ†Œκ°’μ΄ λ³€μˆ˜μ— μ €μž₯ Ex. string

βœ” convert char to int

char character;
int result;
result = character - '0' (λ˜λŠ” - 48); //μ΄λ ‡κ²Œ ν•˜λ©΄ λ¬Έμžν˜•μ΄μ—ˆλ˜ characterκ°€ μ •μˆ˜ν˜•μœΌλ‘œ 변경됨
return result;

[ μœ„ μ•„λž˜ λ‘˜ λ‹€ μœ λ‹ˆ μ½”λ“œ μ°Έκ³ ! ]

βœ” convert int to char

int num;
char result;
result = num + '0' (λ˜λŠ” + 48); //μ΄λ ‡κ²Œ ν•˜λ©΄ μ •μˆ˜ν˜•μ΄μ—ˆλ˜ num이 μ •μˆ˜ν˜•μœΌλ‘œ 변경됨
return result;

πŸ’¬ κ°•μ˜μ—μ„œμ˜ Q1 )

  1. μ•„λž˜μ˜ μ½”λ“œμ—μ„œ primitive의 좜λ ₯ κ²°κ³ΌλŠ” μ™œ 1인가?
  2. μ•„λž˜μ˜ μ½”λ“œμ—μ„œ reference의 좜λ ₯ κ²°κ³Ό java.lang.Object@626b2d4aκ°€ μ˜λ―Έν•˜λŠ” 것은 무엇이며, μ™œ μ΄λŸ¬ν•œ κ²°κ³Όκ°€ 좜λ ₯된 것인가?
public class Example {
	public static void main(String[] args) {
		int primitive = 1;
		Object reference = new Object();
		System.out.println(primitive);
		System.out.println(reference)
	}
}

πŸ’¬ λ‚˜μ˜ Answer1 )

  1. primitiveκ°€ κΈ°λ³Ένƒ€μž… λ³€μˆ˜λ‘œ μ‹€μ œ κ°’ 1이 μ €μž₯λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 좜λ ₯값도 1
  2. referenceκ°€ μ°Έμ‘°νƒ€μž… λ³€μˆ˜λ‘œ new Object()의 μ£Όμ†Œκ°’μ΄ λ³€μˆ˜μ— μ €μž₯λ˜μ—ˆκΈ° λ•Œλ¬Έμ— μ£Όμ†Œκ°’μ΄ 좜λ ₯

πŸ’¬ κ°•μ˜μ—μ„œμ˜ Q2 )

  1. byteν˜• κ°’ 125에 10을 λ”ν•˜λ©΄ μ–΄λ–€ 값이 λ κΉŒμš”?
  2. byteν˜• κ°’ -125μ—μ„œ 10을 λΉΌλ©΄ μ–΄λ–€ 값이 λ κΉŒμš”?

πŸ’¬ λ‚˜μ˜ Answer2 )

  1. -120
    (byte의 λ²”μœ„ -128~127이 계속 μˆœν™˜ν•˜κΈ° λ•Œλ¬Έμ— 125μ—μ„œ 1μ”© λ”ν•˜λ©΄ μ°¨λ‘€λ‘œ 126,127,-128,-127 .. μ΄λ ‡κ²Œ μ˜€λ²„ν”Œλ‘œμš° 되기 λ•Œλ¬Έμ—)
  2. 120
    (byte의 λ²”μœ„ -128~127이 계속 μˆœν™˜ν•˜κΈ° λ•Œλ¬Έμ— -125μ—μ„œ 1μ”© λΉΌλ©΄ μ°¨λ‘€λ‘œ -126,-127,-128,127,126 .. μ΄λ ‡κ²Œ μ–Έλ”ν”Œλ‘œμš° 되기 λ•Œλ¬Έμ—)

✏️ String 클래슀의 λ©”μ„œλ“œ

  • String ν΄λž˜μŠ€λŠ” λ¬Έμžμ—΄μ„ μ‘°μž‘ν•  수 μžˆλŠ” μœ μš©ν•œ λ©”μ„œλ“œλ“€μ„ 가지고 있음
  1. charAt() λ©”μ„œλ“œ - μ§€μ •ν•œ index 번째의 문자λ₯Ό λ°˜ν™˜ (0λ²ˆμ§ΈλΆ€ν„° μ‹œμž‘)

    Ex.

    String str = "Hello Java";
    System.out.println(str.charAt(1)); // e 좜λ ₯ (0번째 λΆ€ν„° μ‹œμž‘ν•΄μ„œ 1λ²ˆμ§Έκ°€ eλ‹ˆκΉŒ)
  1. indexOf() λ©”μ„œλ“œ - μ§€μ •ν•œ λ¬Έμžκ°€ λͺ‡λ²ˆμ§Έμ— μžˆλŠ”μ§€ λ°˜ν™˜ (아무데도 μ—†μœΌλ©΄ -1 λ°˜ν™˜)
    (2개 이상 있으면 κ°€μž₯ λ¨Όμ € μ˜€λŠ” 문자의 index λ₯Ό λ°˜ν™˜)

    Ex.

    String str = "Hello Java";
    System.out.println(str.indexOf('a'));  // 7 좜λ ₯ (κ°€μž₯ λ¨Όμ € μ˜€λŠ” aκ°€ 7λ²ˆμ§Έμ— μžˆμœΌλ‹ˆκΉŒ)
  1. compareTo() λ©”μ„œλ“œ - λ¬Έμžμ—΄ 비ꡐ할 λ•Œ (ν•΄λ‹Ή λ¬Έμžμ—΄μ΄ μ „λ‹¬λœ λ¬Έμžμ—΄λ³΄λ‹€ μž‘μœΌλ©΄ 음수, 크면 μ–‘μˆ˜, κ°™μœΌλ©΄ 0 λ°˜ν™˜)

    Ex.

    int a = 3;
    int b = 4;
    int c = 3;
    int d = 3;
    int e = 4;
    int f = 3;
    System.out.println(Integer.compare(a,b)); // -1
    //λ‘˜μ˜ μ°¨λŠ” 1이고, μ „λ‹¬λœ λ¬Έμžμ—΄(4)보닀 ν•΄λ‹Ή λ¬Έμžμ—΄(3)의 값이 μž‘κΈ° λ•Œλ¬Έμ— 음수
    System.out.println(Integer.compare(c,d)); // 0 (λ‘˜μ˜ 값이 κ°™κΈ° λ•Œλ¬Έμ—)
    System.out.println(Integer.compare(e,f)); // 1
    //λ‘˜μ˜ μ°¨λŠ” 1이고, μ „λ‹¬λœ λ¬Έμžμ—΄(3)이 ν•΄λ‹Ή λ¬Έμžμ—΄(4) 보닀 더 μž‘κΈ° λ•Œλ¬Έμ— μ–‘μˆ˜
  1. concat() λ©”μ„œλ“œ - λ¬Έμžμ—΄κ³Ό λ¬Έμžμ—΄ κ²°ν•© (concatenate 의 μ•½μž)

    Ex.

    String str = "Hello JAVA";
    String lang = "Java";
    System.out.println(str.concat(lang)); // Hello Java 좜λ ₯
  1. trim() λ©”μ„œλ“œ - λ¬Έμžμ—΄μ˜ μ•ž λ’€ 곡백 μ œκ±°ν•΄μ€Œ

    Ex.

    String str = "   Hello Java World   ";
    String trimStr = str.trim();
    System.out.println(trimStr); // Hello Java World 좜λ ₯
  1. toUpperCase() λ©”μ„œλ“œ - λ¬Έμžμ—΄μ„ λŒ€λ¬Έμžλ‘œ λ°”κΏ”μ€Œ

    Ex.

    String str = "hello java";
    String srtUp = str.toUpperCase();
    System.out.println(strUp); // HELLO JAVA 좜λ ₯
  1. toLowerCase() λ©”μ„œλ“œ - λ¬Έμžμ—΄μ„ μ†Œλ¬Έμžλ‘œ λ°”κΏ”μ€Œ

    Ex.

    String str = "HELLO JAVA";
    String srtLo = str.toLowerCase();
    System.out.println(strLo); // hello java 좜λ ₯

더 μžˆμœΌλ‚˜ μ—¬κΈ°μ—μ„œ 일단 끝..!!
λ„ˆλ¬΄ λ§Žλ‹€ ,,,,γ… 

✏️ μ—°μ‚°μž

  1. μ‚°μˆ  μ—°μ‚°μž - 사칙연산 μ—°μ‚°μž(+, -, *, /), λ‚˜λ¨Έμ§€ μ—°μ‚°μž(%)
  2. 비ꡐ μ—°μ‚°μž - λŒ€μ†Œ 비ꡐ μ—°μ‚°μž(>, <, <=, >=), λ“±κ°€ 비ꡐ μ—°μ‚°μž(==, !=)
  3. 논리 μ—°μ‚°μž - AND μ—°μ‚°μž &&, OR μ—°μ‚°μž ||, NOT μ—°μ‚°μž !
  4. λŒ€μž… μ—°μ‚°μž - =, +=, -=, /=, %=

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

  • μ‚°μˆ  > 비ꡐ > 논리 > λŒ€μž…

βœ” μ‚Όν•­μ—°μ‚°μž

쑰건문 ? μ°ΈμΌλ•Œ κ²°κ³Όκ°’ : 거짓일 λ•Œ κ²°κ³Όκ°’;

✏️ μ½˜μ†” 좜λ ₯ λ©”μ„œλ“œ

  1. System.out.print() - λ‹¨μˆœνžˆ 좜λ ₯ / 쀄 λ°”κΏˆ X
  2. System.out.println() - 좜λ ₯ ν›„ 쀄 λ°”κΎΈκΈ°
  3. System.out.printf() - μ§€μ‹œμžλ₯Ό μ΄μš©ν•΄ λ³€μˆ˜μ˜ 값을 μ—¬λŸ¬ ν˜•μ‹μœΌλ‘œ 좜λ ₯ Ex. %n - κ°œν–‰λ¬Έμž / %d - 10μ§„μˆ˜ λ“±

✏️ μ½˜μ†” μž…λ ₯ (Scanner)

import java.util.Scanner;                 // Scanner 클래슀λ₯Ό κ°€μ Έμ˜΄

Scanner scanner = new Scanner(System.in); // Scanner 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성
String inputValue = scanner.nextLine();   // μž…λ ₯ν•œ λ‚΄μš©μ΄ inputValue에 μ €μž₯

System.out.println(inputValue);           // μž…λ ₯ν•œ λ¬Έμžμ—΄μ΄ 좜λ ₯

μœ„μ˜ μ½”λ“œμ—μ„œ!

  • import java.util.Scanner; : java.utilμ΄λΌλŠ” μœ„μΉ˜μ— μ €μž₯λ˜μ–΄μžˆλŠ” Scannerλ₯Ό 이 μ†ŒμŠ€ μ½”λ“œλ‘œ λΆˆλŸ¬μ™€λΌ
  • Scanner scanner = new Scanner(System.in); : newμ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μŠ€μΊλ„ˆ 클래슀둜 객체λ₯Ό 생성 ν›„ μΈμŠ€ν„΄μŠ€λ₯Ό λ³€μˆ˜ scanner에 ν• λ‹Ή
    (κ·Έλ ‡κ²Œ μƒμ„±λ˜ 객체λ₯Ό μΈμŠ€ν„΄μŠ€λΌκ³  함 -> 클래슀λ₯Ό μΈμŠ€ν„΄μŠ€ν™” ν•œλ‹€)
    (μ—¬κΈ°μ„œ λ©”μ„œλ“œλž€, μ–΄λ–€ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ 일련의 μ½”λ“œλ₯Ό 묢음으둜 묢은 것)
    (μ—¬κΈ°μ„œ μ–΄λ–€ κΈ°λŠ₯μ΄λž€? - 데이터λ₯Ό μž…λ ₯ λ°›μ•„ ν•΄λ‹Ή 데이터에 일련의 처리λ₯Ό κ°€ν•¨μœΌλ‘œμ¨ λ§Œλ“€μ–΄λ‚Έ 결과값을 λ°˜ν™˜ν•˜λŠ” 것)
  • String inputValue = scanner.nextLine(); : scanner.nextLine()에 μž…λ ₯받은 λ‚΄μš©μ„ λ³€μˆ˜ inputValue에 ν• λ‹Ή

🌈 λŠλ‚€μ 


μ•„μ•….. 사싀 λΉ„λͺ…이 λ‚˜μ˜¨λ‹€
곡뢀할 양도 λ§Žμ€λ°λ‹€ κ·Έκ±Έ λΈ”λ‘œκ·Έμ— μ“°μžλ‹ˆ 그것도 일이닀.. γ…Žγ…Ž
호기둭게 μ‹œμž‘ν•˜μ—¬ μ•„μ§κΉŒμ§€λ„ κΎΈμ€€νžˆ 잘 ν•˜κ³  μžˆμ§€λ§Œ 양이 λ§Žμ„ λ•Œλ§ˆλ‹€ νž˜λ“  건 사싀 γ… 
κ·Έλž˜λ„ 이 뢀뢄은 λΆ€νŠΈμΊ ν”„ μ‹œμž‘ μ „ 혼자 κ³΅λΆ€ν–ˆλ˜ 뢀뢄이기에 κ·Έλž˜λ„ 잘 λ”°λΌμ˜¬ 수 μžˆμ—ˆλŠ”λ° μ•žμœΌλ‘œμ˜ 진도λ₯Ό 잘 μ΄ν•΄ν•˜κ³  μŠ΅λ“ν•  수 μžˆμ„μ§€.. 정말 μ—΄μ‹¬νžˆ ν•΄μ•Όκ² λ‹€ 😭
μ˜€λŠ˜μ€ νŽ˜μ–΄μ™€ κ΄€λ ¨ λ¬Έμ œλ“€μ„ ν’€μ—ˆλŠ”λ° 직접 λ³΄λ‹ˆ ν—·κ°ˆλ¦¬λŠ” 것도 μžˆμ—ˆμ§€λ§Œ κ·Έλž˜λ„ 잘 ν•΄λƒˆλ‹€!
내일도 잘 ν•΄λ³΄μž

0개의 λŒ“κΈ€