Skip to content

Latest commit

Β 

History

History
311 lines (206 loc) Β· 11.5 KB

File metadata and controls

311 lines (206 loc) Β· 11.5 KB

데이터 νƒ€μž…

μžλ°”μ—μ„œ 데이터 νƒ€μž…μ€ 크게 μ›μ‹œ(Primitive) νƒ€μž…κ³Ό μ°Έμ‘°(Reference) νƒ€μž…μ΄ μžˆλ‹€.


Primitive Type

μ •μˆ˜, μ‹€μˆ˜, 문자, 논리 λ¦¬ν„°λŸ΄κ³Ό 같은 μ‹€μ œ 데이터 값을 μ €μž₯ν•˜λŠ” νƒ€μž…

μ’…λ₯˜ 데이터 νƒ€μž… 크기(byte) κΈ°λ³Έ κ°’ λ²”μœ„
λ…Όλ¦¬ν˜• boolean 1byte false true, false
λ¬Έμžν˜• char 2byte \u0000 0 ~ 65,535
μ •μˆ˜ν˜• byte 1byte 0 -128~ 127
μ •μˆ˜ν˜• short 2byte 0 -2^15 ~ 2^15 - 1
μ •μˆ˜ν˜• int 4byte 0 -2^31 ~ 2^31 - 1
μ •μˆ˜ν˜• long 8byte 0L -2^63 ~ 2^63 - 1
μ‹€μˆ˜ν˜• float 4byte 0.0F 1.4E-45 ~ 3.4028235E38
μ‹€μˆ˜ν˜• double 8byte 0.0 4.9E-324 ~ 1.7976931348623157E308
  • boolean : c와 같이 true와 falseλ₯Ό ν‘œν˜„ν•˜λŠ”λ° 1bit만 있으면 될 것 κ°™μ§€λ§Œ JavaλŠ” 데이터 μ΅œμ†Œλ²”μœ„κ°€ 1Byte이기 λ•Œλ¬Έμ— boolean도 1byte의 크기λ₯Ό κ°–λŠ”λ‹€.

  • char : c의 경우 1byte의 크기λ₯Ό κ°™μ§€λ§Œ JavaλŠ” μœ λ‹ˆμ½”λ“œλ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ κΈ°λ³Έ 2byteλ₯Ό κ°–μœΌλ©°, Java의 μ›μ‹œ λ°μ΄ν„°νƒ€μž…μ€‘ μœ μΌν•˜κ²Œ unsignedν˜•νƒœμ΄λ‹€.

  • μ •μˆ˜ν˜• : JVM의 μŠ€νƒμ΄ 기본적으둜 ν”Όμ—°μ‚°μžλ₯Ό 4byte λ‹¨μœ„λ‘œ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— int보닀 μž‘μ€ μžλ£Œν˜•μ˜ 값을 κ³„μ‚°ν• λ•Œ intν˜•μœΌλ‘œ ν˜•λ³€ν™˜λ˜μ–΄μ„œ 연산이 μˆ˜ν–‰λ˜κΈ° λ•Œλ¬Έμ— ꡳ이 byte와 shortν˜•μ„ μ‚¬μš©ν•  ν•„μš”λŠ” μ—†μ–΄ 보인닀.

    JVM은 intν˜•μ„ μ •μˆ˜ν˜•μ˜ κΈ°λ³Έ 데이터 νƒ€μž…μœΌλ‘œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— long을 μ‚¬μš©ν•˜κ³ μž ν•œλ‹€λ©΄ 뒀에 l,L을 λΆ™μ—¬μ•Ό ν•œλ‹€.

    Java8 μ΄ν›„λΆ€ν„°λŠ” Integer와 Long의 Wrapperν΄λž˜μŠ€μ— unsigned κ΄€λ ¨ λ©”μ†Œλ“œκ°€ μΆ”κ°€λ˜μ–΄ unsigned ν˜•νƒœλ„ 이용이 κ°€λŠ₯ν•˜λ‹€.

  • μ‹€μˆ˜ν˜• : doubleν˜•μ΄ κΈ°λ³Έ 데이터 νƒ€μž…μœΌλ‘œ floatν˜•μ„ μ‚¬μš©ν•˜κ³ μž ν•œλ‹€λ©΄ 뒀에 f,Fλ₯Ό λΆ™μ—¬ μ£Όμ–΄μ•Ό ν•œλ‹€.

    λ©”λͺ¨λ¦¬ ν¬κΈ°λŠ” int,longκ³Ό κ°™μ§€λ§Œ μ‹€μˆ˜ν˜•μ€ λΆ€λ™μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ μ €μž₯ν•˜μ—¬ 더 λ§Žμ€ λ²”μœ„λ₯Ό μ €μž₯ ν•  수 μžˆλ‹€.

    float의 경우 λΆ€ν˜Έ(1bit)+μ§€μˆ˜(8bit)+κ°€μˆ˜(23bit), double의 경우 λΆ€ν˜Έ(1bit)+μ§€μˆ˜(11bit)+κ°€μˆ˜(52bit)둜 λ‚˜λˆ„μ–΄ μ €μž₯ν•˜κ²Œ λ˜μ–΄ ν‘œν˜„λ²”μœ„κ°€ κ³ μ • μ†Œμˆ˜μ λ°©μ‹λ³΄λ‹€ λ„“μ§€λ§Œ μ‹€μˆ˜ ν‘œν˜„μ— μžˆμ–΄ κ·Όμ‚¬μΉ˜λ₯Ό ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ— μ˜€μ°¨κ°€ μ‘΄μž¬ν•˜λŠ” 단점을 κ°–κ³ μžˆλ‹€.

    (0.1을 1000번 λ”ν•˜κ²Œ 되면 100이 λ˜μ–΄μ•Ό ν•˜μ§€λ§Œ 100.09999... 와 같은 근사값이 좜λ ₯λœλ‹€.)

    float의 경우 μ†Œμˆ˜μ  μ•„λž˜ 9자리, double의 경우 18μžλ¦¬κΉŒμ§€ ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€.

    같은 데이터 νƒ€μž…μ—μ„œλ„ int,long / float,doubleν˜•μœΌλ‘œ λ‚˜λˆˆ μ΄μœ λŠ” λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ 이닀.

    λ‹­ μž‘λŠ”λ° μ†Œ μž‘λŠ” 칼을 μ‚¬μš©ν•˜λŠ” 것은 낭비이기 λ•Œλ¬Έμ΄λ‹€.



