[Become a Java-MastaπŸ‘¨β€πŸ« 2μ£Όμ°¨] 데이터 νƒ€μž…, λ³€μˆ˜, λ°°μ—΄

λ°°λ­‰Β·2021λ…„ 8μ›” 23일
0
post-thumbnail

🎯 λͺ©ν‘œ

μžλ°”μ˜ Primitive νƒ€μž…, λ³€μˆ˜ 그리고 배열을 μ‚¬μš©ν•˜λŠ” 방법을 읡히기.

πŸ“Œ ν•™μŠ΅ν•  것


πŸ’‘ Primitive νƒ€μž… μ’…λ₯˜μ™€ κ°’μ˜ λ²”μœ„ 그리고 κΈ°λ³Έ κ°’

Primitive type μ’…λ₯˜

  • μ›μžμ„±μ˜ Data
  • 수의 ν‘œν˜„ λ²”μœ„ : byte < short < int < long < float < double
                  νƒ€μž… μ’…λ₯˜           μš©λŸ‰          κΈ°λ³Έ κ°’
-----------------------------------------------------------------------------------------------
                  boolean           1 bit	    false     (숫자 ν˜Έν™˜ X)
                  char              2 bytes         '\u0000'  ('a'(문자) != "a"(λ¬Έμžμ—΄ ; 객체))
                  
              |   byte              1 byte          0       β–² λͺ…μ‹œμ  ν˜•λ³€ν™˜ (Casting)
              |   short             2 bytes         0       |
              |   int(default)      4 bytes         0       |
              |   long              8 bytes         0L      |
              |   float             4 bytes         0.0f    |
λ¬΅μ‹œμ  ν˜•λ³€ν™˜  β–Ό   double(default)   8 bytes         0.0d    |
(Promotion)

πŸ’‘ Reference νƒ€μž…

Reference type = All type - Primitive type

non-Primitive type

  • Reference type; μ°Έμ‘°νƒ€μž…
  • Class type
  • Interface type
  • Array type

javaλŠ” 2Bytes체제의 μœ λ‹ˆμ½”λ“œλ₯Ό μ§€μ›ν•œλ‹€.
μœ λ‹ˆμ½”λ“œλŠ” u0000 ~ uffffκΉŒμ§€ ν‘œν˜„λ¨
u00[**]μ—μ„œ [**]의 1λ°”μ΄νŠΈλŠ” ASCIIμ½”λ“œ

char ch = 'A';
char ch = 65;
char ch = '\u0041'; //A의 μœ λ‹ˆμ½”λ“œν‘œκΈ° (4*16^1+1*16^0 = 65)

Wrapper Class ? Primitive Type을 Boxingν•˜μ—¬ κ°μ²΄ν™”ν•˜λŠ” 클래슀!

8개의 Primitive Type에 각각 λŒ€μ‘λ˜κ²Œ λ‹€ μ‘΄μž¬ν•¨.

java 5.0 λΆ€ν„° μ‚¬μš©μžλ“€μ΄ int와 Integerκ°€ μ„œλ‘œ ν˜Έν™˜λ˜λŠ” 것 처럼 λŠκ»΄μ§€κ²Œ Auto Boxing, Auto UnBoxing을 지원함.

λ”°λΌμ„œ java의 λͺ¨λ“  λ°μ΄ν„°νƒ€μž…μ€ 객체둜 ν‘œν˜„μ΄ κ°€λŠ₯해진닀. κ·Έλž˜μ„œ μ΅œμƒμœ„ νƒ€μž…μΈ Object Type은 λ‹€ν˜•μ„± λ•Œλ¬Έμ— 쑴재.

Integer i = new Integer(10);

ν•˜μ§€λ§Œ
String 도 객체인 κ²ƒμ²˜λŸΌ, μ—„μ—°νžˆ Wrapper Class도 κ°μ²΄μž„μ„ 잊으면 μ•ˆλœλ‹€.

κ²½μš°μ— 따라, μ•„λž˜ 이미지와 같은 상황도 λ°œμƒν•  수 μžˆλ‹€.
equals둜 값은 λ™μΌν•˜μ§€λ§Œ == κ°€ μ„œλ‘œ λ‹€λ₯΄λ‹€λŠ” κ²°κ³Όλ₯Ό 보일 λ•Œλ„ μžˆλ‹€.


πŸ’‘ Literal

