πŸŸͺ Backend-Java

4. ν˜•λ³€ν™˜ (μžλ™ ν˜•λ³€ν™˜, κ°•μ œ ν˜•λ³€ν™˜ 예제+λ³€μˆ˜ λ°μ΄ν„°νƒ€μž…)

ramen2 2024. 6. 26. 00:13
λ°˜μ‘ν˜•

πŸ”΅ ν˜•λ³€ν™˜

  • λ°μ΄ν„°μ˜ Type이 λ³€ν•˜λŠ”κ²ƒ
    ex) μ •μˆ˜(byte) 와 μ‹€μˆ˜(float)λŠ” 같은 숫자 νƒ€μž…μ΄λ―€λ‘œ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯함
  • 문자(char)와 λ¬Έμžμ—΄(string)은 문자λ₯Ό λ‹€λ£¨μ§€λ§Œ, λ‹¨μˆœ 데이터  ν˜•λ³€ν™˜μ΄ λΆˆκ°€λŠ₯함 (λ¬Έμžμ—΄μ€ class ν˜•νƒœλΌμ„œ λΆˆκ°€λŠ₯)
  • 문자(char)와 μ •μˆ˜(int)λŠ” ν˜•λ³€ν™˜μ΄ κ°€λŠ₯함
    -> 문자(char)λŠ” 'λ‹¨μΌλ¬Έμž' 이고 (A~Z,1~0,특수기호.. λͺ¨λ“  μžνŒκΈ€μž) , μ΄λŠ” μ •μˆ˜λ‘œ 변경이 κ°€λŠ₯(μ•„μŠ€ν‚€ μ½”λ“œ ν‘œ μ°Έκ³ )
κΈ°μ–΅ν•˜κΈ° [λ³€μˆ˜μ˜ 데이터 νƒ€μž…]
<κΈ°λ³Έ μžλ£Œν˜•>(μ •μˆ˜/μ‹€μˆ˜/문자/λΆˆλ¦¬μ–Έ)

1. μ •μˆ˜ν˜• :  byte, short, int, long (1,2,4,8byte 순으둜 λ©”λͺ¨λ¦¬ μ‚¬μš©)

-byte: 8λΉ„νŠΈ, κ°’μ˜ λ²”μœ„: -128 ~ 127 (2^8 = 도합 256의 ν‘œν˜„λ²”μœ„μ΄κΈ° λ•Œλ¬Έμ— 음,μ–‘μœΌλ‘œ ν‘œν˜„ (0포함))
-short : 16λΉ„νŠΈ, κ°’μ˜ λ²”μœ„ : -32,768~ 37,767
-int: 32λΉ„νŠΈ, κ°’μ˜ λ²”μœ„: -2^31 ~ 2^31 - 1 (μ•½ -2,147,483,648 ~ 2,147,483,647)
-long: 64λΉ„νŠΈ, κ°’μ˜ λ²”μœ„: -2^63 ~ 2^63 - 1 (μ•½ -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)

2. μ‹€μˆ˜ ν˜• : float(4byte), double(8byte)
(float의 데이터가 double둜 λ°”κΏ€λ•Œ λΆ€μ •ν™•ν•˜κΈ° λ•Œλ¬Έμ— <2.9999...
+float의 κ°’ λμ—λŠ” fλ₯Ό λΆ™ν˜€μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— (κΈ°λ³Έ λ¦¬ν„°λŸ΄μ„ double으둜 ν•˜κΈ° λ•Œλ¬Έ) 거의 double μ‚¬μš©)
(+ float은 μ†Œμˆ«μ  6~7자 κΉŒμ§€λ§Œ ν‘œκΈ°ν•¨)
(ex. float flNum = 33.12f;)

3. 문자 : char(2byte) (ex. 'A') 

<μ°Έμ‘° μžλ£Œν˜•>(λ¬Έμžμ—΄λ§Œ)
4. λ¬Έμžμ—΄(λ¬Έμž₯) : String ("AAA"< λ¬Έμž₯이 μ•„λ‹ˆλΌ ν•œ 문자 "A" 여도 λ¬Έμžμ—΄μ˜ μ„±μ§ˆμ„ 띔)*혼자 classνƒ€μž…
5. λ…Όλ¦¬ν˜• : boolean (true / false, μ°Έκ³Ό 거짓을 μ €μž₯ ν•  수 있음)

 

μ•„μŠ€ν‚€ μ½”λ“œν‘œ (일뢀)

 

 

πŸ”΅ 데이터 νƒ€μž… ν‘œ



  • ν˜•λ³€ν™˜μ˜ μ’…λ₯˜
    1. μžλ™ ν˜•λ³€ν™˜ (upcasting,λ¬΅μ‹œμ  ν˜•λ³€ν™˜) : μž‘μ€ 데이터 νƒ€μž…μ΄ 더 큰 데이터 νƒ€μž…μœΌλ‘œ μžλ™μœΌλ‘œ λ³€ν™˜λ˜λŠ” 것
    (데이터 μ†μ‹€μ˜ μœ„ν—˜μ΄ μ—†κΈ° λ•Œλ¬Έμ— μžλ™μœΌλ‘œ μˆ˜ν–‰ 됨)
    ex) int(μ•½ 20μ–΅)λ₯Ό long(μ•½ 20μ–΅ 이상) 에 ν• λ‹Ήν• λ•Œ : μžλ™ ν˜•λ³€ν™˜ : a=b 둜 ν‘œκΈ°ν•¨

    2. κ°•μ œ ν˜•λ³€ν™˜(downcasting,λͺ…μ‹œμ  ν˜•λ³€ν™˜): 더 큰 데이터 νƒ€μž…μ„ 더 μž‘μ€ 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜λ˜λŠ” 것
    (데이터 μ†μ‹€μ˜ μœ„ν—˜μ΄ μžˆμ–΄μ„œ λͺ…μ‹œμ μœΌλ‘œ ν‘œκΈ° ν•˜κΈ° λ•Œλ¬Έμ— (byte)와 같이 (λ³€ν™˜ν• κ²ƒ)이 λΆ™μŒ)
    ex) intλ₯Ό byte에 ν• λ‹Ήν• λ•Œ : κ°•μ œ ν˜•λ³€ν™˜ : b=(byte)c 둜 ν‘œ

 