Refrerence Type

μ˜μ–΄ 의미 κ·ΈλŒ€λ‘œ μ°Έμ‘° νƒ€μž…μœΌλ‘œ μ €μž₯λ˜λŠ” 값이 μ›μ‹œλ°μ΄ν„°μ™€ λ‹€λ₯΄κ²Œ μ‹€μ œ 값이 μ•„λ‹Œ λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°’μ΄ μ €μž₯λ˜λŠ” νƒ€μž…μœΌλ‘œ λ¬Έμžμ—΄,λ°°μ—΄,enum,class,interface등이 μžˆλ‹€.

JVM의 Runtime Data Area쀑 μ°Έμ‘° νƒ€μž… λ³€μˆ˜λŠ” λŸ°νƒ€μž„ μŠ€νƒ μ˜μ—­μ— μ‹€μ œ κ°μ²΄λŠ” νž™ μ˜μ—­μ— μ €μž₯λ˜μ–΄ 객체λ₯Ό μ‚¬μš©ν• λ•Œ λ§ˆλ‹€ μ°Έμ‘° λ³€μˆ˜μ— μ €μž₯된 객체의 μ£Όμ†Œλ₯Ό λΆˆλŸ¬μ™€ μ‚¬μš©ν•œλ‹€.

μœ„μ—μ„œ λ§ν•œκ²ƒκ³Ό 같이 μ‹€μ œ λ°μ΄ν„°λŠ” νž™ μ˜μ—­μ— μ €μž₯되며 데이터 ν¬κΈ°λŠ” μ •ν•΄μ Έμžˆμ§€ μ•Šκ³  λ™μ μœΌλ‘œ ν• λ‹Ήλ˜λ©° μ°Έμ‘°ν•˜λŠ” λ³€μˆ˜κ°€ μ—†λ‹€λ©΄ Garbage Collectorκ°€ μ œκ±°ν•˜μ—¬ λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•œλ‹€.

  • Boxing : μ›μ‹œ νƒ€μž…μ„ μ°Έμ‘° νƒ€μž…μœΌλ‘œ λ³€ν™˜μ‹œν‚€λŠ” 것

  • Unboxing : μ°Έμ‘° νƒ€μž…μ„ μ›μ‹œ νƒ€μž…μœΌλ‘œ λ³€ν™˜ μ‹œν‚€λŠ” 것

    Auto BoxingκΈ°λŠ₯으둜 λͺ…μ‹œμ μœΌλ‘œ μž‘μ„±ν•˜μ§€ μ•Šμ•„λ„ μžλ™μœΌλ‘œ Boxing 을 ν•΄μ€€λ‹€.

    int i= 1;
    Integer integer = i; //Auto Boxing

