[JAVA] 14. Object 클래슀, String 클래슀

2022. 5. 3. 22:22ㆍJAVA/μžλ°”μ˜ 정석

728x90

1️⃣ Object 클래슀 

Object ν΄λž˜μŠ€λŠ” λͺ¨λ“  클래슀의 졜고 쑰상이기 λ•Œλ¬Έμ— Object 클래슀의 멀버듀은 λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ λ°”λ‘œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. 

protected Object clone() 객체 μžμ‹ μ˜ 볡사본을 λ°˜ν™˜ν•œλ‹€. 
public boolean equals(Object obj) 객체 μžμ‹ κ³Ό 객체 objκ°€ 같은 객체인지 μ•Œλ €μ€€λ‹€. (κ°™μœΌλ©΄ true)
protected void finalize() 객체가 μ†Œλ©Έλ  λ•Œ 가비지 컬렉터에 μ˜ν•΄ μžλ™μ μœΌλ‘œ ν˜ΈμΆœλœλ‹€. 
μ΄λ•Œ μˆ˜ν–‰λ˜μ–΄μ•Όν•˜λŠ” μ½”λ“œκ°€ μžˆμ„ λ•Œ μ˜€λ²„λΌμ΄λ”©ν•œλ‹€. 
public Class getClass() 객체 μžμ‹ μ˜ 클래슀 정보λ₯Ό λ‹΄κ³  μžˆλŠ” Class μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•œλ‹€. 
public int hashCode() 객체 μžμ‹ μ˜ ν•΄μ‹œμ½”λ“œλ₯Ό λ°˜ν™˜ν•œλ‹€. 
public String toString() 객체 μžμ‹ μ˜ 정보λ₯Ό λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. 
public void notify() 객체 μžμ‹ μ„ μ‚¬μš©ν•˜λ €κ³  κΈ°λ‹€λ¦¬λŠ” 쓰데λ₯Ό ν•˜λ‚˜λ§Œ κΉ¨μš΄λ‹€. 
public void notifyAll() 객체 μžμ‹ μ„ μ‚¬μš©ν•˜λ €κ³  κΈ°λ‹€λ¦¬λŠ” λͺ¨λ“  μ“°λ ˆλ“œλ₯Ό κΉ¨μš΄λ‹€.
public void wait() 
public void wait(long timeout)
public void wait(long timeout, int nanos)
λ‹€λ₯Έ μ“°λ ˆλ“œκ°€ notify() λ‚˜ notifyAll() 을 ν˜ΈμΆœν•  λ•ŒκΉŒμ§€ ν˜„μž¬ μ“°λ ˆλ“œλ₯Ό λ¬΄ν•œνžˆ λ˜λŠ” μ§€μ •λœ μ‹œκ°„ λ™μ•ˆ κΈ°λ‹€λ¦¬κ²Œ ν•œλ‹€. 

-> μ ‘κ·Όμ œμ–΄μžκ°€ protected 인 κ²½μš°μ—λŠ” λ‹€λ₯Έ κ³³μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ˜€λ²„λΌμ΄λ”©ν•΄μ„œ public 으둜 λ°”κΏ”μ„œ μ‚¬μš©ν•΄μ•Όν•œλ‹€. 

 

 

- equals(Object obj)

: λ§€κ°œλ³€μˆ˜λ‘œ 객체의 μ°Έμ‘°λ³€μˆ˜λ₯Ό λ°›μ•„μ„œ λΉ„κ΅ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό boolean κ°’μœΌλ‘œ μ•Œλ €μ£ΌλŠ” 역할을 ν•œλ‹€. 

μ„œλ‘œ λ‹€λ₯Έ 두 객체λ₯Ό equals λ©”μ„œλ“œλ‘œ λΉ„κ΅ν•˜λ©΄ 항상 false λ₯Ό 결과둜 μ–»κ²Œ λœλ‹€. 

false

