nyximos.log

[Java] μžλ°” 데이터 νƒ€μž…, λ³€μˆ˜ 그리고 λ°°μ—΄ λ³Έλ¬Έ

Programming/JAVA

[Java] μžλ°” 데이터 νƒ€μž…, λ³€μˆ˜ 그리고 λ°°μ—΄

nyximos 2022. 1. 14. 15:44

πŸ‘©‍πŸš€ λͺ©ν‘œ

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

πŸ‘©‍πŸ’» ν•™μŠ΅ν•  것

  • ν”„λ¦¬λ―Έν‹°λΈŒ νƒ€μž… μ’…λ₯˜μ™€ κ°’μ˜ λ²”μœ„ 그리고 κΈ°λ³Έ κ°’
  • ν”„λ¦¬λ―Έν‹°λΈŒ νƒ€μž…κ³Ό 레퍼런슀 νƒ€μž…
  • λ¦¬ν„°λŸ΄
  • λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”ν•˜λŠ” 방법
  • λ³€μˆ˜μ˜ μŠ€μ½”ν”„μ™€ λΌμ΄ν”„νƒ€μž„
  • νƒ€μž… λ³€ν™˜, μΊμŠ€νŒ… 그리고 νƒ€μž… ν”„λ‘œλͺ¨μ…˜
  • 1μ°¨ 및 2μ°¨ λ°°μ—΄ μ„ μ–Έν•˜κΈ°
  • νƒ€μž… μΆ”λ‘ , var

 

🦸‍♀️ Primitive Type μ’…λ₯˜μ™€ κ°’μ˜ λ²”μœ„ 그리고 κΈ°λ³Έ κ°’

primitive type κΈ°λ³Έν˜• νƒ€μž…

값을 ν• λ‹Ήν•  λ•Œ λ³€μˆ˜μ˜ μ£Όμ†Œκ°’μ— 값이 κ·ΈλŒ€λ‘œ μ €μž₯되고,

JVM Runtime Area의 Stack Area에 μ €μž₯λœλ‹€.

  type size default value range
λ…Όλ¦¬ν˜• boolean 1byte flase true,false
μ •μˆ˜ν˜• byte 1byte 0 -128 ~ 127
  short 2byte 0 -32,768 ~ 32767
  int 4byte 0 -2,147,483,648 ~
2,147,483,647
  long 8byte 0L -9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807
μ‹€μˆ˜ν˜• float 4byte 0.0F 1.4E-45 ~
3.4028235E38
  double 8byte 0.0 4.9E-324 ~
1.7976931348623157E308
λ¬Έμžν˜• char 2byte (16bit) '\u0000' 0 ~ 65,535
(2οΌΎ16 = 65536가지)

 

μ΅œμ†Ÿκ°’κ³Ό μ΅œλŒ“κ°’μ„ 좜λ ₯ν•΄λ³΄μž.

public class Main {
	public static void main(String[] args) {
        System.out.println("byte μ΅œμ†Ÿκ°’ : " + Byte.MIN_VALUE);
        System.out.println("byte μ΅œλŒ“κ°’ : " + Byte.MAX_VALUE);

        System.out.println("short μ΅œμ†Ÿκ°’ : " + Short.MIN_VALUE);
        System.out.println("short μ΅œλŒ“κ°’ : " + Short.MAX_VALUE);

        System.out.println("int μ΅œμ†Ÿκ°’ : " + Integer.MIN_VALUE);
        System.out.println("int μ΅œλŒ“κ°’ : " + Integer.MAX_VALUE);

        System.out.println("long μ΅œμ†Ÿκ°’ : " + Long.MIN_VALUE);
        System.out.println("long μ΅œλŒ“κ°’ : " + Long.MAX_VALUE);

        System.out.println("float μ΅œμ†Ÿκ°’ : " + Float.MIN_VALUE);
        System.out.println("float μ΅œλŒ“κ°’ : " + Float.MAX_VALUE);

        System.out.println("double μ΅œμ†Ÿκ°’ : " + Double.MIN_VALUE);
        System.out.println("double μ΅œλŒ“κ°’ : " + Double.MAX_VALUE);
	}
}

