λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Java/μžλ°”μ˜ 정석

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

by oliviarla 2022. 9. 3.
 

ν”„λ¦¬λ―Έν‹°λΈŒ νƒ€μž… μ’…λ₯˜μ™€ κ°’μ˜ λ²”μœ„ 그리고 κΈ°λ³Έ κ°’

- νƒ€μž… μ’…λ₯˜

총 8가지: λ…Όλ¦¬ν˜•(bool), λ¬Έμžν˜•(char), μ •μˆ˜ν˜•(byte, short, int, long), μ‹€μˆ˜ν˜•(float, double)

 

- κ°’μ˜ λ²”μœ„

- κΈ°λ³Έκ°’

byte             0
short            0
int              0
long             0L
float            0.0f
double           0.0d
boolean          false
char            '\u0000'

ν”„λ¦¬λ―Έν‹°λΈŒ νƒ€μž…κ³Ό 레퍼런슀 νƒ€μž…

ν”„λ¦¬λ―Έν‹°λΈŒ νƒ€μž…(κΈ°λ³Έν˜•)

- μ‹€μ œ 값을 μ €μž₯ν•œλ‹€.

레퍼런슀 νƒ€μž… (μ°Έμ‘°ν˜•)

- μ–΄λ–€ 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œ(객체의 μ£Όμ†Œ)λ₯Ό μ €μž₯ν•œλ‹€.

- μ„ μ–Έ μ‹œ 클래슀 이름을 μ°Έμ‘° λ³€μˆ˜μ˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©

λ¦¬ν„°λŸ΄

μƒμˆ˜

- ν•œλ²ˆ 값을 μ €μž₯ν•˜λ©΄ λ‹€λ₯Έ κ°’μœΌλ‘œ λ³€κ²½ν•  수 μ—†λŠ” μ €μž₯ 곡간

- final을 μ‚¬μš©ν•˜μ—¬ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•œλ‹€.

- λ¦¬ν„°λŸ΄μ— μ˜λ―ΈμžˆλŠ” 이름을 λΆ™μ—¬μ½”λ“œμ˜ 이해와 μˆ˜μ •μ„ μ‰½κ²Œ λ§Œλ“¦

λ¦¬ν„°λŸ΄

- κ·Έ 자체둜 값을 μ˜λ―Έν•˜λŠ” 것

- ex) final int MAX_VALUE= 30; 일 λ•Œ 30이 λ¦¬ν„°λŸ΄μ΄λ‹€. int value= 10; 일 λ•Œμ—λ„ 10이 λ¦¬ν„°λŸ΄μ΄λ‹€.

 

λ¦¬ν„°λŸ΄μ˜ νƒ€μž…

μ •μˆ˜ν˜•κ³Ό μ‹€μˆ˜ν˜•

- 2μ§„μˆ˜μΌ 경우 접두사 '0b'

- 8μ§„μˆ˜μΌ 경우 접두사 '0'

- 16μ§„μˆ˜μΌ 경우 접두사 '0x'

 

- long νƒ€μž…μ˜ λ¦¬ν„°λŸ΄μΌ 경우 접미사 'l' λ˜λŠ” 'L' 

- float νƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ—λŠ” 접미사 'f' λ˜λŠ” 'F'

- double νƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ—λŠ” 접미사 'd' λ˜λŠ” 'D' μ΄μ§€λ§Œ μƒλž΅ κ°€λŠ₯

λ¬Έμžμ—΄

- 문자 ν•˜λ‚˜λ₯Ό κ°μŒ€ λ•Œ μž‘μ€ λ”°μ˜΄ν‘œ μ‚¬μš©

- λ¬Έμžμ—΄μ„ κ°μŒ€ λ•Œ 큰 λ”°μ˜΄ν‘œ μ‚¬μš©

- κΈ°λ³Έν˜• νƒ€μž…μ˜ 값을 string으둜 λ°”κΏ€ λ•Œ 빈 λ¬Έμžμ—΄ ""λ₯Ό 더해주면 됨

- κΈ°λ³Έν˜• νƒ€μž… + λ¬Έμžμ—΄ νƒ€μž… -> κΈ°λ³Έν˜• νƒ€μž…μ΄ λ¬Έμžμ—΄ νƒ€μž…μœΌλ‘œ λ³€ν™˜λœ λ‹€μŒμ— 두 λ¬Έμžμ—΄μ΄ 더해짐

 

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

λ³€μˆ˜: 값을 μ €μž₯ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ 곡간

- λ³€μˆ˜ νƒ€μž…μ„ μ§€μ •ν•˜κ³  λ³€μˆ˜ 이름을 λΆ™μ—¬μ£Όμ–΄ μ„ μ–Έν•œλ‹€.