νŠΉμ§•

  • null을 포함할 수 μžˆλ‹€.

    int example = null; //error
    Integer integer = null;
  • μ œλ„€λ¦­ νƒ€μž…μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€

    List<int> list; //error
    List<Integer> list;
  • 데이터 μ ‘κ·Ό 속도가 μ›μ‹œνƒ€μž…μ— λΉ„ν•΄ λŠλ¦¬λ‹€

    μ›μ‹œνƒ€μž…μ€ μŠ€νƒμ—μ„œ λ°”λ‘œ μ‚¬μš©μ΄κ°€λŠ₯ν•˜λ‚˜ μ°Έμ‘°νƒ€μž…μ€ μŠ€νƒμ—μ„œ λ©”λͺ¨λ¦¬μ£Όμ†Œλ₯Ό κ°–κ³  νž™μ— μ ‘κ·Όν•˜λŠ” λ°©λ²•μœΌλ‘œ 값을 ν•„μš”ν• λ•Œλ§ˆλ‹€ Unboxing을 κ±°μ³μ•Όν•˜κΈ° λ•Œλ¬Έμ— 접근속도가 λŠλ €μ§€κ²Œ λœλ‹€.

    ν•˜μ§€λ§Œ, 큰 크기의 데이터 접근이 μ•„λ‹Œ 전달,λ³΅μ‚¬μ˜ κ²½μš°μ—λŠ” μ›μ‹œνƒ€μž…λ³΄λ‹€λŠ” μ°Έμ‘°νƒ€μž…μ΄ 쒋을 μˆ˜λ„ μžˆλ‹€.



λ¦¬ν„°λŸ΄

λ©”λͺ¨λ¦¬μ— μ €μž₯λ˜μ–΄ λ³€ν•˜μ§€ μ•ŠλŠ” 값을 λœ»ν•˜λ©° 컴파일 νƒ€μž„μ— μ •μ˜λ˜μ–΄ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λŠ” κ°’

λŒ€μž… μ—°μ‚°μ—μ„œ λͺ¨λ“  μš°ν•­μ˜ 값듀을 보톡 λ¦¬ν„°λŸ΄μ΄λΌκ³  λΆ€λ₯Έλ‹€.

boolean isTrue = true;
char c = 'C';
int i = 1001;
long il = 1001L;
float f = 1.1234F;
double d = 1.1234;
String str = "hello";

와 같이 μš°ν•­μ— μžˆλŠ” λ‚΄κ°€ μ •μ˜ν•œ κ°’λ“€λ‘œ λ³€ν•˜μ§€ μ•ŠλŠ” 값듀을 μ˜λ―Έν•œλ‹€.



λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™” 방법

λ³€μˆ˜ μ„ μ–Έ

(데이터 νƒ€μž…) (λ³€μˆ˜λͺ…1),(λ³€μˆ˜λͺ… 2)... ;

--Example --
int i;
int j,k,l;

μœ„μ™€ 같이 ν•˜λ‚˜μ˜ λ³€μˆ˜λ₯Ό 선언이 κ°€λŠ₯ν•˜κ³  λ™μ‹œμ— μ—¬λŸ¬κ°œλ„ κ°€λŠ₯ν•˜λ‹€.

λ³€μˆ˜ μ΄ˆκΈ°ν™”

  • μ„ μ–Έ ν›„ μ΄ˆκΈ°ν™”

    int i;
    i =10;
  • μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”

    int i=10;



