[Java] ν˜• λ³€ν™˜

λ¬΅μ‹œμ  ν˜•λ³€ν™˜κ³Ό λͺ…μ‹œμ  ν˜•λ³€ν™˜μ— λŒ€ν•΄

μžλ°”λ₯Ό λΉ„λ‘―ν•œ μ—¬λŸ¬ 가지 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ λ¬΅μ‹œμ μ΄λ“  λͺ…μ‹œμ μ΄λ“  ν˜• λ³€ν™˜μ΄ ν•„μš”ν•œ 상황은 항상 μ‘΄μž¬ν•œλ‹€.
λ¬΅μ‹œμ™€ λͺ…μ‹œλΌλŠ” 단어 κ·ΈλŒ€λ‘œ λ¬΅μ‹œμ μΈ ν˜• λ³€ν™˜μ€ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ§μ ‘μ μœΌλ‘œ λ“œλŸ¬λ‚΄μ§€ μ•ŠλŠ” 것아고, λͺ…μ‹œμ  ν˜• λ³€ν™˜μ€ ν”„λ‘œκ·Έλž˜κ°€ λͺ…μ‹œμ μœΌλ‘œ λ“œλŸ¬λ‚΄μ–΄ ν•˜λŠ” ν˜•λ³€ν™˜μ΄μ§€λ§Œ λ‹¨μ–΄λ§ŒμœΌλ‘œλŠ” 와닿지 μ•ŠλŠ”λ‹€.

μ‰½κ²Œ 이해λ₯Ό ν•˜κΈ° μœ„ν•΄ λ¬΅μ‹œμ μΈ 것은 더 μž‘μ€ μžλ£Œν˜•μ—μ„œ 더 큰 μžλ£Œν˜•μœΌλ‘œμ˜ ν˜• λ³€ν™˜μ΄κ³ , λͺ…μ‹œμ μΈ 것은 더 큰 μžλ£Œν˜•μ—μ„œ 더 μž‘μ€ μžλ£Œν˜•μœΌλ‘œμ¨μ˜ ν˜• λ³€ν™˜μ΄λ‹€.

λͺ…μ‹œμ μΈ ν˜• λ³€ν™˜μ—μ„œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λͺ…μ‹œμ μœΌλ‘œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•΄μ„œ μΊμŠ€νŒ…μ„ ν•΄μ•Όν•˜λŠ” μ΄μœ λŠ”, λ¬΅μ‹œμ μΈ 상황과 달리 더 큰 μžλ£Œν˜•μ—μ„œ 더 μž‘μ€ μžλ£Œν˜•μœΌλ‘œ μΊμŠ€νŒ… λ˜λŠ” 상황에선 자료의 손싀이 μžˆμ„ 수 있기 λ•Œλ¬Έμ΄λ‹€.

예λ₯Όλ“€μ–΄, int ν˜•μΈ μžλ£Œν˜•μ„ doubleν˜•μœΌλ‘œ μΊμŠ€νŒ… ν• λ•ŒλŠ”, intν˜•μ—μ„œ λ‹΄κ³  μžˆλŠ” 정보λ₯Ό λͺ¨λ‘ doubleν˜•μœΌλ‘œ 담을 수 있기 λ•Œλ¬Έμ— 자료의 손싀이 μ—†μ§€λ§Œ, λ°˜λŒ€μ˜ κ²½μš°μ—λŠ” doubleν˜•μ˜ λͺ¨λ“  자료λ₯Ό intν˜•μ—μ„œ 담을 수 μ—†κΈ° λ•Œλ¬Έμ—(μ• μ΄ˆμ— μ μœ ν•˜κ³  μžˆλŠ” byteμˆ˜κ°€ λ‹€λ₯΄λ‹€.) μ΄λŸ¬ν•œ 손싀을 κ°μˆ˜ν•˜κ³  ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μΊμŠ€νŒ…μ„ ν•΄μ•Όν•˜λŠ” 상황 일 λ•Œ λͺ…μ‹œμ μΈ ν˜• λ³€ν™˜μ„ ν•΄μ€˜μ•Όν•œλ‹€.

예제

package basic;

public class CastingPractice {

	public static void main(String[] args) {
		/*
		 * λ¬΅μ‹œμ  ν˜• λ³€ν™˜ (μž‘μ€ μžλ£Œν˜• => 큰 μžλ£Œν˜•)
		 * λͺ…μ‹œμ  ν˜• λ³€ν™˜ (큰 μžλ£Œν˜• => μž‘μ€ μžλ£Œν˜•)
		 * test (큰 μžλ£Œν˜• : doubleν˜•, μž‘μ€ μžλ£Œν˜• : intν˜•)
		 */
		int intNum=10; // μž‘μ€ μžλ£Œν˜•
		double doubleNum=20.5; // 큰 μžλ£Œν˜•
		double testDouble=intNum; // doubleν˜•μ— intNum의 λͺ¨λ“  정보λ₯Ό 담을 수 있기 λ•Œλ¬Έμ— λͺ…μ‹œμ μœΌλ‘œ μΊμŠ€νŒ… ν•˜μ§€ μ•Šμ•„λ„ λ¬΅μ‹œμ μœΌλ‘œ μΊμŠ€νŒ… 된 ν›„ assign
		System.out.println(testDouble); // 10.0 좜λ ₯
		// int testInt=doubleNum; // intν˜•μ— doubleNum의 λͺ¨λ“  정보λ₯Ό 담을 수 μ—†κΈ° λ•Œλ¬Έμ— λͺ…μ‹œμ μœΌλ‘œ μΊμŠ€νŒ… ν•˜μ§€ μ•ŠμœΌλ©΄ μ—λŸ¬λ°œμƒ -> μ£Όμ„μ²˜λ¦¬
		int testInt=(int)doubleNum; // 10.0μ—μ„œμ˜ μžλ£Œμ†μ‹€μ„ κ°μˆ˜ν•˜κ³  λͺ…μ‹œμ  ν˜• λ³€ν™˜ -> (int)
		System.out.println(testInt); // 20이 좜λ ₯ doubleNUm의 μ†Œμˆ˜μ  μ•„λž˜ μ •λ³΄λŠ” 담지 λͺ» ν–ˆλ‹€.
	}

}