- λ³€μˆ˜ μ„ μ–Έ μ‹œ, λ©”λͺ¨λ¦¬μ˜ 빈 곡간에 λ³€μˆ˜ νƒ€μž…μ— μ•Œλ§žλŠ” 크기의 μ €μž₯ 곡간이 ν™•λ³΄λ˜κ³ , λ³€μˆ˜ 이름을 톡해 ν•΄λ‹Ή μ €μž₯ 곡간 μ‚¬μš© κ°€λŠ₯

 

- μ΄ˆκΈ°ν™”λž€, λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μ „ 처음으둜 값을 μ§€μ •ν•˜λŠ” 것

- λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ ν›„ λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™” ν•„μš”

- λŒ€μž… μ—°μ‚°μž '='을 μ΄μš©ν•΄ μ™Όμͺ½μ—λŠ” λ³€μˆ˜, 였λ₯Έμͺ½μ—λŠ” ν• λ‹Ήν•˜λ €λŠ” 값을 지정해 μ΄ˆκΈ°ν™”ν•œλ‹€.

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

- λ³€μˆ˜ μŠ€μ½”ν”„: ν•΄λ‹Ή λ³€μˆ˜κ°€ μ ‘κ·Όν•  수 μžˆλŠ” λ³€μˆ˜, 객체 그리고 ν•¨μˆ˜μ˜ 집합을 의미

- λ³€μˆ˜μ˜ μ’…λ₯˜

  • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜: μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ λ•Œ μƒμ„±λœλ‹€. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ 값을 μ½κ±°λ‚˜ μ €μž₯ν•˜λ €λ©΄ μΈμŠ€ν„΄μŠ€λ₯Ό λ¨Όμ € 생성해야 ν•œλ‹€. 각각의 μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ 고유의 값을 가진닀.
  • 클래슀 λ³€μˆ˜: μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ— static을 뢙인닀. ν•œ 클래슀의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅ν†΅λœ 값을 κ³΅μœ ν•˜κ²Œ λœλ‹€. ν΄λž˜μŠ€κ°€ λ‘œλ”©λ λ•Œ 생성 (λ©”λͺ¨λ¦¬μ— λ”± ν•œλ²ˆλ§Œ μ˜¬λΌκ°„λ‹€.)되고 μ’…λ£Œ 될 λ•Œ κΉŒμ§€ μœ μ§€λœλ‹€. public을 뢙이면 같은 ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ μ–΄λ””μ„œλ“  μ ‘κ·Όν•  수 μžˆλŠ” μ „μ—­ λ³€μˆ˜κ°€ λœλ‹€. μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  ν΄λž˜μŠ€μ΄λ¦„.ν΄λž˜μŠ€λ³€μˆ˜λͺ… 을 ν†΅ν•΄μ„œ μ ‘κ·Όκ°€λŠ₯ν•˜λ‹€.
  • μ§€μ—­λ³€μˆ˜: λ©”μ„œλ“œ λ‚΄μ—μ„œ μ„ μ–Έλ˜κ³  λ©”μ„œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. λ©”μ„œλ“œκ°€ μ‹€ν–‰λ λ•Œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ή λ°›κ³ , λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ†Œλ©Έλ˜μ–΄ μ‚¬μš© λΆˆκ°€ν•˜λ‹€.
public class test {
    int instVar; // μΈμŠ€ν„΄μŠ€ λ³€μˆ˜    
    static int classVar; // 클래슀 λ³€μˆ˜
    
    void method() {
    	int localVar; // 지역 λ³€μˆ˜
    }
}

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

ν˜•λ³€ν™˜ (casting)

- μ„œλ‘œ λ‹€λ₯Έ νƒ€μž… κ°„μ˜ 연산을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ νƒ€μž…μ„ 일치 μ‹œμΌœμ•Ό ν•œλ‹€. 이 λ•Œ ν˜•λ³€ν™˜μœΌλ‘œ λ³€μˆ˜λ‚˜ λ¦¬ν„°λŸ΄μ˜ νƒ€μž…μ„ λ³€ν™˜ν•΄μ•Ό ν•œλ‹€.

- κΈ°λ³Έν˜•μ—μ„œ boolean을 μ œμ™Έν•œ λ‚˜λ¨Έμ§€ νƒ€μž…λ“€μ€ μ„œλ‘œ ν˜•λ³€ν™˜ κ°€λŠ₯

- 큰 νƒ€μž…μ—μ„œ μž‘μ€ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 경우 κ°’μ˜ 손싀이 λ°œμƒν•  수 μžˆλ‹€

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

- 크기가 더 μž‘μ€ μžλ£Œν˜•μ„ 더 큰 μžλ£Œν˜•μ— λŒ€μž…ν•  λ•Œ, μžλ™μœΌλ‘œ μž‘μ€ μžλ£Œν˜•μ΄ 큰 μžλ£Œν˜•μœΌλ‘œ λ³€ν™˜λ˜λŠ” ν˜„μƒ

클래슀 κ°„ ν˜•λ³€ν™˜