κ²°κ³Ό

byte μ΅œμ†Ÿκ°’ : -128
byte μ΅œλŒ“κ°’ : 127
short μ΅œμ†Ÿκ°’ : -32768
short μ΅œλŒ“κ°’ : 32767
int μ΅œμ†Ÿκ°’ : -2147483648
int μ΅œλŒ“κ°’ : 2147483647
long μ΅œμ†Ÿκ°’ : -9223372036854775808
long μ΅œλŒ“κ°’ : 9223372036854775807
float μ΅œμ†Ÿκ°’ : 1.4E-45
float μ΅œλŒ“κ°’ : 3.4028235E38
double μ΅œμ†Ÿκ°’ : 4.9E-324
double μ΅œλŒ“κ°’ : 1.7976931348623157E308

 

λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λŠ” 값을 λŒ€μž…ν•˜λ©΄ μ–΄λ–»κ²Œ 될까?

public class RangeTest {
	public static void main(String[] args) {
        byte num = 1000;
        System.out.println(num);
	}
}
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from int to byte

νƒ€μž…μ„ λ°”κΎΈλΌν•œλ‹€.

 

 

🦸‍♀️ Primitive Typeκ³Ό Reference Type

μ €μž₯ν•  κ°’μ˜ μ’…λ₯˜μ— 따라 크게 κΈ°λ³Έν˜• primitive typeκ³Ό μ°Έμ‘°ν˜• reperence type λ‘κ°€μ§€λ‘œ λ‚˜λˆˆλ‹€.

primitive type

μ‹€μ œ κ°’(data)을 μ €μž₯

μ‚°μˆ  μ—°μ‚° κ°€λŠ₯

Stack에 μ €μž₯

 

reperence type

μ–΄λ–€ 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” μ£Όμ†Œ(memory address)λ₯Ό μ €μž₯

null λ˜λŠ” 객체의 μ£Όμ†Œ(4byte μ •μˆ˜) μ €μž₯

λ§Œμ•½ JVM이 32bitκ°€ μ•„λ‹ˆλΌ 64bit라면 μ°Έμ‘°ν˜• λ³€μˆ˜ ν¬κΈ°λŠ” 8byteκ°€ λœλ‹€.

C언어와 달리 μ°Έμ‘°ν˜• λ³€μˆ˜ κ°„ 연산을 ν•  수 μ—†λ‹€.

Heap에 μ €μž₯

 

 

🦸‍♀️ λ¦¬ν„°λŸ΄ literal

μƒμˆ˜μ™€ λ‹€λ₯΄λ‹€.

μƒμˆ˜λŠ” 값을 ν•œ 번 μ €μž₯ν•˜λ©΄ λ³€κ²½ν•  수 μ—†λŠ” μ €μž₯곡간

λ¦¬ν„°λŸ΄μ€ κ·Έ 자체둜 값을 μ˜λ―Έν•˜λŠ” 것이닀.

영문 사전 : 문자 κ·ΈλŒ€λ‘œμ˜ ν˜•νƒœ

 

λ¦¬ν„°λŸ΄μ—λ„ νƒ€μž…μ΄ μžˆλ‹€. λ³€μˆ˜μ˜ νƒ€μž…μ€ κ°’μ˜ νƒ€μž…(λ¦¬ν„°λŸ΄ νƒ€μž…)에 μ˜ν•΄ κ²°μ •λœλ‹€.

  λ¦¬ν„°λŸ΄ 접미사
