Study/Java

[Java] Java 기초 (2) νƒ€μž…

hong- 2022. 5. 4. 10:18

μ•ˆλ…•ν•˜μ„Έμš” λ°±μ—”λ“œκ°œλ°œμž ν™λ―Όμ •μž…λ‹ˆλ‹€ πŸ™ŒπŸ»πŸ«§

μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œ Java κΈ°μ΄ˆμ— λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λŠ”λ°μš”, μΆ”κ°€μ μœΌλ‘œ μžλ°”μ˜ νƒ€μž…μ— λŒ€ν•΄μ„€λͺ…ν•˜λ €κ³  ν•©λ‹ˆλ‹€ !

✍🏻 νƒ€μž… Type

 :  λ°μ΄ν„°μ˜ μ’…λ₯˜μ™€ 크기λ₯Ό κ²°μ •ν•˜λ©΄ λ©”λͺ¨λ¦¬ 곡간 확보 쉬움


πŸ“ κΈ°λ³Έ νƒ€μž…κ³Ό μ°Έμ‘° νƒ€μž…

 β–ͺ️ κΈ°λ³Έ νƒ€μž… Primitive Type

   - λ°μ΄ν„°μ˜ μ‹€μ œ 값을 의미

   - μ •μˆ˜ νƒ€μž…(byte, short, int, long), μ‹€μˆ˜ νƒ€μž…(float, double), 문자 νƒ€μž…(char), 논리 νƒ€μž…(Booloean)

   - ex) ' λ””μ €νŠΈλŠ”λŠ” 당이 λ–¨μ–΄μ§ˆ λ•Œ λ¨ΉλŠ” μŒμ‹μ΄λ‹€ ' 라고 μ§μ ‘μ μœΌλ‘œ 의미λ₯Ό μ•Œλ €μ€€λ‹€λ©΄ κΈ°λ³Έ νƒ€μž…μ˜ 데이터

 β–ͺ️ μ°Έμ‘° νƒ€μž… Reference Type

    - 데이터가 μ €μž₯된 μ£Όμ†Ÿκ°’

    - 객체의 μ£Όμ†Œλ₯Ό μ €μž₯, 8개의 κΈ°λ³Έν˜•μ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€ νƒ€μž…

    - ex) μƒ‰μΈμ²˜λŸΌ ' λ””μ €νŠΈμ— λŒ€ν•œ μ •λ³΄λŠ” 120νŽ˜μ΄μ§€μ— μ„€λͺ…λ˜μ–΄μžˆλ‹€ ' λΌκ³  ν•œλ‹€λ©΄ μ°Έμ‘° νƒ€μž…μ˜ 데이터

public class Main {
    public static void main(String[] args) {
        Object object = new Object();
        System.out.println(object);
    }
}
 //κ²°κ³Ό 
 java.lang.Object@35bbe5e8

  → ObjectλŠ” μ‹€μ œκ°’(κΈ°λ³Έ νƒ€μž…) + @35bbe5e8λŠ” 이 객체의 μ£Όμ†Ÿκ°’(μ°Έμ‘° νƒ€μž…)

   * java.lang νŒ¨ν‚€μ§€ : Java lang νŒ¨ν‚€μ§€λŠ” JAVA ν”„λ‘œκ·Έλž˜λ°μ— ν•„μš”ν•œ κ°€μž₯ 기본적인 ν΄λž˜μŠ€λ“€μ΄ λͺ¨μ—¬μžˆλŠ” νŒ¨ν‚€μ§€


πŸ“ μ •μˆ˜ νƒ€μž… (byte, short, int, long)

 - λͺ¨λ‘ λ„€ 개의 νƒ€μž…μ΄ 있으며 μ €μž₯ν•  수 μžˆλŠ” κ°’μ˜ λ²”μœ„κ°€ μ„œλ‘œ 닀름

νƒ€μž… λ©”λͺ¨λ¦¬ λ²”μœ„ 기타
byte 1 byte -128 ~ 127  
short 2 byte -32,768 ~ 32,767 - int 보닀 μ§§λ‹€λŠ” 의미
int 4 byte -2,147,483,648 ~ 2,147,483,647 - intλŠ” μ •μˆ˜(integer)의 μ•½μž
long 8 byte -9,223,372,036,775,808
       ~ 9,223,372,036,854,775,807