-> λ‘κ°œμ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•œ λ‹€μŒμ— equals λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄μ„œ 두 μΈμŠ€ν„΄μŠ€λ₯Ό λΉ„κ΅ν•˜λ„λ‘ ν•˜μ˜€λ‹€.

equals λ©”μ„œλ“œλŠ” μ£Όμ†Œκ°’μœΌλ‘œ 비ꡐλ₯Ό ν•˜κΈ° λ•Œλ¬Έμ— 두 Value μΈμŠ€ν„΄μŠ€μ˜ λ©€λ²„λ³€μˆ˜ value 값이 10으둜 같을지라도 equals λ©”μ„œλ“œλ‘œ λΉ„κ΅ν•œ κ²°κ³ΌλŠ” false 일 μˆ˜λ°–μ— μ—†λ‹€.

 

-> equals λ©”μ„œλ“œκ°€ Person μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œκ°’μ΄ μ•„λ‹Œ λ©€λ²„λ³€μˆ˜ id의 값을 λΉ„κ΅ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄ equals λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•΄μ„œ 같은 id 값을 가지고 μžˆλ‹€λ©΄ true값을 얻을 수 μžˆλ„λ‘ ν–ˆλ‹€. 

 

 

- hashCode() : 객체의 ν•΄μ‹œμ½”λ“œλ₯Ό λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€. 

이 λ©”μ„œλ“œλŠ” 해싱기법에 μ‚¬μš©λ˜λŠ” ν•΄μ‹œν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•œ 것이닀. 

해싱은 데이터 관리 기법 μ€‘μ˜ ν•˜λ‚˜μΈλ° λ‹€λŸ‰μ˜ 데이터λ₯Ό μ €μž₯ν•˜κ³  κ²€μƒ‰ν•˜λŠ”λ° μœ μš©ν•˜λ‹€. 

ν•΄μ‹œν•¨μˆ˜λŠ” μ°Ύκ³ μžν•˜λŠ” 값을 μž…λ ₯ν•˜λ©΄, κ·Έ 값이 μ €μž₯된 μœ„μΉ˜λ₯Ό μ•Œλ €μ£ΌλŠ” ν•΄μ‹œμ½”λ“œλ₯Ό λ°˜ν™˜ν•œλ‹€. 

 

일반적으둜 ν•΄μ‹œμ½”λ“œκ°€ 같은 두 객체가 μ‘΄μž¬ν•˜λŠ” 것이 κ°€λŠ₯ν•˜μ§€λ§Œ Object ν΄λž˜μŠ€μ— μ •μ˜λœ hashcodeλ©”μ„œλ“œλŠ” 객체의 μ£Όμ†Œκ°’μœΌλ‘œ ν•΄μ‹œμ½”λ“œλ₯Ό λ§Œλ“€μ–΄ λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ— 32bit JVM μ—μ„œλŠ” μ„œλ‘œ λ‹€λ₯Έ 두 κ°μ²΄λŠ” κ²°μ½” 같은 ν•΄μ‹œμ½”λ“œλ₯Ό κ°€μ§ˆ 수 μ—†μ—ˆμ§€λ§Œ, 64 bit JVMμ—μ„œλŠ” 8byte μ£Όμ†Œκ°’μœΌλ‘œ ν•΄μ‹œμ½”λ“œλ₯Ό λ§Œλ“€κΈ° λ•Œλ¬Έμ— ν•΄μ‹œμ½”λ“œκ°€ 쀑볡될 수 μžˆλ‹€. 

 

클래슀의 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ κ°’μœΌλ‘œ 객체의 κ°™κ³  닀름을 νŒλ‹¨ν•΄μ•Ό ν•˜λŠ” 경우라면 equals λ©”μ„œλ“œ 뿐만 μ•„λ‹ˆλΌ hashCode λ©”μ„œλ“œλ„ 적절히 μ˜€λ²„λΌμ΄λ”© ν•΄μ•Όν•œλ‹€. 