λ…Όλ¦¬ν˜• false, true  
μ •μˆ˜ν˜• 123, 0b0101, 077, 0xFF, 100L L
μ‹€μˆ˜ν˜• 3.14, 3.0e8, 1.4f, 0xFF, 100L f, d
λ¬Έμžν˜• 'A', '1', '\n'  
λ¬Έμžμ—΄ "ABC", "123", "A", "true"  
// μ •μˆ˜ λ¦¬ν„°λŸ΄
int a = 15;
int number = 1_000; // 큰 수의 ν‘œν˜„ 및 인식을 μ‰½κ²Œ ν•˜κΈ° μœ„ν•΄ μ–Έλ”λ°”λ‘œ ꡬ뢄 κ°€λŠ₯

// μ‹€μˆ˜ λ¦¬ν„°λŸ΄
double f = 0.1234;

// 문자 λ¦¬ν„°λŸ΄
char a = 'L';

// λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄
String literal = "hello";

// λ…Όλ¦¬νƒ€μž… λ¦¬ν„°λŸ΄
boolean a = true;

 

μ •μˆ˜ν˜•κ³Ό μ‹€μˆ˜ν˜•μ€ νƒ€μž…μ΄ μ—¬λŸ¬κ°œλΌμ„œ μ ‘λ‘μ‚¬λ‚˜ 접미사λ₯Ό λΆ™μ—¬μ„œ νƒ€μž…μ„ κ΅¬λΆ„ν•œλ‹€.

 

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

JDK1.7λΆ€ν„° μ •μˆ˜ν˜• λ¦¬ν„°λŸ΄μ˜ 쀑간에 κ΅¬λΆ„μž(_)λ₯Ό λ„£μ„μˆ˜ 있게 λ˜μ–΄ 큰 숫자λ₯Ό νŽΈν•˜κ²Œ 읽을 수 μžˆλ‹€. 

int number = 1_000;

 

int : μ—†μŒ

long : l λ˜λŠ” L

16μ§„μˆ˜ : 0x λ˜λŠ” 0X (접두사)

8μ§„μˆ˜ : 0 (접두사)

 

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

float : f

double : d

 

λ¬Έμžν˜• λ¦¬ν„°λŸ΄

μž‘μ€ λ”°μ˜΄ν‘œλ‘œ 문자 ν•˜λ‚˜λ§Œ 감싼닀.

λΉˆλ¬Έμžμ—΄μ€ 넣을 수 μ—†λ‹€.

μœ λ‹ˆμ½”λ“œλ‘œ λ³€ν™˜λ˜κ³  μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ char νƒ€μž… λ³€μˆ˜μ— μ €μž₯λœλ‹€.

μ •μˆ˜ λ¦¬ν„°λŸ΄μ„ μ΄μš©ν•˜μ—¬ μœ λ‹ˆμ½”λ“œλ₯Ό char νƒ€μž… λ³€μˆ˜μ— 직접 λŒ€μž…ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€.

(좜λ ₯ν•  λ•Œ μœ λ‹ˆμ½”λ“œ λ””μ½”λ”© 방식을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.)

 

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

큰 λ”°μ˜΄ν‘œλ‘œ 감싼닀.

λΉˆλ¬Έμžμ—΄μ„ λ„£λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

 

String은 ν΄λž˜μŠ€μ΄λ―€λ‘œ new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜μ§€λ§Œ κ°„λ‹¨νžˆ μ‚¬μš©ν•΄λ„ λœλ‹€.

new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  경우 λ©”λͺ¨λ¦¬ 할당이 이루어져 항상 μƒˆλ‘œμš΄ String μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€λ§Œ

λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ€ 이미 μ‘΄μž¬ν•˜λŠ” 것을 μž¬μ‚¬μš©ν•˜λŠ” 것이닀.

String str1 = "abc";

String str2 = "abc";

λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ "abc"의 μ£Όμ†Œκ°€ str1κ³Ό srt2에 μ €μž₯λ˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

 

λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ€ 컴파일 μ‹œμ— 클래슀 νŒŒμΌμ— μ €μž₯λœλ‹€. (JVMλ‚΄μ˜ constant pool)

같은 λ‚΄μš©μ˜ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ€ ν•œλ²ˆλ§Œ μ €μž₯λœλ‹€.

λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ = String μΈμŠ€ν„΄μŠ€ = ν•œλ²ˆ μƒμ„±μ‹œ λ‚΄μš©λ³€κ²½ x = ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€ κ³΅μœ ν•˜λ©΄ 됨 !

 

πŸ€”μ™œ char은 μ•ˆλ˜κ³  Stringμ—λ§Œ λΉˆλ¬Έμžμ—΄μ„ λ„£μ„μˆ˜ μžˆμ„κΉŒ?

λ³€μˆ˜ μ„ μ–Έμ‹œ 각 νƒ€μž…μ˜ κΈ°λ³Έκ°’μœΌλ‘œ μ΄ˆκΈ°ν™” ν•˜μ§€λ§Œ

String은 μ°Έμ‘°ν˜• νƒ€μž…μ˜ null λ³΄λ‹€λŠ” 빈 λ¬Έμžμ—΄λ‘œ

charν˜•μ€ 기본값인 \u0000λŒ€μ‹  곡백으둜 μ΄ˆκΈ°ν™” ν•˜λŠ” 것이 보톡이닀. 

 

 

🦸‍♀️ λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”ν•˜λŠ” 방법

λ³€μˆ˜

ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•  수 μžˆλŠ” μ €μž₯곡간

λ³€μˆ˜μ„ μ–Έ

λ³€μˆ˜νƒ€μž… λ³€μˆ˜λͺ…;

int x;

xλΌλŠ” 이름을 가진 μ €μž₯곡간이 생긴닀.

 

λ³€μˆ˜λͺ… μ‚¬μš© κ·œμΉ™

  • λ³€μˆ˜λͺ…은 숫자둜 μ‹œμž‘ x
  • _와 $문자 μ΄μ™Έμ˜ 특수문자 μ‚¬μš© x
  • μžλ°” ν‚€μ›Œλ“œ λ³€μˆ˜λͺ… μ‚¬μš© x (int, class, return λ“±λ“±)

 

μ΄ˆκΈ°ν™”

λ³€μˆ˜λͺ… = κ°’;

x = 10;

λ³€μˆ˜ x에 10이 μ €μž₯

 

λŒ€μž…μ—°μ‚°μž, assignment operator,  =

였λ₯Έμͺ½μ˜ 값을 μ™Όμͺ½μ— μ €μž₯

 

 

μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”

int x = 10;

 

2차원 λ°°μ—΄ μ„ μ–Έ

보톡 ν…Œμ΄λΈ” ν˜•νƒœμ˜ 데이터λ₯Ό λ‹΄λŠ”λ° μ‚¬μš©λœλ‹€.

 

νƒ€μž…[ ][ ] λ³€μˆ˜λͺ…;

νƒ€μž… λ³€μˆ˜λͺ…[ ][ ];

νƒ€μž…[ ] λ³€μˆ˜λͺ…[ ];

 

int[][] score;
int score[][];
int[] score[];

 

2차원 λ°°μ—΄ 생성

[ν–‰][μ—΄]둜 ν‘œν˜„

int[][] score = new int[4][3]

4ν–‰ 3μ—΄, 12개의 int 값을 μ €μž₯ν•  수 μžˆλŠ” 곡간이 생긴닀.

int 기본값인 0으둜 μ΄ˆκΈ°ν™” λœλ‹€.

 

 

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

λ³€μˆ˜μ˜ μŠ€μ½”ν”„

 ν”„λ‘œκ·Έλž¨μƒμ—μ„œ λ³€μˆ˜κ°€ μ‚¬μš©κ°€λŠ₯ν•œ λ²”μœ„

 

λΌμ΄ν”„νƒ€μž„  Lifetime

ν•΄λ‹Ή λ³€μˆ˜κ°€ μ–Έμ œκΉŒμ§€ λ©”λͺ¨λ¦¬μ— μ‚΄μ•„μžˆλŠ”μ§€ 의미

 