- int 보닀 κΈΈλ‹€λŠ” 의미
- long νƒ€μž… λ³€μˆ˜μ— 값을 ν• λ‹Ήν•  λ•Œ, 8byteλΌλŠ” 것을 μ»΄νŒŒμΌλŸ¬μ—κ²Œ
   μ•Œλ €μ£ΌκΈ° μœ„ν•œ λͺ©μ μœΌλ‘œ L을 λΆ™μž„

1️⃣  byte μ‚¬μš©

byte b = 40;

  → byte νƒ€μž… λ³€μˆ˜μ— 40μ΄λΌλŠ” 값을 ν• λ‹Ήν•˜λ©΄ byte λ²”μœ„ 내에 있기 λ•Œλ¬Έμ— μ»΄νŒŒμΌλŸ¬κ°€ μ•Œμ•„μ„œ byte둜 λ°”κΏ”μ€Œ


2️⃣  long μ‚¬μš©

long l = 12345567788910;

  →  μ •μˆ˜μ˜ λ²”μœ„λ₯Ό λ„˜μ–΄κ°€μ„œ 였λ₯˜κ°€ 남  → long νƒ€μž…μ„ μ˜λ―Έν•˜λŠ” L을 λΆ™μ—¬μ£Όλ©΄ 였λ₯˜λ₯Ό ν•΄κ²°ν•  수 있음

     - 즉, L 은 int λ²”μœ„λ₯Ό λ²—μ–΄λ‚  λ•Œ 뢙인닀고 μ΄ν•΄ν•˜λ©΄ 됨

long l = 12345678910L;

  β–ͺ️  λ³€μˆ˜μ˜ 값이 μžλ£Œν˜•μ˜ λ²”μœ„λ₯Ό λ„˜μ„ 경우

   πŸ’‘ μ˜€λ²„ν”Œλ‘œμš°

     - μžλ£Œν˜•μ΄ ν‘œν˜„ν•  수 μžˆλŠ” λ²”μœ„ μ΄μƒμ˜ 값을 ν‘œν˜„ν•œ 경우 λ°œμƒν•˜λŠ” ν˜„μƒ

     - ex) μ–΄λ–€ 값이 byte ν˜•μ΄κ³  byteν˜•μ˜ μ΅œλŒ“κ°’μ΄ 127을 κ°’μœΌλ‘œ κ°€μ§€λŠ” 경우 이 값에 1을 λ”ν•˜λ©΄ 128이 μ•„λ‹ˆλΌ -128이 됨

  πŸ’‘ μ–Έλ”ν”Œλ‘œμš°

    - μžλ£Œν˜•μ΄ ν‘œν˜„ν•  수 μžˆλŠ” λ²”μœ„ μ΄ν•˜μ˜ 값을 ν‘œν˜„ν•œ 경우 λ°œμƒν•˜λŠ” ν˜„μƒ

    - ex) μ–΄λ–€ 값이 byte ν˜•μ΄κ³  byteν˜•μ˜ μ΅œμ†Ÿκ°’μΈ -128d을 κ°’μœΌλ‘œ κ°€μ§€λŠ” 경우 이 값에 1을 λΉΌλ©΄ -129κ°€ μ•„λ‹ˆλΌ 127이 됨


 πŸ“  데이터 νƒ€μž…μ˜ 크기와 ν‘œν˜„ λ²”μœ„

  - 데이터 νƒ€μž…μ˜ 크기가 λ°μ΄ν„°μ˜ ν‘œν˜„ λ²”μœ„ κ²°μ •

  - 0κ³Ό 1의 μ΄μ§„μˆ˜λ‘œ 데이터λ₯Ό ν‘œν˜„

   βš‘️ byte ν˜•

      - 1 byte = 8 bit 의 크기λ₯Ό κ°€μ§„ μ •μˆ˜ν˜• 데이터 νƒ€μž… → 8자리 μ΄μ§„μˆ˜λ₯Ό ν‘œν˜„ν•  수 있음

      - but, 음수의 λ²”μœ„λ„ ν‘œν˜„ν•  수 μžˆμ–΄μ•Ό 함 → 8λΉ„νŠΈ 쀑 맨 μ•žμ— λΉ„νŠΈλ₯Ό λΆ€ν˜Έ λΉ„νŠΈλ‘œ μ‚¬μš©

         → 맨 μ•ž λΉ„νŠΈκ°€ 0 이면 μ–‘μˆ˜ ! 1 이면 음수 ! → λ”°λΌμ„œ 2의 7승 = 128개의 데이터λ₯Ό ν‘œν˜„ κ°€λŠ₯

   

   πŸ‘‰πŸ» 결과적으둜 byteν˜•μ€ 8bit 쀑 1bitλŠ” λΆ€ν˜Έλ‘œ, 7bitλŠ” 숫자 ν‘œν˜„μ— μ‚¬μš© (-128 ~ 127)