πŸ”΅ κ°•μ œν˜•λ³€ν™˜μ‹œ 주의점

  1. 데이터 손싀 λ°œμƒ (Ex1 μ°Έμ‘°. byteλŠ” 127κΉŒμ§€λ§Œ 담을 수 있기 λ•Œλ¬Έμ—
    128인 intλ₯Ό byte둜 ν˜•λ³€ν™˜ν•œλ‹€κ³  ν•˜λ©΄ ν‘œν˜„ λ²”μœ„κ°€ λ„˜μ–΄κ°€μ„œ *overflow
     -128μ΄λΌλŠ” κ²°κ³Όκ°€ λ‚˜νƒ€λ‚¨)
  2. μ†Œμˆ«μ  μ΄ν•˜ 자릿수 손싀
  3. κ°’μ˜ λ²”μœ„μ΄ˆκ³Ό
  4. μ˜ˆμƒμΉ˜ λͺ»ν•˜ 논리적 였λ₯˜
//[EX1]
package section02;

public class Ex0208 {
    public static void main(String[] args) {
        int intNum1 = 1;
        byte byteNum1 = (byte) intNum1; // byteκ°€ int보닀 μž‘μœΌλ―€λ‘œ byte둜 κ°•μ œ ν˜•λ³€ν™˜
        System.out.println(intNum1); // κ²°κ³Ό : 1

        /* overflow μ˜ˆμ‹œ */
        int intNum128 = 128;
        byte byteNum128 = (byte) intNum128;
       
        System.out.println(byteNum128); // κ²°κ³Ό : -128

    }

}

 

 

 

 

✏️ μžλ™ ν˜•λ³€ν™˜ / κ°•μ œ ν˜•λ³€ν™˜ μ˜ˆμ‹œ1 (μ •μˆ˜λΌλ¦¬ ν˜•λ³€ν™˜)

package exam03;

public class ChangeTypeExam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int num01 = 15;
		long lyNum01 = 20;
		byte byNum01 = 0;
		
		//μžλ™ ν˜•λ³€ν™˜
		/* 였λ₯Έμͺ½ κ±Έ μ™Όμͺ½μœΌλ‘œ λ„£λŠ”λ‹€ 즉, (int=μ•½2μ–΅ / long=2μ–΅ 훨배 초과)
		 * κ°€λŠ₯
		 */
		lyNum01 = num01;
		
		//κ°•μ œ ν˜•λ³€ν™˜
		/* 였λ₯Έμͺ½ κ±Έ μ™Όμͺ½μœΌλ‘œ λ„£λŠ”λ‹€ 즉, (int=μ•½2μ–΅ / byte=μ•½ 127μ΄ν•˜)
		 * λΆˆκ°€λŠ₯ ν•˜λ―€λ‘œ (byte)λ₯Ό κΈ°μž¬ν•˜μ—¬ byte둜 λ°”κΎΈμ–΄μ€€λ‹€
		 */ 
		byNum01 = (byte)num01;
		
		int num02 = 130;
		byte byNum02 = 0;
		
		byNum02 = (byte)num02;
		
	}

}

 

 

 


✏️ μžλ™ ν˜•λ³€ν™˜ / κ°•μ œ ν˜•λ³€ν™˜ μ˜ˆμ‹œ2 (μ •μˆ˜ / λ‹¨μΌλ¬Έμž)

package exam03;

public class ChangeCharExam02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		char ch = 'E';
		int num = 90;
		
		int chToNum = 0;
		char intToCh = ' ';
		//곡백에 슀페이슀 넣어야함
		
		// int 와 charλŠ” μžλ™ν˜•λ³€ν™˜
		// char --> int 둜 λ³€κ²½ν• λ•ŒλŠ” μžλ™ν˜•λ³€ν™˜ κ°€λŠ₯
		chToNum = ch;
		// int --> char λ³€κ²½ν•  λ•ŒλŠ” κ°•μ œν˜•λ³€ν™˜
		// int(μ•½ 20μ–΅)κ°€ char보닀 큼 (int인 num을 char둜 κ°•μ œν˜•λ³€ν™˜ μ‹œμΌœμ€Œ)
		intToCh = (char)num;
		
		System.out.println(chToNum);
		System.out.println(intToCh);
		//κ²°κ³Ό :  'E'의 ASCII μ½”λ“œ 값인 69κ°€ chToNum에 μ €μž₯
		//κ²°κ³Ό :   num을 κ°•μ œλ‘œ(char) ν˜•λ³€ν™˜ . ASCII μ½”λ“œμ—μ„œ 90에 ν•΄λ‹Ήν•˜λŠ” 문자,'Z'κ°€ ν‘œκΈ°

}

 

 

 

πŸ”°tip. 이클립슀 ν•œ 쀄 볡사 : Ctrl + alt + downarrow

 

 

 

λ°˜μ‘ν˜•