μ „μ—­λ³€μˆ˜ Global variable

ν•¨μˆ˜ 밖에 μ„ μ–Έν•˜μ—¬ 클래슀 μ „μ²΄μ—μ„œ μ‚¬μš©κ°€λŠ₯ν•œ λ³€μˆ˜

 

클래슀 λ³€μˆ˜ Class variable

클래슀 μ˜μ—­μ—μ„œ μ„ μ–Έν•˜μ—¬ ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— λ‘œλ“œλ λ•Œ 생성

static 이 λΆ™μŒ

λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ— κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©

μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ μ‚¬μš©κ°€λŠ₯

λΌμ΄ν”„νƒ€μž„μ€ ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°„ν›„λΆ€ν„° ν”„λ‘œκ·Έλž¨ μ’…λ£Œμ‹œκΉŒμ§€

 

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

클래슀 μ˜μ—­μ—μ„œ μ„ μ–Έν•˜μ—¬ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ λ•Œ 생성

λΌμ΄ν”„νƒ€μž„μ€ μΈμŠ€ν„΄μŠ€ 생성후뢀터 μΈμŠ€ν„΄μŠ€ν™”ν•œ 객체가 μ‚¬λΌμ§ˆ λ•ŒκΉŒμ§€

 

μ§€μ—­λ³€μˆ˜ Local variable

ν•¨μˆ˜ 속에 μ„ μ–Έν•˜μ—¬ ν•΄λ‹Ή ν•¨μˆ˜ μ†μ—μ„œλ§Œ μ‚¬μš©κ°€λŠ₯ν•œ λ³€μˆ˜

λ³€μˆ˜ 선언문이 μˆ˜ν–‰λ˜μ—ˆμ„λ•Œ 생성

λΌμ΄ν”„νƒ€μž„μ€ λ³€μˆ˜ μ„ μ–Έ ν›„ 블둝을 λ²—μ–΄λ‚  λ•ŒκΉŒμ§€

 

πŸ€” static λ³€μˆ˜λŠ” μ™œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μ—†λŠ”κ°€?

클래슀 λ³€μˆ˜λŠ” ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— λ‘œλ“œλ  λ•Œ μƒμ„±λ˜κ³  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν• λ•Œ μƒμ„±λœλ‹€.

 

 

🦸‍♀️ νƒ€μž… λ³€ν™˜, μΊμŠ€νŒ… 그리고 νƒ€μž… ν”„λ‘œλͺ¨μ…˜

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

λ³€μˆ˜ λ˜λŠ” λ¦¬ν„°λŸ΄μ˜ νƒ€μž…μ„ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것

μžλ™ νƒ€μž…λ³€ν™˜(λ¬΅μ‹œμ )κ³Ό κ°•μ œ νƒ€μž…λ³€ν™˜(λͺ…μ‹œμ )이 μžˆλ‹€.

boolean은 νƒ€μž…λ³€ν™˜μ„ ν•  수 μ—†λ‹€.

 

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

μž‘μ€ 데이터 값을 더 큰 데이터 νƒ€μž…μ— ν• λ‹Ήν•˜λŠ” κ²½μš°μ—λ§Œ 일어남

byteν˜• → shortν˜• → intν˜• → longν˜• → floatν˜• → doubleν˜•

                     charν˜•  → intν˜•

λ©”λͺ¨λ¦¬ κ³΅κ°„κ³ΌλŠ” λ³„κ°œλ‘œ μžλ£Œν˜•μ΄ ν‘œν˜„ν•  수 μžˆλŠ” 숫자의 λ²”μœ„κ°€ 기쀀이닀.

λ”°λΌμ„œ 8byte인 long 보닀 4byte인 floatκ°€ 더 크닀.(ν‘œν˜„ν•  수 μžˆλŠ” 숫자의 λ²”μœ„κ°€ 더 크기 λ•Œλ¬Έμ—)

 

κ°•μ œ νƒ€μž…λ³€ν™˜