-> equals λ₯Ό μ˜€λ²„λΌμ΄λ”©ν•˜λ©΄ hashcode도 같이 μ˜€λ²„λΌμ΄λ”© ν•΄μ•Όν•œλ‹€. 

 

 

- toString()

: μΈμŠ€ν„΄μŠ€μ— λŒ€ν•œ 정보λ₯Ό λ¬Έμžμ—΄ String 으둜 μ œκ³΅ν•  λͺ©μ μœΌλ‘œ μ •μ˜ν•œ 것이닀. 

μΈμŠ€ν„΄μŠ€μ˜ 정보λ₯Ό μ œκ³΅ν•œλ‹€λŠ” 것은 λŒ€λΆ€λΆ„μ˜ 경우 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ— μ €μž₯된 값듀을 λ¬Έμžμ—΄λ‘œ ν‘œν˜„ν•œλ‹€λŠ” λœ»μ΄λ‹€. 

 

클래슀λ₯Ό μž‘μ„±ν•  λ•Œ toString() 을 μ˜€λ²„λΌμ΄λ”©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 클래슀 이름에 16μ§„μˆ˜μ˜ ν•΄μ‹œμ½”λ“œλ₯Ό μ–»κ²Œ λœλ‹€. 

-> 이처럼 toString() 은 일반적으둜 μΈμŠ€ν„΄μŠ€λ‚˜ ν΄λž˜μŠ€μ— λŒ€ν•œ 정보 λ˜λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ“€μ˜ 값을 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•˜λ„λ‘ μ˜€λ²„λΌμ΄λ”©λ˜λŠ” 것이 보톡이닀. 

 

 

- clone()

이 λ©”μ„œλ“œλŠ” μžμ‹ μ„ λ³΅μ œν•˜μ—¬ μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 일을 ν•œλ‹€. 

μ–΄λ–€ μΈμŠ€ν„΄μŠ€μ— λŒ€ν•΄ μž‘μ—…μ„ ν•  λ•Œ, μ›λž˜μ˜ μΈμŠ€ν„΄μŠ€λŠ” λ³΄μ‘΄ν•˜κ³  clone λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄μ„œ μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ—¬ μž‘μ—…μ„ ν•˜λ©΄ μž‘μ—… μ΄μ „μ˜ 값이 λ³΄μ‘΄λ˜λ―€λ‘œ μž‘μ—…μ— μ‹€νŒ¨ν•΄μ„œ μ›λž˜μ˜ μƒνƒœλ‘œ λ˜λŒλ¦¬κ±°λ‚˜ λ³€κ²½λ˜κΈ° μ „μ˜ 값을 μ°Έκ³ ν•˜λŠ”λ° 도움이 될 것이닀. 

 

Object ν΄λž˜μŠ€μ— μ •μ˜λœ clone() 은 λ‹¨μˆœνžˆ μΈμŠ€ν„΄μŠ€λ³€μˆ˜μ˜ κ°’λ§Œ λ³΅μ‚¬ν•˜κΈ° λ•Œλ¬Έμ— μ°Έμ‘°νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜κ°€ μžˆλŠ” ν΄λž˜μŠ€λŠ” μ™„μ „ν•œ μΈμŠ€ν„΄μŠ€ λ³΅μ œκ°€ 이루어지지 μ•ŠλŠ”λ‹€. 

예λ₯Ό λ“€μ–΄ λ°°μ—΄μ˜ 경우, 볡제된 μΈμŠ€ν„΄μŠ€λ„ 같은 λ°°μ—΄μ˜ μ£Όμ†Œλ₯Ό κ°–κΈ° λ•Œλ¬Έμ— 볡제된 μΈμŠ€ν„΄μŠ€μ˜ μž‘μ—…μ΄ μ›λž˜μ˜ μΈμŠ€ν„΄μŠ€μ— 영ν–₯을 미치게 λœλ‹€. 

이런 경우 clone λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•΄μ„œ μƒˆλ‘œμš΄ 배열을 μƒμ„±ν•˜κ³  λ°°μ—΄μ˜ λ‚΄μš©μ„ λ³΅μ‚¬ν•˜λ„λ‘ ν•΄μ•Όν•œλ‹€. 