λ³€μˆ˜μ˜ μŠ€μ½”ν”„μ™€ λΌμ΄ν”„νƒ€μž„

λ³€μˆ˜μ˜ μŠ€μ½”ν”„λž€ ν•΄λ‹Ή λ³€μˆ˜μ— μ ‘κ·Όν•  수 μžˆλŠ” λ²”μœ„λ₯Ό λ‚˜νƒ€λ‚΄λŠ” κ²ƒμœΌλ‘œ μ€‘κ΄„ν˜Έ {}λ₯Ό 톡해 μŠ€μ½”ν”„λ₯Ό λ‚˜λˆ„λŠ” 블둝 μŠ€μ½”ν”„μ΄κ³  ν•΄λ‹Ή λ³€μˆ˜κ°€ μ–Έμ œκΉŒμ§€ μ‘΄μž¬ν•˜λŠ”μ§€κ°€ 라이프 νƒ€μž„μ΄λ‹€.

μ§€μ—­λ³€μˆ˜μ˜ λΌμ΄ν”„νƒ€μž„κ³Ό μŠ€μ½”ν”„λŠ” μ½”λ“œ λΈ”λŸ­μ— κ΅­ν•œλœλ‹€.

public class example {
    public static void main(String[] args){
        int i =1;
        if(true){
            int j=2;
            System.out.println(i);
        }
        System.out.println(j); //error
    }
}

μœ„μ˜ μ½”λ“œμ—μ„œ ifλ‚΄μ—μ„œ iλ₯Ό μ ‘κ·Όν• λ•Œ if의 μ½”λ“œ λΈ”λŸ­μ—μ„œ iλ₯Ό μ°Ύκ³  μ—†μœΌλ©΄ 그보닀 μƒμœ„ λΈ”λŸ­μΈ class λΈ”λŸ­μ—μ„œ iλ₯Ό μ°Ύμ•„ 접근이 κ°€λŠ₯ν•˜μ§€λ§Œ jλŠ” if내에 μ„ μ–Έλ˜μ–΄ if의 λΈ”λŸ­({})에 κ΅­ν•œλ˜κΈ° λ•Œλ¬Έμ— if밖에 λ‚˜μ™€μ„œλŠ” 접근이 λΆˆκ°€λŠ₯ν•˜κ³  if의 λΈ”λŸ­μ΄ λλ‚˜λ©΄μ„œ if에 κ΅­ν•œλ˜μ–΄μžˆλ˜ μ§€μ—­ λ³€μˆ˜λ“€μ€ μŠ€νƒμ˜μ—­μ—μ„œ μ†Œλ©Έλœλ‹€.

레퍼런슀 νƒ€μž…μ €μž₯μ‹œμ— μ €μž₯λ˜λŠ” νž™ μ˜μ—­λ°μ΄ν„°μ˜ 라이프 νƒ€μž„μ€ κ°€λΉ„μ§€ 컬렉터가 κ΄€λ¦¬ν•œλ‹€.

public class example {
    public static void main(String[] args){
        String str = "Test";
        System.out.println(str);
        str = null;
        System.out.println(str);
    }
}

str은 TestλΌλŠ” νž™μ˜μ—­μ— μ €μž₯된 데이터λ₯Ό μ°Έμ‘°ν•˜λŠ” λ³€μˆ˜μΈλ°, str=null;뢀뢄을 톡해 Testλ₯Ό κ°€λ¦¬ν‚€λŠ” λ³€μˆ˜λŠ” 더이상 μ‘΄μž¬ν•˜μ§€ μ•Šκ²Œ λ˜μ–΄ κ°€λΉ„μ§€ 컬렉터가 νž™μ˜μ—­μ—μ„œ TestλΌλŠ” 데이터λ₯Ό μ œκ±°ν•˜κ²Œ λœλ‹€.

이처럼 μ°Έμ‘° νƒ€μž…μ˜ νž™ μ˜μ—­μ— μ €μž₯λ˜λŠ” λ°μ΄ν„°λŠ” 아무도 μ°Έμ‘°ν•˜μ§€ μ•Šκ²Œ λ˜μ—ˆμ„λ•Œ μ†Œλ©Έλœλ‹€.