- λ‹€ν˜•μ„±μ΄λΌλŠ” μ„±μ§ˆμ„ ν†΅ν•΄μ„œ 두 ν΄λž˜μŠ€κ°€ 상속 관계일 κ²½μš°μ—λ§Œ ν˜•λ³€ν™˜ κ°€λŠ₯

- λΆ€λͺ¨ν΄λž˜μŠ€λŠ” λͺ…μ‹œμ μΈ νƒ€μž…μΊμŠ€νŒ… 없이 μžμ‹ 클래슀둜 μ‚¬μš©λ  수 있음 (upcasting)

- μžμ‹ν΄λž˜μŠ€λŠ” λͺ…μ‹œμ μΈ νƒ€μž…μΊμŠ€νŒ…μ΄ μžˆλ‹€λ©΄ λΆ€λͺ¨ 클래슀둜 μ‚¬μš© κ°€λŠ₯ (downcasting)

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

- 1차원 λ°°μ—΄

λ°°μ—΄ μ„ μ–Έ ν›„ 생성

  • νƒ€μž…[] 배열이름;
  • 배열이름 = new νƒ€μž…[배열길이];

λ°°μ—΄ μ„ μ–Έκ³Ό λ™μ‹œμ— 생성

  • νƒ€μž…[] 배열이름 = new νƒ€μž…[배열길이];

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

  • νƒ€μž…[] 배열이름 = {λ°°μ—΄μš”μ†Œ1, λ°°μ—΄μš”μ†Œ2, ...};

λ§Œμ•½ λ°°μ—΄μ˜ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”λ₯Ό λ”°λ‘œ 진행해야 ν•  κ²½μš°λ‚˜ λ©”μ†Œλ“œμ˜ 인수둜 배열을 μ „λ‹¬ν•˜λ©΄μ„œ μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•  경우 λ‹€μŒκ³Ό 같이 μ΄ˆκΈ°ν™”

  •  νƒ€μž…[] 배열이름 = new νƒ€μž…[]{λ°°μ—΄μš”μ†Œ1, λ°°μ—΄μš”μ†Œ2, ...};

- 2차원 λ°°μ—΄

λ°°μ—΄ μ„ μ–Έ

  • νƒ€μž…[][] 배열이름;
  • νƒ€μž… 배열이름[][];
  • νƒ€μž…[] 배열이름[];

λ°°μ—΄ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”

νƒ€μž… 배열이름[μ—΄μ˜κΈΈμ΄][ν–‰μ˜κΈΈμ΄] = {

    {λ°°μ—΄μš”μ†Œ[0][0], λ°°μ—΄μš”μ†Œ[0][1], ...},

    {λ°°μ—΄μš”μ†Œ[1][0], λ°°μ—΄μš”μ†Œ[1][1], ...},

    {λ°°μ—΄μš”μ†Œ[2][0], λ°°μ—΄μš”μ†Œ[2][1], ...},

    ...

};

 

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

νƒ€μž… μΆ”λ‘ 

κ°œλ°œμžκ°€ λ³€μˆ˜μ˜ νƒ€μž…μ„ λͺ…μ‹œμ μœΌλ‘œ 적어주지 μ•Šκ³ λ„, μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ λŒ€μž…λœ λ¦¬ν„°λŸ΄λ‘œ λ³€μˆ˜μ˜ νƒ€μž…μ„ μΆ”λ‘ ν•˜λŠ” 것

 

var

- μ΄ˆκΈ°ν™” 값이 μžˆλŠ” μ§€μ—­λ³€μˆ˜λ‘œλ§Œ μ„ μ–Έ κ°€λŠ₯

- λ©€λ²„λ³€μˆ˜, λ˜λŠ” λ©”μ†Œλ“œμ˜ νŒŒλΌλ―Έν„°, 리턴 νƒ€μž…μœΌλ‘œ μ‚¬μš©μ΄ λΆˆκ°€λŠ₯

- 컴파일 μ‹œμ μ—, μ»΄νŒŒμΌλŸ¬κ°€ 였λ₯Έμͺ½μ˜ μ΄ˆκΈ°ν™”κ°’ λ¦¬ν„°λŸ΄λ‘œ νƒ€μž…μ„ μΆ”λ‘ ν•˜μ—¬, λ°”μ΄νŠΈ μ½”λ“œλ‘œ λ³€κ²½ν•  λ•Œ var μžλ¦¬μ— νƒ€μž…μ„ λͺ…μ‹œ

- μ–΄λ– ν•œ νƒ€μž…λ„ μ•„λ‹ˆκ³ , ν΄λž˜μŠ€μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ˜ˆμ•½μ–΄κ°€ μ•„λ‹ˆλ―€λ‘œ λ³€μˆ˜λͺ…μœΌλ‘œ μ‚¬μš© κ°€λŠ₯

- 쀑간에 νƒ€μž… λ³€κ²½ λΆˆκ°€

 

 

좜처

https://drinkcoldbrew.tistory.com/2

http://www.tcpschool.com/java/java_array_oneDimensional

https://catch-me-java.tistory.com/19

λŒ“κΈ€