-> clone λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ¨Όμ € λ³΅μ œν•  ν΄λž˜μŠ€κ°€ Cloneable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•΄μ•Όν•œλ‹€. 

 

-> clone λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄μ„œ 배열을 λ³΅μ‚¬ν•˜λŠ” μ˜ˆμ œμ΄λ‹€. 일반적으둜 배열을 볡사할 λ•ŒλŠ” System.arraycopy()을 μ΄μš©ν•΄μ„œ λ‚΄μš©μ„ λ³΅μ‚¬ν•˜μ§€λ§Œ clone을 ν†΅ν•΄μ„œ 볡사할 μˆ˜λ„ μžˆλ‹€. 

 

❗️ 얇은 볡사와 κΉŠμ€ 볡사 

clone() 은 λ‹¨μˆœνžˆ 객체에 μ €μž₯된 값을 κ·ΈλŒ€λ‘œ λ³΅μ œν•  뿐, 객체가 μ°Έμ‘°ν•˜κ³  μžˆλŠ” κ°μ²΄κΉŒμ§€ λ³΅μ œν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. 

객체 배열을 clone()으둜 λ³΅μ œν•˜λŠ” κ²½μš°μ—λŠ” 원본과 볡제본이 같은 객체λ₯Ό κ³΅μœ ν•˜λ―€λ‘œ μ™„μ „ν•œ 볡제라고 보기 μ–΄λ ΅λ‹€.

μ΄λŸ¬ν•œ 볡제λ₯Ό 얇은 볡사라고 ν•œλ‹€. 얇은 λ³΅μ‚¬μ—μ„œλŠ” 원본을 λ³€κ²½ν•˜λ©΄ 볡사본도 영ν–₯을 λ°›λŠ”λ‹€!!

 

λ°˜λ©΄μ— 원본이 μ°Έμ‘°ν•˜κ³  μžˆλŠ” κ°μ²΄κΉŒμ§€ λ³΅μ œν•˜λŠ” 것을 κΉŠμ€ 볡사라고 ν•˜λ©°, κΉŠμ€ λ³΅μ‚¬μ—μ„œλŠ” 원본과 볡사본이 μ„œλ‘œ λ‹€λ₯Έ 객체λ₯Ό μ°Έμ‘°ν•˜κΈ° λ•Œλ¬Έμ— μ›λ³Έμ˜ 변경이 볡사본에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€. 

 

 

 

- getClass()

이 λ©”μ„œλ“œλŠ” μžμ‹ μ΄ μ†ν•œ 클래슀의 Class 객체λ₯Ό λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€. 

Class κ°μ²΄λŠ” 클래슀의 λͺ¨λ“  정보λ₯Ό λ‹΄κ³  있으며, 클래슀 λ‹Ή 1개만 μ‘΄μž¬ν•œλ‹€. 그리고 클래슀 파일이 '클래슀 λ‘œλ”'에 μ˜ν•΄μ„œ λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ, μžλ™μœΌλ‘œ μƒμ„±λœλ‹€.

클래슀 λ‘œλ”λŠ” μ‹€ν–‰ μ‹œμ— ν•„μš”ν•œ 클래슀λ₯Ό λ™μ μœΌλ‘œ λ©”λͺ¨λ¦¬μ— λ‘œλ“œν•˜λŠ” 역할을 ν•œλ‹€. 

 

λ¨Όμ € 기쑴에 μƒμ„±λœ 클래슀 객체가 λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κ³ , 있으면 객체의 μ°Έμ‘°λ₯Ό λ°˜ν™˜ν•˜κ³  μ—†μœΌλ©΄ 클래슀 νŒ¨μŠ€μ— μ§€μ •λœ 경둜λ₯Ό λ”°λΌμ„œ 클래슀 νŒŒμΌμ„ μ°ΎλŠ”λ‹€. 