νƒ€μž… λ³€ν™˜, μΊμŠ€νŒ… , νƒ€μž… ν”„λ‘œλͺ¨μ…˜

νŠΉμ • 데이터 νƒ€μž…μ˜ 값을 λ‹€λ₯Έ 데이터 νƒ€μž…μ˜ 값을 λ³€ν™˜ ν•˜λŠ” 것

  • νƒ€μž… ν”„λ‘œλͺ¨μ…˜ : μžμ‹ μ˜ ν‘œν˜„λ²”μœ„λ₯Ό λͺ¨λ‘ ν¬ν•¨ν•œ 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜

    byte -> int, int-> long와 같이 더 큰 λ²”μœ„λ₯Ό κ°–λŠ” 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜μ˜ κ²½μš°κ°€ μ†ν•˜κ±°λ‚˜ int -> float와 같이 같은 크기여도 ν‘œν˜„λ²”μœ„λ₯Ό λͺ¨λ‘ 포함할 수 μžˆλ‹€λ©΄ ν”„λ‘œλͺ¨μ…˜μ΄λ‹€.

    float -> long 의 경우 데이터 크기둜만 보면 ν”„λ‘œλͺ¨μ…˜μ΄λΌκ³  생각할 수 μžˆμ§€λ§Œ, long은 μ‹€μˆ˜λ₯Ό μ €μž₯ν•  수 μ—†κΈ° λ•Œλ¬Έμ— 데이터 손싀이 μΌμ–΄λ‚˜ ν”„λ‘œλͺ¨μ…˜μ΄λΌκ³  ν•  수 μ—†κ³  μΊμŠ€νŒ…μ΄λΌκ³  λ³Ό 수 μžˆλ‹€.

    long l = 1234L;
    float f = l;

    μœ„μ˜ μ½”λ“œμ™€ 같이 ν”„λ‘œλͺ¨μ…˜μ˜ 경우 데이터 손싀이 λ°œμƒν•˜μ§€ μ•Šκ³  μžλ™μœΌλ‘œ ν˜•λ³€ν™˜μ„ μ‹œμΌœμ€€λ‹€.

  • νƒ€μž… μΊμŠ€νŒ… : μžμ‹ μ˜ ν¬ν˜„ λ²”μœ„λ₯Ό λͺ¨λ‘ ν¬ν•¨ν•˜μ§€ λͺ»ν•œ 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜

    int->byte, long -> int와 같이 큰 λ°μ΄ν„°ν¬κΈ°μ—μ„œ μž‘μ€ 크기의 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜ν• λ•Œλ‚˜ float -> longκ³Ό 같이 데이터 ν‘œν˜„λ²”μœ„κ°€ λ‹¬λΌμ§€λŠ” κ²½μš°μ— μ†ν•˜λ©° 데이터 손싀이 일어 λ‚œλ‹€.

    float f = 1.234f;
    long l = f;

    μœ„μ˜ μ½”λ“œμ™€ 같이 μžλ™μœΌλ‘œ μΊμŠ€νŒ…μ„ ν•˜λ €κ³ ν•œλ‹€λ©΄ 데이터 손싀이 λ°œμƒν•  수 있기 λ•Œλ¬Έμ— μ»΄νŒŒμΌνƒ€μž„μ— 였λ₯˜λ₯Ό λ°œμƒ μ‹œν‚¨λ‹€.

    κ·Έλž˜λ„ ν˜•λ³€ν™˜μ„ ν•˜κ³  μ‹Άλ‹€λ©΄ κ°•μ œν˜•λ³€ν™˜μ„ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ 데이터 손싀이 λ°œμƒν•˜κ²Œ λœλ‹€.

    float f = 1.234f;
    long l = (long)f;
    System.out.println(l); // 1



1μ°¨, 2μ°¨ λ°°μ—΄ μ„ μ–Έ

λ°°μ—΄ λ³€μˆ˜ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”λ₯Ό 톡해 μ„ μ–Έ ν•˜λŠ” 방식과 newλ₯Ό μ΄μš©ν•˜λŠ” 방식이 μžˆλ‹€.