(λ³€ν™˜ν• νƒ€μž…)λ³€ν™˜ν•  데이터;

char a = 'a';
int num = 7;
a = (char)num;

 

μΊμŠ€νŒ… Casting

κ°•μ œλ‘œ 큰 데이터 νƒ€μž…μ„ μž‘μ€ 데이터 νƒ€μž…μœΌλ‘œ μͺΌκ°œμ„œ μ €μž₯

λ°μ΄ν„°μ˜ μ†μ‹€μ΄λ‚˜ λ³€ν˜•μ΄ μƒκΈΈμˆ˜ μžˆλ‹€.

 

νƒ€μž… ν”„λ‘œλͺ¨μ…˜ Type promotion

μž‘μ€ νƒ€μž…κ°’ → 큰 νƒ€μž…μ— ν• λ‹Ή

λ³€ν™˜ μ „ν›„ κ°’ 동일

μžλ™ ν˜•λ³€ν™˜ 일어남

 

 

🦸‍♀️ 1μ°¨ 및 2μ°¨ λ°°μ—΄ μ„ μ–Έν•˜κΈ°

λ°°μ—΄ Array

같은 νƒ€μž…μ˜ λ³€μˆ˜λ₯Ό ν•˜λ‚˜μ˜ 묢음으둜 λ‹€λ£¨λŠ” 것

// 배열을 μ‚¬μš©ν•˜μ§€ μ•Šμ„ λ•Œ
int score1, score2, score3, score4, score5;

// 배열을 μ‚¬μš©ν•  λ•Œ
int[] score = new int[5];

scoreλŠ” 배열에 ν•„μš”ν•œ μ°Έμ‘°λ³€μˆ˜μ΄μ§€ 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ 곡간은 μ•„λ‹ˆλ‹€.

[κ·Έλ¦Ό]

 

μ„ μ–Έ

μƒμ„±λœ 배열을 λ‹€λ£° μ°Έμ‘°λ³€μˆ˜λ₯Ό μœ„ν•œ 곡간 λ§Œλ“€κΈ°

 

νƒ€μž…[ ] λ³€μˆ˜λͺ…;

int[] score;
String[] name;

 

νƒ€μž… λ³€μˆ˜λͺ…[ ];

int score[];
String name[];

 

생성

μ‹€μ œ μ €μž₯ 곡간 생성

 

νƒ€μž…[ ] λ³€μˆ˜λͺ…;                       // μ„ μ–Έ

λ³€μˆ˜λͺ… = new νƒ€μž…[길이];  // 배열생성

int[] score;
score = new int[5];

 

μ„ μ–Έκ³Ό 생성

νƒ€μž…[ ] λ³€μˆ˜λͺ… = new νƒ€μž…[길이];

int[] score = new int[5];

 

인덱슀 index

λ°°μ—΄μ˜ μš”μ†Œλ§ˆλ‹€ 뢙여진 일련번호

1μ•„λ‹ˆκ³  0λΆ€ν„° μ‹œμž‘

 

λ°°μ—΄μ˜ μš”μ†Œ element

μƒμ„±λœ λ°°μ—΄μ˜ 각 μ €μž₯곡간

μ ‘κ·Ό 방법 : λ°°μ—΄λͺ…[인덱슀];

 

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

배열은 생성과 λ™μ‹œμ— μžλ™μœΌλ‘œ κΈ°λ³Έκ°’μœΌλ‘œ μ΄ˆκΈ°ν™”λ¨

μ›ν•˜λŠ” 값을 λ„£μ–΄ 생성과 μ΄ˆκΈ°ν™”λ₯Ό λ™μ‹œμ—λ„ κ°€λŠ₯

μ„ μ–Έκ³Ό 생성을 λ”°λ‘œ ν•  κ²½μš°μ—λŠ” newμ—°μ‚°μž μƒλž΅ λΆˆκ°€λŠ₯

int[] score = new int[]{ 50, 60, 70, 80, 90 }