λͺ» 찾으면 ClassNotFoundException 이 λ°œμƒν•˜κ³ , 찾으면 ν•΄λ‹Ή 클래슀 νŒŒμΌμ„ μ½μ–΄μ„œ Class 객체둜 λ³€ν™˜ν•œλ‹€. 

 

파일 ν˜•νƒœλ‘œ μ €μž₯λ˜μ–΄ μžˆλŠ” 클래슀λ₯Ό μ½μ–΄μ„œ Class ν΄λž˜μŠ€μ— μ •μ˜λœ ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것이닀. 

즉, 클래슀 νŒŒμΌμ„ μ½μ–΄μ„œ μ‚¬μš©ν•˜κΈ° νŽΈν•œ ν˜•νƒœλ‘œ μ €μž₯ν•΄ 놓은 것이 클래슀 객체이닀. 

 

 

2️⃣ String 클래슀 

μžλ°”μ—μ„œλŠ” λ¬Έμžμ—΄μ„ μœ„ν•œ 클래슀λ₯Ό μ œκ³΅ν•˜λŠ”λ° 그것이 λ°”λ‘œ String ν΄λž˜μŠ€μ΄λ‹€. String ν΄λž˜μŠ€λŠ” λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κ³  이λ₯Ό λ‹€λ£¨λŠ”λ° ν•„μš”ν•œ λ©”μ„œλ“œλ₯Ό ν•¨κ»˜ μ œκ³΅ν•œλ‹€. 

 

- λ³€κ²½ λΆˆκ°€λŠ₯ν•œ 클래슀 

String ν΄λž˜μŠ€μ—λŠ” λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œ λ¬Έμžν˜• λ°°μ—΄ μ°Έμ‘°λ³€μ†Œ char[] λ₯Ό μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‘œ μ •μ˜ν•˜κ³  μžˆλ‹€. 

μΈμŠ€ν„΄μŠ€ 생성 μ‹œ μƒμ„±μžμ˜ λ§€κ°œλ³€μˆ˜λ‘œ μž…λ ₯λ°›λŠ” λ¬Έμžμ—΄μ€ 이 μΈμŠ€ν„΄μŠ€λ³€μˆ˜μ— λ¬Έμžν˜• λ°°μ—΄λ‘œ μ €μž₯ν•˜λŠ” 것이닀. 

 

ν•œλ²ˆ μƒμ„±λœ String μΈμŠ€ν„΄μŠ€κ°€ κ°–κ³  μžˆλŠ” λ¬Έμžμ—΄μ€ 읽어 올 수만 있고, λ³€κ²½ν•  μˆ˜λŠ” μ—†λ‹€.

 

λ§μ…ˆ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ λ¬Έμžμ—΄μ„ κ²°ν•©ν•˜λŠ” 것은 μ—°μ‚° μ‹œ λ§ˆλ‹€ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ 가진 String μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ–΄ λ©”λͺ¨λ¦¬ 곡간을 μ°¨μ§€ν•˜κ²Œ λ˜λ―€λ‘œ κ°€λŠ₯ν•œ κ²°ν•©νšŸμˆ˜λ₯Ό μ€„μ΄λŠ” 것이 μ’‹λ‹€. 

-> λ¬Έμžμ—΄κ°„μ˜ κ²°ν•©μ΄λ‚˜ μΆ”μΆœ λ“± λ¬Έμžμ—΄μ„ λ‹€λ£¨λŠ” μž‘μ—…μ΄ 많이 ν•„μš”ν•œ κ²½μš°μ—λŠ” String 클래슀 λŒ€μ‹  StringBuffer 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€. 

 

- λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ μ§€μ •ν•˜λŠ” 방법 vs  String 클래슀의 μƒμ„±μžλ₯Ό μ‚¬μš©ν•΄μ„œ λ§Œλ“œλŠ” 방법

String str1 = "abc";    -> λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ "abc"의 μ£Όμ†Œκ°€ str1에 μ €μž₯됨 