class ArrayExample {
	public static void main(String[] args) {
        //1차원 λ°°μ—΄
        int[] array1 = {1, 2, 3, 4, 5};
        int[] array2;
        array2 = new int[5];
        array2[0]=1;
        array2[1]=2;
        array2[2]=3;
        array2[3]=4;
        array2[4]=5;

        //2차원 λ°°μ—΄
        int[][] array3 = {{1, 2}, {3, 4}};
        int[][] array4;
        array4 = new int[2][2];
        array4[0][0] = 1;
        array4[0][1] = 2;
        array4[1][0] = 3;
        array4[1][1] = 4;

    }
}

1차원 λ°°μ—΄

array1

사진 μ°Έμ‘°

1차원 λ°°μ—΄μ˜ λ³€μˆ˜(array1,array2)λŠ” μŠ€νƒμ˜μ—­μ— μ‘΄μž¬ν•˜λ©° νž™ μ˜μ—­μ˜ μ£Όμ†Œκ°’μ„ κ°–λŠ”λ‹€.

νž™ μ˜μ—­μ—λŠ” 데이터 νƒ€μž… 크기와 μš”μ†Œ κ°œμˆ˜μ— 맞게 ν• λ‹Ήλ˜μ–΄ μ‚¬μš©μ΄λœλ‹€.

2차원 λ°°μ—΄

array2

사진 μ°Έμ‘°

2차원 λ°°μ—΄μ˜ λ³€μˆ˜(array3,array4)λŠ” μŠ€νƒμ˜μ—­μ— μ‘΄μž¬ν•˜λ©° νž™ μ˜μ—­μ˜ μ£Όμ†Œκ°’μ„ κ°–λŠ”λ‹€.

νž™ μ˜μ—­μ—λŠ” μ‹€μ œ 데이터값듀과 2μ°¨μ›λ°°μ—΄μ˜ 각 ν–‰μ˜ μ‹œμž‘μ£Όμ†Œλ₯Ό κ°–λŠ” μ£Όμ†Œκ°’λ“€μ΄ μ‘΄μž¬ν•œλ‹€.



νƒ€μž… μΆ”λ‘ 

Java 10 이후뢀터 μƒκ²¨λ‚œ κΈ°λŠ₯으둜 μ»΄νŒŒμΌλŸ¬κ°€ 값을 보고 데이터 νƒ€μž…μ΄ 무엇인지 μΆ”λ‘ ν•˜λŠ” κ²ƒμœΌλ‘œ Js의 var,let와 λΉ„μŠ·ν•˜λ‹€.

μ œλ„€λ¦­

public class example{
    public static void main(String[] args){
        HashMap<String,Integer> hashMap = new HashMap<>();
    }
}

μœ„μ™€ 같이 μš°ν•­μ˜ <>μ•ˆμ— 값을 μž…λ ₯ν•˜μ§€ μ•Šμ•„λ„ μ’Œν•­μ˜ 값을 보고 νƒ€μž…μ„ μΆ”λ‘ ν•˜μ—¬ μƒμ„±ν•˜λŠ” 경우

var

JS의 var,letκ³Ό 같이 μΆ”λ‘ ν˜• 데이터 νƒ€μž…μœΌλ‘œ 생각할 수 μžˆλŠ”λ°, λ‹€λ₯Έμ μœΌλ‘œ μ§€μ—­ λ³€μˆ˜μ™€ μ„ μ–Έκ³Ό λ™μ‹œμ— 값이 ν• λ‹Ή λ˜μ–΄μ•Ό ν•œλ‹€λŠ” μ μ—μ„œ letκ³Ό constλ₯Ό ν•©μΉœ λŠλ‚Œμ΄λ‹€.

public class example{
    var i = 10; //error
    public static void main(String[] args){
        var j; //error
    }
}





Reference

https://velog.io/@gillog/%EC%9B%90%EC%8B%9C%ED%83%80%EC%9E%85-%EC%B0%B8%EC%A1%B0%ED%83%80%EC%9E%85Primitive-Type-Reference-Type

https://wikidocs.net/81917

https://www.notion.so/2-38b5d67c7f5a48238529bb8f1617ea0d

https://blog.naver.com/hsm622/222144931396