// new μ—°μ‚°μž μƒλž΅κ°€λŠ₯
int[] score = { 50, 60, 70, 80, 90 }

 

 

🦸‍♀️ νƒ€μž… μΆ”λ‘ , var

var

  • Java 10μ—μ„œ λ„μž…λ˜μ—ˆλ‹€.
  • λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ νƒ€μž…μ„ μƒλž΅ν•  수 μžˆλ‹€.
  • μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ μΆ”λ‘ ν•œλ‹€. → μΆ”λ‘ ν•  수 μ—†λŠ” 경우 컴파일 μ—λŸ¬
  • μ§€μ—­λ³€μˆ˜μ΄λ‹€.
  • κ°œλ°œμžκ°€ μ‰½κ²Œ νƒ€μž…μ„ μœ μΆ”ν•  수 μ—†κΈ° λ•Œλ¬Έμ— μ΄ˆκΈ°ν™”λ₯Ό λ™μ‹œμ— ν•΄μ€˜μ•Ό ν•œλ‹€.
  • null둜 μ΄ˆκΈ°ν™” ν•  수 μ—†λ‹€. → 컴파일 μ—λŸ¬
  • λ°°μ—΄κ³Ό Lambda에 μ‚¬μš©ν•  수 μ—†λ‹€.

 

νƒ€μž…μΆ”λ‘ 

  • 정적 타이핑을 μ§€μ›ν•˜λŠ” μ–Έμ–΄μ—μ„œ, νƒ€μž…μ΄ 정해지지 μ•Šμ€ λ³€μˆ˜μ— λŒ€ν•΄
    μ»΄νŒŒμΌλŸ¬κ°€ λ¦¬ν„°λŸ΄ 값을 톡해 λ³€μˆ˜μ˜ νƒ€μž…μ„ 슀슀둜 μ°Ύμ•„λ‚Ό 수 μžˆλ„λ‘ ν•˜λŠ” κΈ°λŠ₯
  • νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
    • μ½”λ“œλŸ‰μ„ 쀄인닀.
    • μ½”λ“œμ˜ 가독성을 높일 수 μžˆλ‹€.
  • Java 10λΆ€ν„° var ꡬ문이 생기고 μžλ°” 11 λΆ€ν„°λŠ” 이λ₯Ό ν†΅ν•œ λžŒλ‹€ νƒ€μž… 지원도 생겼닀.
    μ»΄νŒŒμΌλŸ¬λŠ” κ°œλ°œμžκ°€ μž…λ ₯ν•œ μ΄ˆκΈ°ν™” 값을 톡해 νƒ€μž…μ„ μœ μΆ”ν•˜λŠ”λ°,
    varλŠ” μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ μœ μΆ”ν•  수 μžˆλ„λ‘ λ°˜λ“œμ‹œ 데이터λ₯Ό μ΄ˆκΈ°ν™” ν•΄μ•Ό ν•œλ‹€.

 

 

 

μ°Έμ‘°

2μ£Όμ°¨ 과제: μžλ°” 데이터 νƒ€μž…, λ³€μˆ˜ 그리고 λ°°μ—΄

남ꢁ성, μžλ°”μ˜ 정석 기초편, λ„μš°μΆœνŒ, 2019

κΈ°λ³Έν˜•κ³Ό μ°Έμ‘°ν˜• - https://velog.io/@doli0913/κΈ°λ³Έν˜•κ³Ό-μ°Έμ‘°ν˜•

νƒ€μž…λ³€ν™˜ - https://velog.io/@rabbit/νƒ€μž…-λ³€ν™˜-νƒ€μž…-μΊμŠ€νŒ…-νƒ€μž…-ν”„λ‘œλͺ¨μ…˜

var - https://codechacha.com/ko/java-local-variable-type-inference/

νƒ€μž…μΆ”λ‘  - https://velog.io/@bk_log/Java-νƒ€μž…-μΆ”λ‘