String str2 = "abc";    -> λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ "abc"의 μ£Όμ†Œκ°€ str2에 μ €μž₯됨 

String str3 = new String("abc");   -> μƒˆλ‘œμš΄ String μΈμŠ€ν„΄μŠ€λ₯Ό 생성 

String str4 = new String("abc");   -> μƒˆλ‘œμš΄ String μΈμŠ€ν„΄μŠ€λ₯Ό 생성 

 

: String 클래슀의 μƒμ„±μžλ₯Ό μ΄μš©ν•œ κ²½μš°μ—λŠ” new μ—°μ‚°μžμ— μ˜ν•΄μ„œ λ©”λͺ¨λ¦¬ν• λ‹Ήμ΄ 이루어지기 λ•Œλ¬Έμ— 항상 μƒˆλ‘œμš΄ String μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λœλ‹€.

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

equals() λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ 두 λ¬Έμžμ—΄μ˜ λ‚΄μš©μ€ "abc"λ₯Ό λΉ„κ΅ν•˜λŠ” 것이기 λ•Œλ¬Έμ— 두 경우 λͺ¨λ‘ new λ₯Ό 결과둜 μ–»λŠ”λ‹€. 

ν•˜μ§€λ§Œ 각 String μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œλ₯Ό λ“±κ°€λΉ„κ΅μ—°μ‚°μž'=='둜 λΉ„κ΅ν–ˆμ„ λ•ŒλŠ” κ²°κ³Όκ°€ λ‹€λ₯΄λ‹€. 

 

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

: μžλ°” μ†ŒμŠ€ νŒŒμΌμ— ν¬ν•¨λœ λͺ¨λ“  λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ€ 컴파일 μ‹œμ— 클래슀 νŒŒμΌμ— μ €μž₯λœλ‹€.

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

λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄λ„ String μΈμŠ€ν„΄μŠ€μ΄κ³ , ν•œλ²ˆ μƒμ„±ν•˜λ©΄ λ‚΄μš©μ„ λ³€κ²½ν•  수 μ—†μœΌλ‹ˆ ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό κ³΅μœ ν•˜λ©΄ 되기 λ•Œλ¬Έμ΄λ‹€. 

 

 

- 빈 λ¬Έμžμ—΄ 

: 길이가 0인 배열이 μ‘΄μž¬ν•  수 μžˆλ‹€. charν˜• 배열도 길이가 0인 배열을 생성할 수 있고, 이 배열을 λ‚΄λΆ€μ μœΌλ‘œ 가지고 μžˆλŠ” λ¬Έμžμ—΄μ΄ λ°”λ‘œ 빈 λ¬Έμžμ—΄μ΄λ‹€. 

String str = "";

char c = ' '; 

-> String str = ""; 같은 ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€κ³  ν•΄μ„œ char c = ''; 같은 ν‘œν˜„λ„ κ°€λŠ₯ν•œ 것은 μ•„λ‹ˆλ‹€.

charν˜• λ³€μˆ˜μ—λŠ” λ°˜λ“œμ‹œ ν•˜λ‚˜μ˜ 문자λ₯Ό μ§€μ •ν•΄μ•Όν•œλ‹€. 

 

일반적으둜 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ, 각 νƒ€μž…μ˜ κΈ°λ³Έκ°’μœΌλ‘œ μ΄ˆκΈ°ν™” ν•˜μ§€λ§Œ String 은 μ°Έμ‘°ν˜• νƒ€μž…μ˜ 기본값인 Null λ³΄λ‹€λŠ” 빈 λ¬Έμžμ—΄λ‘œ, char ν˜•μ€ 기본값인 '\u0000' λŒ€μ‹  곡백으둜 μ΄ˆκΈ°ν™”ν•˜λŠ” 것이 보톡이닀. 

 

- String 클래슀의 μƒμ„±μžμ™€ λ©”μ„œλ“œ 

 

 

 

 

 

 

 

 

 

 

728x90