Literal : μžλ°” μ½”λ“œμ— 직접 'κ°’'을 λͺ…μ‹œν•˜λ©΄ λ¦¬ν„°λŸ΄λ‘œ λΆ„λ₯˜ν•¨
μ†ŒμŠ€ μ½”λ“œμ˜ κ³ μ •λœ 값을 λŒ€ν‘œν•˜λŠ” μš©μ–΄

Literal μ’…λ₯˜

Primitive νƒ€μž…κ³Ό 같이 μ •μˆ˜, μ‹€μˆ˜, 문자, 논리, λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ΄ μžˆλ‹€.

1. μ •μˆ˜ λ¦¬ν„°λŸ΄

10μ§„μˆ˜, 8μ§„μˆ˜, 16μ§„μˆ˜, 2μ§„μˆ˜ ν˜•νƒœλ‘œ ν‘œν˜„ν•œ 값이닀.

int a = 15;
int b = 015;
int c = 0x15;
int d = 0b0101;

μ •μˆ˜ λ¦¬ν„°λŸ΄μ€ int ν˜•μ΄ default이닀.

long νƒ€μž… λ¦¬ν„°λŸ΄μ€ 숫자 뒀에 L λ˜λŠ” l을 λΆ™μ—¬ ν‘œμ‹œν•˜μ—¬μ•Ό ν•œλ‹€. ( long a = 26L; )

2. μ‹€μˆ˜ λ¦¬ν„°λŸ΄

μ†Œμˆ˜μ  ν˜•νƒœλ‚˜ μ§€μˆ˜ ν˜•νƒœλ‘œ ν‘œν˜„ν•œ 값이닀.

μ‹€μˆ˜ λ¦¬ν„°λŸ΄λ„ λ§ˆμ°¬κ°€μ§€λ‘œ double ν˜•μ΄ default이닀.

double a = 0.1234;
double b = 1234E-4; 