πŸ“μ‹€μˆ˜ νƒ€μž… (float, double )

float a = 1.23f;
double b = 3.2453d;
double c = 3.2938;

  1️⃣ float νƒ€μž… 

    - 4 byte의 μ†Œμˆ˜μ μ„ κ°€μ§€λŠ” νƒ€μž…


  2️⃣ double νƒ€μž…

    - 8 byte ( default κ°’ )

 

 πŸ‘‰πŸ» double ν˜•μ€ float ν˜• 보닀 정밀도가 더 ↑

      - μ»΄ν“¨ν„°μ—μ„œ μ‹€μˆ˜λ₯Ό λ‹€λ£° λ•Œ μ˜€μ°¨κ°€ λ°œμƒν•  수 μžˆμ§€λ§Œ 이 μ˜€μ°¨λŠ” μ‹€μˆ˜λ₯Ό 더 μ •λ°€ν•˜κ²Œ ν‘œν˜„ν•  수둝 쀄어듦

      - μ •λ°€λ„λž€ ? μ–Όλ§ˆλ‚˜ μ‹€μˆ˜λ₯Ό μ •λ°€ν•˜κ²Œ λ‚˜νƒ€λ‚Ό 수 μžˆλŠ”μ§€ → μ •λ°€λ„λŠ” 데이터 νƒ€μž…μ˜ 크기가 클수둝 높아짐


πŸ“λ…Όλ¦¬ νƒ€μž… (Boolean)

  - μ°Έ λ˜λŠ” 거짓을 μ €μž₯ν•  수 μžˆλŠ” 데이터 νƒ€μž… True & False

  - μ°Έκ³Ό 거짓을 0κ³Ό 1둜 μ €μž₯ν•˜λ―€λ‘œ 단 ν•˜λ‚˜μ˜ λΉ„νŠΈλ§ŒμœΌλ‘œ ν‘œν˜„ν•  수 있음 

       → JVM이 λ‹€λ£° 수 μžˆλŠ” 데이터 μ΅œμ†Œ λ‹¨μœ„κ°€ 1 byte이기 λ•Œλ¬Έμ— 1 byte 크기λ₯Ό 차지함

boolean happy = true;
if (happy){
    "i am happy !"
}

πŸ“λ¬Έμž νƒ€μž… (Char)

  - char νƒ€μž… λ³€μˆ˜λŠ” 단 ν•˜λ‚˜μ˜ 문자만 μ €μž₯ν•  수 있음

  - μžλ°”λŠ” μœ λ‹ˆμ½”λ“œμ— κΈ°λ°˜ν•˜μ—¬ 문자λ₯Ό ν‘œν˜„ = 2 byte 크기인 μžλ°”μ˜ char νƒ€μž…μ— ν•˜λ‚˜μ˜ μœ λ‹ˆμ½”λ“œ μ €μž₯

    → 문자λ₯Ό λ³€μˆ˜μ— λŒ€μž…ν•˜λ©΄ λ¬Έμžμ— ν•΄λ‹Ήν•˜λŠ” μ •μˆ˜ κ°’ (μœ λ‹ˆμ½”λ“œ κ°’)이 μ €μž₯됨

char A = 'κ°€';
System.out.println(A);

char B = 44032;    
System.out.println(B);
//κ²°κ³Ό
κ°€
κ°€