a = 0.1234 와 b = (123410(-4)λŠ” λ™μΌν•œ κ°’

long νƒ€μž… λ¦¬ν„°λŸ΄μ€ 숫자 뒀에 L λ˜λŠ” l을 λΆ™μ—¬ ν‘œμ‹œν•˜μ—¬μ•Ό ν•˜λ“―μ΄, float νƒ€μž… λ¦¬ν„°λŸ΄λ„ fλ₯Ό κΌ­ λΆ™μ—¬μ€˜μ•Όν•œλ‹€. ( float h = 0.1234f; )

3. 문자 λ¦¬ν„°λŸ΄

단일 μΈμš©λΆ€ν˜Έ(' ')둜 문자λ₯Ό ν‘œν˜„ν•œλ‹€.

char a = 'H';
char b = 'ν•œ';
char c = \uae00;(μœ λ‹ˆμ½”λ“œκ°’) // \uλ‹€μŒμ— 4자리 16μ§„μˆ˜λ‘œ, 2λ°”μ΄νŠΈμ˜ μœ λ‹ˆμ½”λ“œ(Unicode))

μ•„λž˜μ™€ 같이 각각의 κΈ°λŠ₯을 κ°€μ§€λŠ” 특수문자 λ¦¬ν„°λŸ΄λ„ μ‘΄μž¬ν•œλ‹€.

4. 논리 λ¦¬ν„°λŸ΄

boolean νƒ€μž… λ³€μˆ˜μ— μΉ˜ν™˜ν•˜κ±°λ‚˜ 쑰건문에 μ΄μš©ν•œλ‹€.

boolean flag1 = true;

//Javaμ—μ„œλŠ” λ‹€λ₯Έ 언어와 달리 0 κ³Ό 1이상 μˆ˜κ°€ 논리 λ¦¬ν„°λŸ΄μ΄ 될 수 μ—†λ‹€.
boolean flag2 = 1; // 컴파일 μ—λŸ¬!

λ°˜λ“œμ‹œ true, false만이 논리 λ¦¬ν„°λŸ΄μ΄ λœλ‹€.

5. λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄

λ¬Έμžμ—΄μ€ Primitive type이 μ•„λ‹ˆκ³  μ—„μ—°νžˆ Reference type 객체이닀.

이쀑 μΈμš©λΆ€ν˜Έ (" ")둜 λ¬Έμžμ—΄μ„ ν‘œν˜„ν•œλ‹€.

String str1 = new String("a");  // identityHashCode : 1908981452
String str2 = new String("a");  // identityHashCode : 234231844
String str3 = "a";              // identityHashCode : 4332211222
String str4 = "a";              // identityHashCode : 4332211222
  • str1κ³Ό str2λŠ” μƒˆλ‘­κ²Œ Heap 곡간에 λ§Œλ“¦, 즉 μ„œλ‘œ 참쑰값이 λ‹€λ₯Έ λ‹€λ₯Έ 객체이닀.
  • str3μ—μ„œ λ¬Έμžμ—΄ "a"λ₯Ό μ„ μ–Έν•˜λ©΄ 이 "a"λŠ” heap에 μ˜¬λΌκ°€λŠ” 것이 μ•„λ‹Œ μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ¦¬ν„°λŸ΄ν’€μ— λ„£κ³  κ·Έ "a"λ₯Ό μ°Έμ‘°ν•œλ‹€.
  • λ¬Έμžμ—΄μ€ 변경이 λ˜μ§€μ•Šκ³  변경을 ν•˜λ €λ©΄ μƒˆλ‘­κ²Œ 선언을 ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— λ¦¬ν„°λŸ΄λ‘œ ν™œμš©μ΄ κ°€λŠ₯ν•˜λ‹€.
  • 그리고 str4μ—μ„œ λ¬Έμžμ—΄ "a"λ₯Ό λ‹€μ‹œ μ„ μ–Έν•˜λ©΄, str4λŠ” λ¦¬ν„°λŸ΄ν’€μ„ λ‘˜λŸ¬λ³΄κ³  "a"κ°€ μžˆλŠ” 것을 λ°œκ²¬ν•˜κ³  κ·Έ "a"λ₯Ό μ°Έμ‘°ν•œλ‹€.
  • λ”°λΌμ„œ str3κ³Ό str4λŠ” λ¦¬ν„°λŸ΄ν’€μ— μžˆλŠ” 같은 "a"λ₯Ό μ°Έμ‘°ν•œλ‹€.
  • str1은 Heap에 μƒˆλ‘­κ²Œ λ§Œλ“  String λ©”λͺ¨λ¦¬λ₯Ό, str3λŠ” λ¦¬ν„°λŸ΄ν’€μ˜ "a"λ₯Ό μ°Έμ‘°ν•˜λ―€λ‘œ λ‹€λ₯Έ 참쑰값을 가진닀.

πŸ’‘ λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”ν•˜λŠ” 방법

public class Person{
  // 멀버 λ³€μˆ˜ μ„ μ–Έ
  // μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ„ μ–Έ
  int n, m, k;
  // 클래슀 λ³€μˆ˜ μ„ μ–Έ
  int static s;
  
  // μƒμ„±μžλ‘œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ΄ˆκΈ°ν™”
  Person(int n, int m, int k){
      this.n = n;
      this.m = m;
      thos.k = k;
  }
  
  // μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ λΈ”λŸ­ μ΄ˆκΈ°ν™” 
  { 
      n = 10;
      m = 20;
      k = 30;
  }
  
  // 클래슀 λ³€μˆ˜ μŠ€νƒœν‹± λΈ”λŸ­ μ΄ˆκΈ°ν™”
  static {
      s = 40;
  }
  
  // λ©”μ†Œλ“œ λ‚΄ 둜컬 λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”
  void declare(){
      int a; // μ„ μ–Έ
      a = 10; // μ΄ˆκΈ°ν™”
      int b = 10; // μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”
  }
}

λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ final ν‚€μ›Œλ“œλ₯Ό λΆ™ν˜€μ„œ final λ³€μˆ˜λ‘œ μ„ μ–Έν•  수 μžˆλ‹€.

final λ³€μˆ˜λŠ” λ°”λ‘œ 값을 μ΄ˆκΈ°ν™” ν•˜κ±°λ‚˜ μƒμ„±μž λ˜λŠ” μ΄ˆκΈ°ν™” λΈ”λŸ­μ—μ„œ μ΄ˆκΈ°ν™” λ˜μ–΄μ•Όν•œλ‹€.

final λ³€μˆ˜λŠ” 4κ°€μ§€λ‘œ ꡬ뢄할 수 μžˆλ‹€.

1. 둜컬 primitive type λ³€μˆ˜ : final둜 μ„ μ–Έν•˜λ©΄ ν•œλ²ˆ μ΄ˆκΈ°ν™”λœ λ³€μˆ˜λŠ” λ³€κ²½ν•  수 μ—†λŠ” μƒμˆ˜κ°’μ΄ λœλ‹€.

2. 둜컬 reference type λ³€μˆ˜ : final둜 μ„ μ–Έν•˜λ©΄ κ·Έ λ³€μˆ˜μ— λ‹€λ₯Έ μ°Έμ‘° 값을 지정할 수 μ—†κ²Œ λ˜μ–΄, primitive typeκ³Ό λ™μΌν•˜κ²Œ ν•œλ²ˆ 쓰여진 λ³€μˆ˜μ˜ μž¬λ³€κ²½μ΄ λΆˆκ°€ν•΄μ§„λ‹€.

단, ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€ μžμ²΄κ°€ λ³€κ²½ λΆˆκ°€ν•˜λ‹€λŠ” μ˜λ―ΈλŠ” μ•„λ‹ˆλΌ ν•΄λ‹Ή μ°Έμ‘° λ³€μˆ˜κ°€ λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€λ‘œ μ°Έμ‘° 변경이 λΆˆκ°€λŠ₯ ν•œ 것이지, μΈμŠ€ν„΄μŠ€μ˜ 속성은 λ³€κ²½ κ°€λŠ₯ν•˜λ‹€.

3. λ©”μ†Œλ“œ 인자 λ³€μˆ˜ : λ©”μ†Œλ“œ 인자둜 final ν‚€μ›Œλ“œλ₯Ό 뢙인 λ³€μˆ˜λŠ” , λ©”μ†Œλ“œ μ•ˆμ—μ„œ λ³€μˆ˜κ°’μ„ λ³€κ²½ν•  수 μ—†λ‹€.

public void changeVar(final int var) {
        //var = 1; //final μΈμžλŠ” λ©”μ„œλ“œμ•ˆμ—μ„œ λ³€κ²½ν•  수 μ—†μŒ
}

4. 클래슀 멀버 λ³€μˆ˜ : final둜 μ„ μ–Έν•˜λ©΄ μƒμˆ˜κ°’μ΄ λ˜κ±°λ‚˜ write-once ν•„λ“œλ‘œ ν•œ 번만 μ“°μ΄κ²Œ λœλ‹€. final둜 μ„ μ–Έν•˜λ©΄ μ΄ˆκΈ°ν™”λ˜λŠ” μ‹œμ μ€ μƒμ„±μž λ©”μ„œλ“œκ°€ λλ‚˜κΈ° 전에 μ΄ˆκΈ°ν™”κ°€ λ˜μ§€λ§Œ, fianl static이냐 κ·Έλƒ₯ final이냐에 λ”°λΌμ„œ μ΄ˆκΈ°ν™” μ‹œμ μ΄ 달라진닀.

public class InitVar{
    //static final 멀버 λ³€μˆ˜ 
    static final inx a = 1; // κ°’κ³Ό ν•¨κ»˜ μ„ μ–Έμ‹œ
    static final int b;
    static {
        b = 2; // static μ΄ˆκΈ°ν™” λΈ”λŸ­μ—μ„œ
    }

    //instance final 멀버 λ³€μˆ˜ 
    final int c = 3; // κ°’κ³Ό ν•¨κ»˜ μ„ μ–Έμ‹œ
    final int d;
    final int e;
    {
        d = 4; // μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” λΈ”λŸ­μ—μ„œ 
    }
    
    InitVar(int e){
        this.e = e; // μƒμ„±μžμ—μ„œ
    }
}

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

λ³€μˆ˜μ˜ Scope : λ³€μˆ˜μ— μ ‘κ·Όν•  수 μžˆλŠ” 유효 λ²”μœ„

λ³€μˆ˜μ˜ Lifetime : λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬μ— μ‚΄μ•„μžˆλŠ” κΈ°κ°„

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜

  • Scope: static λ©”μ†Œλ“œλ₯Ό μ œμ™Έν•œ 클래슀 전체
  • Lifetime : 객체가 λ©”λͺ¨λ¦¬μ— λ‚¨μ•„μžˆμ„ λ•ŒκΉŒμ§€

클래슀 λ³€μˆ˜

  • Scope: 클래슀 전체
  • Lifetime : ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— λ‘œλ”© λ˜μ–΄ μžˆλŠ” λ™μ•ˆ

둜컬 λ³€μˆ˜

  • Scope: μ„ μ–Έλœ 블둝 λ‚΄
  • Lifetime : μ„ μ–Έ 된 블둝이 끝날 λ•ŒκΉŒμ§€

πŸ’‘ νƒ€μž… λ³€ν™˜, μΊμŠ€νŒ… 그리고 νƒ€μž… ν”„λ‘œλͺ¨μ…˜

μΊμŠ€νŒ… : λͺ…μ‹œμ  ν˜•λ³€ν™˜

ν”„λ‘œλͺ¨μ…˜ : λ¬΅μ‹œμ  ν˜•λ³€ν™˜

Primitive Type

- μΊμŠ€νŒ… : 큰 데이터 νƒ€μž…μ—μ„œ μž‘μ€ 데이터 νƒ€μž…μœΌλ‘œ ν˜• λ³€ν™˜ (κ°•μ œμ μœΌλ‘œ μ•žμ—μ„œ λͺ…μ‹œμ  ν˜•λ³€ν™˜μ„ 해주지 μ•ŠμœΌλ©΄ μ—λŸ¬ λ°œμƒ)

- ν”„λ‘œλͺ¨μ…˜ : μž‘μ€ 데이터 νƒ€μž…μ—μ„œ 큰 데이터 νƒ€μž…μœΌλ‘œ ν˜• λ³€ν™˜ (μžλ™ ν˜•λ³€ν™˜)

int a = 10;
short b = (short) a; // Casting
double c = a; // Promition

Reference Type

상속 관계인 경우 μΊμŠ€νŒ… κ°€λŠ₯.

- Up Casting : λΆ€λͺ¨ ν΄λž˜μŠ€λŠ” λͺ…μ‹œμ μΈ νƒ€μž…μΊμŠ€νŒ… 없이 μžμ‹κ³Ό μ—°κ²° ν•  수 μžˆλ‹€.

- Down Casting : μžμ‹ ν΄λž˜μŠ€λŠ” λͺ…μ‹œμ μΈ νƒ€μž…μΊμŠ€νŒ…μ΄ μžˆλ‹€λ©΄ λΆ€λͺ¨μ™€ μ—°κ²°ν•  수 μžˆλ‹€.

// Person <- Student둜 클래슀 상속 관계가 μžˆλ‹€κ³  κ°€μ •
Person p = new Student(); // Up Casting
Student s = (Student)p;   // Down Castinh

/* 
 * 참고둜 쑰상 μ°Έμ‘°λ³€μˆ˜λ‘œ μžμ‹ 객체λ₯Ό μƒμ„±ν•˜κ³  λ‚œ λ‹€μŒ
 * μžμ‹ 객체둜 μΊμŠ€νŒ…ν•΄μ£ΌλŠ”κ²ƒμ€ λ¬Έμ œμ—†μœΌλ‚˜,
 * 쑰상 객체λ₯Ό μƒμ„±ν•˜λ©΄μ„œ μžμ‹ 객체둜 μΊμŠ€νŒ…ν•˜λŠ”κ²ƒμ€ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.
*/

Person p = new Person();
Student s = (Student)p;   // 컴파일 μ—λŸ¬

πŸ’‘ λ°°μ—΄

Reference Type (즉, 배열도 객체)

μž₯점

  • 데이터 관리 μš©μ΄ν•¨

    • 반볡문과 κ²°ν•©ν•˜μ—¬ μΌκ΄„μ²˜λ¦¬ κ°€λŠ₯
    • 리턴값, λ§€κ°œλ³€μˆ˜ μ „λ‹¬μ‹œ ν™œμš© κ°€λŠ₯
  • μ²˜λ¦¬μ„±λŠ₯ 효율적

단점

  • 크기가 고정적 (ν•˜μ§€λ§Œ 고정이기 λ•Œλ¬Έμ— μ²˜λ¦¬μ„±λŠ₯이 효율적이게 됨)
    • 크기λ₯Ό λ³€κ²½ν•˜κ³  μ‹ΆμœΌλ©΄ λ°°μ—΄ μƒˆλ‘œ 생성

λ°°μ—΄ 생성

// 1차원 λ°°μ—΄ 생성
λ°μ΄ν„°νƒ€μž…[] μ°Έμ‘°λ³€μˆ˜ = new λ°μ΄ν„°νƒ€μž…[size];

// 2차원 λ°°μ—΄ 생성
λ°μ΄ν„°νƒ€μž…[][] μ°Έμ‘°λ³€μˆ˜ = new λ°μ΄ν„°νƒ€μž…[size][]; // μƒˆλ‘œ μ„ μ–Έν•˜λŠ” λ°°μ—΄μ˜ μ‚¬μ΄μ¦ˆλ§Œ λͺ…μ‹œν•΄μ€˜λ„ λœλ‹€. 

λ°°μ—΄ μ‚¬μš©

// 1차원 λ°°μ—΄ μ‚¬μš©
λ°μ΄ν„°νƒ€μž… λ³€μˆ˜ = μ°Έμ‘°λ³€μˆ˜[index];

// 2차원 λ°°μ—΄ μ‚¬μš©
λ°μ΄ν„°νƒ€μž… λ³€μˆ˜ = μ°Έμ‘°λ³€μˆ˜[index1][index2];

indexλŠ” 첫번째 μ›μ†Œ κΈ°μ€€ offset κ°œλ…

κ·Έλ ‡κΈ° λ•Œλ¬Έμ—, 0 ~ 길이-1 κΉŒμ§€κ°€ μœ νš¨μΈλ±μŠ€κ°€ 됨

λ°°μ—΄ μ΄ˆκΈ°ν™”

// 1차원 λ°°μ—΄ μ΄ˆκΈ°ν™”
λ°μ΄ν„°νƒ€μž…[] μ°Έμ‘°λ³€μˆ˜ = new λ°μ΄ν„°νƒ€μž…[]{κ°’1,κ°’2,,,,};
λ°μ΄ν„°νƒ€μž…[] μ°Έμ‘°λ³€μˆ˜ = {κ°’1,κ°’2,,,,};

//μ΄ˆκΈ°ν™”λ₯Ό ν•  λ•ŒλŠ” λ“€μ–΄κ°„ μ΄ˆκΈ°κ°’μ˜ κ°œμˆ˜μ— 따라 μžλ™μœΌλ‘œ sizeκ°€ κ²°μ •λ˜κΈ° λ•Œλ¬Έμ— 직접 sizeλ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠλŠ”λ‹€. 
λ°μ΄ν„°νƒ€μž…[] μ°Έμ‘°λ³€μˆ˜ = new λ°μ΄ν„°νƒ€μž…[size]{κ°’1,κ°’2,,,,}; // 컴파일 μ—λŸ¬

// 2차원 λ°°μ—΄ μ΄ˆκΈ°ν™”
λ°μ΄ν„°νƒ€μž…[][] μ°Έμ‘°λ³€μˆ˜ = new λ°μ΄ν„°νƒ€μž…[][]{{κ°’1, κ°’2,,,,}, {κ°’1, κ°’2,,,,}, {κ°’1, κ°’2,,,,}};
λ°μ΄ν„°νƒ€μž…[][] μ°Έμ‘°λ³€μˆ˜ = {{κ°’1, κ°’2,,,,}, {κ°’1, κ°’2,,,,}, {κ°’1, κ°’2,,,,}};

πŸ’‘ νƒ€μž… μΆ”λ‘ , var

νƒ€μž… μΆ”λ‘  : λ³€μˆ˜μ˜ νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•Šκ³  μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ μΆ”μΈ‘ν•΄μ„œ 컴파일 ν•˜λŠ”κ²ƒ.

var : νƒ€μž… 좔둠을 μœ„ν•œ λžŒλ‹€ νƒ€μž….

Java 10λΆ€ν„° var ν‚€μ›Œλ“œλ₯Ό 톡해 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 있게 됐닀.

지역 λ³€μˆ˜λ‘œλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜κ³  λ°˜λ“œμ‹œ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”λ₯Ό ν•΄μ•Ό ν•˜λ©°, null을 λŒ€μž… ν•  수 μ—†λ‹€.

λ™μ λ°”μΈλ”©μ²˜λŸΌ λŸ°νƒ€μž„μ— varλ₯Ό μ‹€μ œ νƒ€μž…μœΌλ‘œ μΉ˜ν™˜ν•  것 κ°™μ§€λ§Œ, μ‹€μ œ νƒ€μž…μœΌλ‘œ μΉ˜ν™˜ν•˜λŠ” 것은 컴파일 νƒ€μž„μ΄λ‹€.

public static void main(String[] args){
    var intNum = 10; // int
    var longNum = 10L; // long
    var floatNum = 0.1f; // float
    var doubleNum = 0.1; // double
    var bool = true; // boolean
    var str = "String"; // String
}
profile
SSAFY 6th -> SEC VD SW πŸ‘¨β€πŸ’»πŸ”₯

0개의 λŒ“κΈ€