Recent Posts
Recent Comments
Β«   2024/05   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
In Total
관리 메뉴

A Joyful AI Research Journey🌳😊

[23] 230131 Java Ch. 2 λ³€μˆ˜μ™€ νƒ€μž…: 3. νƒ€μž… λ³€ν™˜, 4. λ³€μˆ˜μ™€ μ‹œμŠ€ν…œ μž…μΆœλ ₯ [K-디지털 νŠΈλ ˆμ΄λ‹ 23일] λ³Έλ¬Έ

🌳Bootcamp Revision 2023✨/Spring Framework, Java

[23] 230131 Java Ch. 2 λ³€μˆ˜μ™€ νƒ€μž…: 3. νƒ€μž… λ³€ν™˜, 4. λ³€μˆ˜μ™€ μ‹œμŠ€ν…œ μž…μΆœλ ₯ [K-디지털 νŠΈλ ˆμ΄λ‹ 23일]

yjyuwisely 2023. 1. 31. 12:50

230131 Tue 23rd class

Ch. 2 λ³€μˆ˜μ™€ νƒ€μž…
진도: p. 72 ~ (ꡐ재: 혼자 κ³΅λΆ€ν•˜λŠ” μžλ°”, μ €μž: μ‹ μš©κΆŒ)

 

혼자 κ³΅λΆ€ν•˜λŠ” μžλ°”

λ…ν•™μœΌλ‘œ μžλ°”λ₯Ό λ°°μš°λŠ” μž…λ¬Έμžκ°€ ‘κΌ­ ν•„μš”ν•œ λ‚΄μš©μ„ μ œλŒ€λ‘œ’ ν•™μŠ΅ν•  수 μžˆλ„λ‘ κ΅¬μ„±ν–ˆλ‹€. ‘무엇을’ ‘μ–΄λ–»κ²Œ’ ν•™μŠ΅ν•΄μ•Ό 할지 μ‘°μ°¨ λͺ¨λ₯΄λŠ” μž…λ¬Έμžμ˜ λ§‰μ—°ν•œ λ§ˆμŒμ„ μ‚΄νŽ΄, κ³Όμ™Έ μ„ μƒλ‹˜μ΄

www.aladin.co.kr

였늘 배운 것 쀑 κΈ°μ–΅ν•  것을 μ •λ¦¬ν–ˆλ‹€. 


μ§€λ‚œ μˆ˜μ—… λ•Œ 배운 것 쀑 λ‹€μ‹œ κΈ°μ–΅ν•  것

  • Widening Casting (automatically) - converting a smaller type to a larger type size
    byte short char int long float double
    Widening casting is done automatically when passing a smaller size type to a larger size type.
    int myInt = 9;
    double myDouble = myInt; // Automatic casting: int to double

    System.out.println(myInt);      // Outputs 9
    System.out.println(myDouble);   // Outputs 9.0

 

  • Narrowing Casting (manually) - converting a larger type to a smaller size type
    double float long int char short byte
    Narrowing casting must be done manually by placing the type in parentheses in front of the value.
    double myDouble = 9.78d;
    int myInt = (int) myDouble; // Manual casting: double to int

    System.out.println(myDouble);   // Outputs 9.78
    System.out.println(myInt);      // Outputs 9

1) μžλ™ νƒ€μž… λ³€ν™˜: ν° νƒ€μž… = μž‘μ€ νƒ€μž…(μž‘μ€ νƒ€μž… → 큰 νƒ€μž…)
μžλ™μœΌλ‘œ νƒ€μž…μ΄ λ³€ν™˜λ˜λŠ” 것

byte byteValue = 10;
int intValue = byteValue; //int νƒ€μž…μ΄ byte νƒ€μž…λ³΄λ‹€ ν—ˆμš© λ²”μœ„κ°€ 더 크기 λ•Œλ¬Έμ— μžλ™ νƒ€μž… λ³€ν™˜λœλ‹€.

 

2) κ°•μ œ νƒ€μž… λ³€ν™˜: μž‘은 νƒ€μž… = (μž‘μ€ νƒ€μž…)큰 νƒ€μž…(큰 νƒ€μž… → μž‘μ€ νƒ€μž…)
κ°•μ œλ‘œ νƒ€μž…μ„ λ³€ν™˜ν•˜λŠ” 것
ex) short, char의 경우 μš°μœ„κ°€ μ—†κ³  κ°•μ œλ‘œ ν˜•λ³€ν™˜ν•œλ‹€. 

int intValue = 10;
byte byteValue = (byte) intValue; //int νƒ€μž…μ€ byte νƒ€μž…λ³΄λ‹€ 더 큰 ν—ˆμš© λ²”μœ„λ₯Ό κ°€μ§€λ―€λ‘œ μžλ™ λ³€ν™˜ λ˜μ§€ μ•ŠλŠ”λ‹€. κ°•μ œ νƒ€μž… λ³€ν™˜ν•œλ‹€.
public class OperatorPromotionException2 {
	public static void main(String[] args) {
		byte byteValue1 = 10;
		byte byteValue2 = 20;
		//byte byteValue3 = byteValue1 + byteValue2;
		//첫번째 방법: μžλ™ νƒ€μž… λ³€ν™˜: 큰 νƒ€μž… = μž‘μ€ νƒ€μž…(μž‘μ€ νƒ€μž…→ 큰 νƒ€μž…)
		//byteValue1 + byteValue2λŠ” int νƒ€μž…μ΄λ‹€. 
		int byteValue3 = byteValue1 + byteValue2;
		//λ‘λ²ˆμ§Έ 방법: κ°•μ œ νƒ€μž… λ³€ν™˜: μž‘μ€ νƒ€μž… = (μž‘μ€ νƒ€μž…)큰 νƒ€μž…
		byte byteValue4 = (byte)(byteValue1 + byteValue2);
		System.out.println(byteValue3);
		System.out.println(byteValue4);
	}
}

String νƒ€μž… p. 64

μž‘μ€λ”°μ˜΄ν‘œ(')둜 감싼 λ¬ΈμžλŠ” char νƒ€μž… λ³€μˆ˜μ— μ €μž₯λ˜μ–΄ μœ λ‹ˆμ½”λ“œλ‘œ μ €μž₯λ˜μ§€λ§Œ,
ν°λ”°μ˜΄ν‘œ(")둜 감싼 문자 λ˜λŠ” μ—¬λŸ¬ 개의 λ¬Έμžλ“€μ€ μœ λ‹ˆμ½”λ“œλ‘œ λ°˜ν™˜λ˜μ§€ μ•ŠλŠ”λ‹€.

μ°Έμ‘°ν˜• νƒ€μž…μ΄λ‹€. κΈ°λ³Έν˜• νƒ€μž… X. Stringμ΄λΌλŠ” 객체둜 μ €μž₯ν•œλ‹€.


ꡬ뢄 1byte 2byte 4byte 8byte
μ •μˆ˜ νƒ€μž… byte short
char
(μš°μœ„X, λ‘˜ λ‹€ κ°•μ œλ‘œ ν˜•λ³€ν™˜)
int long
μ‹€μˆ˜ νƒ€μž…     float double
논리 νƒ€μž… boolean      

κΈ°λ³Έ νƒ€μž…μ„ ν—ˆμš© λ²”μœ„ 크기순으둜 μ •λ¦¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

byte < short < int < long < float < double

byte (1) < short (2), char (2)  < int (4) < long (8) < float (4, λ²”μœ„ 더 큼) < double (8) 

μ •μˆ˜ νƒ€μž…

νƒ€μž… λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„
byte 1 byte 8 bit -2^7 ~ (2^7-1) -128 ~ 127
short 2 byte 16 bit -2^15 ~ (2^15-1) -32,768 ~ 32,767
char 2 byte 16 bit 0 ~ (2^16 - 1) 0 ~ 65535(μœ λ‹ˆμ½”λ“œ)
int 4 byte 32 bit -2^31 ~ (2^31 - 1) -2,147,483,648 ~ 2,147,483,647
long 8 byte 64 bit -2^63 ~ (2^63 - 1) -9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807

μ‹€μˆ˜ νƒ€μž… 

νƒ€μž… λ©”λͺ¨λ¦¬ μ‚¬μš© 크기 μ €μž₯λ˜λŠ” κ°’μ˜ ν—ˆμš© λ²”μœ„(μ–‘μˆ˜ κΈ°μ€€) 정밀도(μ†Œμˆ˜μ  μ΄ν•˜ 자리)
float 4byte 32bit (1.4*10^-45) ~ (3.4*10^38) 7자리
double 8byte 64bit (4.9*10^-324) ~ (1.8*10^308) 15자리

Ch. 2  λ³€μˆ˜μ™€ νƒ€μž…

μ±…μ˜ λͺ©μ°¨
02-1 λ³€μˆ˜
02-2 κΈ°λ³Έ νƒ€μž…
02-3 νƒ€μž… λ³€ν™˜
02-4 λ³€μˆ˜μ™€ μ‹œμŠ€ν…œ μž…μΆœλ ₯

2.3 νƒ€μž… λ³€ν™˜(type conversion) p. 72

ν•˜λ‚˜μ˜ νƒ€μž…μ„ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ°”κΎΈλŠ” 것을 νƒ€μž… λ³€ν™˜(type conversion)이라고 ν•œλ‹€.
μžλ°”μ—μ„œλŠ” booleanν˜•μ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€ κΈ°λ³Έ νƒ€μž… κ°„μ˜ νƒ€μž… λ³€ν™˜μ„ 자유둭게 μˆ˜ν–‰ν•  수 μžˆλ‹€.
μžλ°”μ—μ„œ λ‹€λ₯Έ νƒ€μž…λΌλ¦¬μ˜ 연산은 μš°μ„  ν”Όμ—°μ‚°μžλ“€μ„ λͺ¨λ‘ 같은 νƒ€μž…μœΌλ‘œ λ§Œλ“  후에 μˆ˜ν–‰λœλ‹€.
λ©”λͺ¨λ¦¬μ— 할당받은 λ°”μ΄νŠΈμ˜ 크기가 μƒλŒ€μ μœΌλ‘œ μž‘μ€ νƒ€μž…μ—μ„œ 큰 νƒ€μž…μœΌλ‘œμ˜ νƒ€μž… λ³€ν™˜μ€ μƒλž΅ν•  수 μžˆλ‹€.

ν•˜μ§€λ§Œ λ©”λͺ¨λ¦¬μ— 할당받은 λ°”μ΄νŠΈμ˜ 크기가 큰 νƒ€μž…μ—μ„œ μž‘μ€ νƒ€μž…μœΌλ‘œμ˜ νƒ€μž… λ³€ν™˜μ€ λ°μ΄ν„°μ˜ 손싀이 λ°œμƒν•œλ‹€.
λ”°λΌμ„œ μƒλŒ€μ μœΌλ‘œ λ°”μ΄νŠΈμ˜ 크기가 μž‘μ€ νƒ€μž…μœΌλ‘œ νƒ€μž… λ³€ν™˜μ„ ν•  경우 μžλ°” μ»΄νŒŒμΌλŸ¬λŠ” 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¨λ‹€.

νƒ€μž… λ³€ν™˜μ΄λž€ 데이터 νƒ€μž…μ„ λ‹€λ₯Έ 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것을 λ§ν•œλ‹€.
* 데이터 손싀이 μΌμ–΄λ‚˜λ©΄ κ°•μ œ ν˜•λ³€ν™˜μ„ ν•œλ‹€. 

byte a = 10; //byte νƒ€μž… λ³€μˆ˜ a에 10을 μ €μž₯
int b = a; //byte νƒ€μž… λ³€μˆ˜ a에 μ €μž₯된 10을 int νƒ€μž… λ³€μˆ˜ b에 λ³΅μ‚¬ν•΄μ„œ μ €μž₯

1) μžλ™ νƒ€μž… λ³€ν™˜ (Promotion, implicit conversion) (μž‘μ€ 큰)

byte byteValue = 10;
int intValue = byteValue; //int νƒ€μž…μ΄ byte νƒ€μž…λ³΄λ‹€ ν—ˆμš© λ²”μœ„κ°€ 더 크기 λ•Œλ¬Έμ— μžλ™ νƒ€μž… λ³€ν™˜λœλ‹€.

μžλ™μœΌλ‘œ νƒ€μž… λ³€ν™˜μ΄ μΌμ–΄λ‚˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
μžλ™ νƒ€μž… λ³€ν™˜μ€ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 도쀑에 κ°’μ˜ ν—ˆμš© λ²”μœ„κ°€ μž‘은 νƒ€μž…μ΄ ν—ˆμš© λ²”μœ„κ°€ ν° νƒ€μž…μœΌλ‘œ μ €μž₯될 λ•Œ λ°œμƒν•œλ‹€.


큰 νƒ€μž… = μž‘μ€ νƒ€μž…
κ΄„ν˜ΈλŠ” μƒλž΅ κ°€λŠ₯ν•˜λ‹€. 
κΈ°λ³Έ νƒ€μž…μ„ ν—ˆμš© λ²”μœ„ 크기순으둜 μ •λ¦¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

byte < short < int < long < float < double

예제)

public class PromotionExample {
	public static void main(String[] args) {
		byte byteValue = 10; //int
		//int(4) <- byte(1)
		int intValue = byteValue;
		System.out.println("intValue : "+intValue);
		
		
		char charValue = 'κ°€';
		//int(4) <- char(2)
		intValue = charValue;
		System.out.println("κ°€μ˜ μœ λ‹ˆμ½”λ“œ : "+intValue);
	
		
		intValue = 50;
		//long(8) <- int(4)
		long longValue = intValue;
		System.out.println("longValue : "+longValue);
		
		
		longValue = 100;
		//float(4) <- int(4)
		float floatValue = longValue;
		System.out.println("floatValue : "+floatValue);
		//κ°•μ œ ν˜•λ³€ν™˜ 문법
		intValue = (int)floatValue;
		
		floatValue = 100.5F;
		//double(8) <- float(4)
		double doubleValue = floatValue;
		System.out.println("doubleValue: "+doubleValue);
	}
}

κ²°κ³Ό) 
int 
μ •μˆ˜λ§Œ ν‘œν˜„
float μ •μˆ˜, μ†Œμˆ˜μ  λ‘˜ λ‹€ ν‘œν˜„. 더 크닀. 
float(4) <- int(4)둜 κ°•μ œ ν˜•λ³€ν™˜λœλ‹€. 

intValue : 10
κ°€μ˜ μœ λ‹ˆμ½”λ“œ : 44032
longValue : 50
floatValue : 100.0
doubleValue: 100.5

2) κ°•μ œ νƒ€μž… λ³€ν™˜ (Casting, explicit conversion) (큰 μž‘μ€)

큰 ν—ˆμš© λ²”μœ„ νƒ€μž…μ„ μž‘μ€ ν—ˆμš© λ²”μœ„ νƒ€μž…μœΌλ‘œ κ°•μ œλ‘œ λ‚˜λˆ μ„œ μ €μž₯ν•˜λŠ” 것
μž‘μ€ νƒ€μž… = (μž‘μ€ νƒ€μž…)큰 νƒ€μž…
μΊμŠ€νŒ… μ—°μ‚°μž κ΄„ν˜Έ (λ‚˜λˆ„λŠ” λ‹¨μœ„)λ₯Ό μ‚¬μš©ν•œλ‹€. μžλ°”μ—μ„œλŠ” 이 κ΄„ν˜Έλ₯Ό νƒ€μž… 캐슀트(type cast) μ—°μ‚°μžλΌκ³  ν•œλ‹€.

int intValue = 10;
byte byteValue = (byte) intValue; //int νƒ€μž…μ€ byte νƒ€μž…λ³΄λ‹€ 더 큰 ν—ˆμš© λ²”μœ„λ₯Ό κ°€μ§€λ―€λ‘œ μžλ™ λ³€ν™˜ λ˜μ§€ μ•ŠλŠ”λ‹€. κ°•μ œ νƒ€μž… λ³€ν™˜ν•œλ‹€.

int νƒ€μž…은 byte νƒ€μž…보닀 더 큰 ν—ˆμš© λ²”μœ„λ₯Ό 가진닀. λ”°λΌμ„œ int νƒ€μž…은 byte νƒ€μž…μœΌλ‘œ μžλ™ λ³€ν™˜ λ˜μ§€ μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ (byte) μΊμŠ€νŒ… μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ byte νƒ€μž…μœΌλ‘œ κ°•μ œ λ³€ν™˜ν•  수 μžˆλ‹€.

예제)

public class CastingExample {
	public static void main(String[] args) {
		int intValue = 44032;
		// char(2) <- int(4): κ°•μ œν˜• λ³€ν™˜ 
		char charValue = (char) intValue;
		System.out.println("charValue : "+charValue);
		
		long longValue = 500;
		// int(4) <- long(8): κ°•μ œν˜• λ³€ν™˜ 
		intValue = (int) longValue;
		System.out.println("intValue : "+intValue);
		
		double doubleValue = 3.14;
		// int(4) <- double(8): κ°•μ œν˜• λ³€ν™˜ 
		intValue = (int) doubleValue;
		System.out.println("intValue : "+intValue);
	}
}

κ²°κ³Ό)

charValue : κ°€
intValue : 500
intValue : 3

3) μ •μˆ˜ μ—°μ‚°μ—μ„œμ˜ μžλ™ νƒ€μž… λ³€ν™˜ p. 76

μ •μˆ˜ νƒ€μž… λ³€μˆ˜κ°€ μ‚°μˆ  μ—°μ‚°μ‹μ—μ„œ ν”Όμ—°μ‚°μžλ‘œ μ‚¬μš©ν•˜λ©΄
int νƒ€μž…보닀 μž‘μ€ byte, short νƒ€μž…μ˜ λ³€μˆ˜λŠ” int νƒ€μž…μœΌλ‘œ μžλ™ νƒ€μž… λ³€ν™˜λ˜μ–΄ 연산을 μˆ˜ν–‰ν•œλ‹€.
In mathematics, an operand is the object of a mathematical operation, i.e., it is the object or quantity that is operated on.

public class ByteOperationExample {
	public static void main(String[] args) {
		//byte result = (byte)(x+y); 첫번째 방법
		byte x = 10;
		byte y = 20;
		byte result2 = (byte)(x+y);
		System.out.println(result2);
		
		//λ‘λ²ˆμ§Έ 방법 
		int result1 = x + y;
		System.out.println(result1);
	}
}

예제) μ •μˆ˜ νƒ€μž…μ˜ μ—°μ‚°

public class LongOperationExample {
	public static void main(String[] args) {
		byte value1 = 10;
		int value2 = 100;
		long value3 = 1000L;
		//				byte + int    + long
		//				int  + int    + long
		//				long + long   + long(
		long result = value1 + value2 + value3;
		System.out.println(result);
	}
}

κ²°κ³Ό)

1110

4) μ‹€μˆ˜ μ—°μ‚°μ—μ„œμ˜ μžλ™ νƒ€μž… λ³€ν™˜ p. 78

μ‹€μˆ˜ νƒ€μž… λ³€μˆ˜κ°€ μ‚°μˆ  μ—°μ‚°μ‹μ—μ„œ ν”Όμ—°μ‚°μžλ‘œ μ‚¬μš©λ  경우 두 ν”Όμ—°μ‚°μžκ°€ λ™μΌν•œ νƒ€μž…μ΄λΌλ©΄ ν•΄λ‹Ή νƒ€μž…μœΌλ‘œ μ—°μ‚°λ˜μ§€λ§Œ,
ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ double νƒ€μž…이라면 λ‹€λ₯Έ ν”Όμ—°μ‚°μžλ„ double νƒ€μž…μœΌλ‘œ μžλ™ νƒ€μž… λ³€ν™˜λ˜μ–΄ 연산을 μˆ˜ν–‰ν•œλ‹€. λ”°λΌμ„œ μ—°μ‚° κ²°κ³ΌλŠ” double νƒ€μž…이 λœλ‹€.

int νƒ€μž…κ³Ό double νƒ€μž…을 연산해도 λ™μΌν•œ 과정을 κ±°μΉœλ‹€. λ¨Όμ € int νƒ€μž…μ˜ ν”Όμ—°μ‚°μžκ°€ double νƒ€μž…μœΌλ‘œ μžλ™ λ³€ν™˜λ˜κ³  연산을 μˆ˜ν–‰ν•œλ‹€. 

int intValue = 10;
double doubleValue = 5.5;
double result = intValue + doubleValue; //intValueλŠ” doubleκ°’μœΌλ‘œ λ³€ν™˜ν•œλ‹€. result = 15.5

λ§Œμ•½ κΌ­ int νƒ€μž…μœΌλ‘œ 연산을 ν•΄μ•Ό ν•œλ‹€λ©΄ double νƒ€μž…을 int νƒ€μž…μœΌλ‘œ κ°•μ œ λ³€ν™˜ν•˜κ³  λ§μ…ˆ 연산을 ν•˜λ©΄ λœλ‹€.

int intValue = 10;
double doubleValue = 5.5;
int result = intValue + (int) doubleValue; //result = 15


예제)

public class OperatorPromotionException {
	public static void main(String[] args) {
		//				μ‹€μˆ˜ + μ‹€μˆ˜ 
		double result1 = 1.2f + 3.4;
		//				μ •μˆ˜ + μ‹€μˆ˜
		//				μ‹€μˆ˜ + μ‹€μˆ˜
		//				10.0+5.5
		double result2 = 10 + 5.5;
		//κ°•μ œ ν˜•λ³€ν™˜ (double -> int)
		int result3 = (int)(10 + 5.5);
		
		System.out.println("result1: "+result1);
		System.out.println("result2: "+result2);
		System.out.println("result3: "+result3);
	}
}

κ²°κ³Ό)

result1: 4.600000047683716
result2: 15.5
result3: 15

예제2) p.81

public class OperatorPromotionException2 {
	public static void main(String[] args) {
		byte byteValue1 = 10;
		byte byteValue2 = 20;
		//byte byteValue3 = byteValue1 + byteValue2;
		//첫번째 방법: μžλ™ νƒ€μž… λ³€ν™˜: 큰 νƒ€μž… = μž‘μ€ νƒ€μž…(μž‘μ€ νƒ€μž…→ 큰 νƒ€μž…)
		//byteValue1 + byteValue2λŠ” int νƒ€μž…μ΄λ‹€. 
		int byteValue3 = byteValue1 + byteValue2;
		//λ‘λ²ˆμ§Έ 방법: κ°•μ œ νƒ€μž… λ³€ν™˜: μž‘μ€ νƒ€μž… = (μž‘μ€ νƒ€μž…)큰 νƒ€μž…
		byte byteValue4 = (byte)(byteValue1 + byteValue2);
		System.out.println(byteValue3);
		System.out.println(byteValue4);
	}
}

κ²°κ³Ό)

30
30

예제3)

		char charValue1 = 'A';
		char charValue2 = '1';
		
		//첫번째 방법: μžλ™ νƒ€μž… λ³€ν™˜: 큰 νƒ€μž… = μž‘μ€ νƒ€μž…(μž‘μ€ νƒ€μž… → 큰 νƒ€μž…)
		//char charValue3 = charValue1 + charValue2;
		int intValue2 = charValue1 + charValue2;
		System.out.println(intValue2);
		//λ‘λ²ˆμ§Έ 방법: κ°•μ œ νƒ€μž… λ³€ν™˜: μž‘μ€ νƒ€μž… = (μž‘μ€ νƒ€μž…)큰 νƒ€μž…
		char charValue3 = (char)(charValue1 + charValue2); 
		System.out.println(charValue3);

κ²°κ³Ό)

114
r

예제 4) intλŠ” μ†Œμˆ˜μ μ„ μ €μž₯ν•˜λŠ” 곡간이 μ—†λ‹€. μ†Œμˆ˜μ μ€ 버렀진닀.

		int intValue3 = 10;
		int intValue4 = intValue3/4;
		System.out.println(intValue4);
		double intValue5 = intValue3/4;
		System.out.println(intValue5);


κ²°κ³Ό)

2
2.0

예제 5)

		int x = 1;
		int y = 2;
		double result = (double)x/y;
		System.out.println(result);

κ²°κ³Ό)

0.5

5) + μ—°μ‚°μ—μ„œμ˜ λ¬Έμžμ—΄ μžλ™ νƒ€μž… λ³€ν™˜ p. 82

1. ν”Όμ—°μ‚°μžκ°€ λͺ¨λ‘ 숫자일 경우: λ§μ…ˆ μ—°μ‚° μˆ˜ν–‰ν•œλ‹€. 
2. ν”Όμ—°μ‚°μž 쀑 ν•˜λ‚˜κ°€ λ¬Έμžμ—΄μΌ 경우: λ‚˜λ¨Έμ§€ ν”Όμ—°μ‚°μžλ„ λ¬Έμžμ—΄λ‘œ μžλ™ λ³€ν™˜λ˜μ–΄ λ¬Έμžμ—΄ κ²°ν•© 연산을 μˆ˜ν–‰ν•œλ‹€.

λ¨Όμ € μˆ˜ν–‰λœ 연산이 λ§μ…ˆ 연산이라면 λ§μ…ˆ κ²°κ³Όλ₯Ό 가지고 κ·Έλ‹€μŒ + 연산을 μˆ˜ν–‰ν•œλ‹€.

String str = 1 + 2 + "3";
String str = 3 + "3";
String str = 33;

μ•žμ—μ„œλΆ€ν„° 순차적으둜 + 연산을 μˆ˜ν–‰ν•˜μ§€ μ•Šκ³  μš°μ„  μ—°μ‚°ν•˜κ³  싢은 뢀뢄이 μžˆλ‹€λ©΄ ν•΄λ‹Ή 뢀뢄을 κ΄„ν˜Έ ()둜 감싸쀀닀. κ΄„ν˜ΈλŠ” μ΅œμš°μ„ μœΌλ‘œ 연산을 μˆ˜ν–‰ν•œλ‹€. 

예제) CONCATENATE(μ—°μ‡„μ‹œν‚€λ‹€)ν•¨μˆ˜λŠ” μ—¬λŸ¬ 개의 λ²”μœ„ λ˜λŠ” μ—¬λŸ¬κ°œμ˜ ν…μŠ€νŠΈ λ¬Έμžμ—΄μ„ ν•˜λ‚˜μ˜ ν…μŠ€νŠΈ λ¬Έμžμ—΄λ‘œ μ—°κ²°ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
The concat() method appends (concatenate) a string to the end of another string.

public class StringConcatExample {
	public static void main(String[] args) {
		//숫자 μ—°μ‚°
		//			숫자 + 숫자 + 숫자
		int value = 10 + 2 + 8;
		System.out.println("value: " + value);
		
		//λ¬Έμžμ—΄ κ²°ν•© μ—°μ‚°μž(+)
		//			숫자 + 숫자 + λ¬Έμžμ—΄
		//			10 + 2(12)
		//					12+"8"이고, λ’€κ°€ λ¬Έμžμ—΄μ΄λ―€λ‘œ +μ—°μ‚°μžλŠ” 두 개의 값을 μ—°κ²°μ‹œν‚¨λ‹€.
		//			128
		String str1 = 10 + 2 + "8";
		System.out.println("str1: " + str1);
	}
}

κ²°κ³Ό) 

value: 20
str1: 128

6) λ¬Έμžμ—΄μ„ κΈ°λ³Έ νƒ€μž…μœΌλ‘œ κ°•μ œ νƒ€μž… λ³€ν™˜ p. 83

String: κΈ°λ³Έν˜• νƒ€μž…μ΄ μ•„λ‹ˆλ‹€. μ°Έμ‘°ν˜• νƒ€μž…μ΄λ‹€.  Stringμ΄λΌλŠ” 객체둜 μ €μž₯ν•œλ‹€. 

ex) "12"와 "3.5"λ₯Ό μ •μˆ˜ 및 μ‹€μˆ˜ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•΄μ„œ 숫자 연산을 ν•œλ‹€.

λ³€ν™˜ νƒ€μž… μ‚¬μš© 예
String ➜ byte String str = "10";
byte value = Byte.parseByte(str);
String ➜ short String str = "200";
short value = Short.parseShort(str);
String ➜ int String str = "300000";
int value = Integer.parseInt(str);
String ➜ long String str = "40000000000';
long value = Long.parseLong(str);
String ➜ float String str = "12.345";
float value = Float.parseFloat(str);
String ➜ double String str = "12.345";
double value = Double.parseDouble(str);
String ➜ boolean String str = "true";
boolean value = Boolean.parseBoolean(str);

 

κΈ°λ³Έ νƒ€μž…(byte, short, char, int, long, float, double, boolean)의 값을 λ¬Έμžμ—΄λ‘œ λ³€κ²½ν•˜λŠ” κ²½μš°μ—λŠ” κ°„λ‹¨νžˆ String.valueOf() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•œλ‹€.

String str = String.valueOf(κΈ°λ³Ένƒ€μž…κ°’);

ex) λ¬Έμžμ—΄ "3"을 얻을 수 μžˆλ‹€.

String.valueOf(3)

예제)

public class PrimitiveAndStringConversionExample {
	public static void main(String[] args) {
		//String -> int
		int value1 = Integer.parseInt("10");
		//String -> double
		double value2 = Double.parseDouble("3.14");
		//String -> boolean
		boolean value3 = Boolean.parseBoolean("true");
		
		System.out.println("value1: " + value1);
		System.out.println("value2: " + value2);
		System.out.println("value3: " + value3);
		
		//int -> String
		String str1 = String.valueOf(10);
		//double -> String
		String str2 = String.valueOf(3.14);
		//boolean -> String
		String str3 = String.valueOf(true);
		
		System.out.println("str1: " + str1);
		System.out.println("str2: " + str2);
		System.out.println("str3: " + str3);
	}
}

κ²°κ³Ό)

value1: 10
value2: 3.14
value3: true
str1: 10
str2: 3.14
str3: true

charAtμ΄λž€ string νƒ€μž…μœΌλ‘œ 받은 λ¬Έμžμ—΄μ„ char νƒ€μž…μœΌλ‘œ ν•œ κΈ€μžλ§Œ λ°›λŠ” ν•¨μˆ˜μ΄λ‹€. 

char var4 = strValue.charAt(0); //0: 인덱슀 번호

데이터 손싀을 막기 μœ„ν•΄ μž‘μ€ νƒ€μž… → 큰 νƒ€μž…μœΌλ‘œ κ°„λ‹€.


마무리 p. 85

1) μžλ™ νƒ€μž… λ³€ν™˜: ν° νƒ€μž… = μž‘μ€ νƒ€μž…(μž‘μ€ νƒ€μž… → 큰 νƒ€μž…)
μžλ™μœΌλ‘œ νƒ€μž…μ΄ λ³€ν™˜λ˜λŠ” 것

byte byteValue = 10;
int intValue = byteValue; //int νƒ€μž…μ΄ byte νƒ€μž…λ³΄λ‹€ ν—ˆμš© λ²”μœ„κ°€ 더 크기 λ•Œλ¬Έμ— μžλ™ νƒ€μž… λ³€ν™˜λœλ‹€.

 

2) κ°•μ œ νƒ€μž… λ³€ν™˜: μž‘은 νƒ€μž… = (μž‘μ€ νƒ€μž…)큰 νƒ€μž…(큰 νƒ€μž… → μž‘μ€ νƒ€μž…)

int intValue = 10;
byte byteValue = (byte) intValue; //int νƒ€μž…μ€ byte νƒ€μž…λ³΄λ‹€ 더 큰 ν—ˆμš© λ²”μœ„λ₯Ό κ°€μ§€λ―€λ‘œ μžλ™ λ³€ν™˜ λ˜μ§€ μ•ŠλŠ”λ‹€. κ°•μ œ νƒ€μž… λ³€ν™˜ν•œλ‹€.


κ°•μ œλ‘œ νƒ€μž…μ„ λ³€ν™˜ν•˜λŠ” 것
ex) short, char의 경우 μš°μœ„κ°€ μ—†κ³  κ°•μ œλ‘œ ν˜•λ³€ν™˜ν•œλ‹€. 

3) λ¬Έμžμ—΄ κ²°ν•© μ—°μ‚°: λ¬Έμžμ—΄κ³Ό + 연산을 ν•˜λ©΄ λ‹€λ₯Έ ν”Όμ—°μ‚°μžλ„ λ¬Έμžμ—΄λ‘œ λ³€ν™˜λ˜μ–΄ λ¬Έμžμ—΄ 결합이 μΌμ–΄λ‚œλ‹€.

4) Integer.parseInt(): λ¬Έμžμ—΄μ„ μ •μˆ˜ int νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œλ‹€.

5) Double.parseDouble(): λ¬Έμžμ—΄μ„ μ‹€μˆ˜ double νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œλ‹€. 


2.4 λ³€μˆ˜μ™€ μ‹œμŠ€ν…œ μž…μΆœλ ₯ p. 89

ν‘œμ€€ 좜λ ₯ μž₯μΉ˜λŠ” λͺ¨λ‹ˆν„°μ΄κ³ , ν‘œμ€€ μž…λ ₯ μž₯μΉ˜λŠ” ν‚€λ³΄λ“œμ΄λ‹€. 
λ³€μˆ˜μ— μ €μž₯된 값을 λͺ¨λ‹ˆν„°λ‘œ 좜λ ₯ν•˜λŠ” 방법과 ν‚€λ³΄λ“œλ‘œλΆ€ν„° 데이터λ₯Ό 읽고 λ³€μˆ˜μ— μ €μž₯ν•˜λŠ” 방법을 μ•Œμ•„λ³Έλ‹€. 

System.out은 μ‹œμŠ€ν…œμ˜ ν‘œμ€€ 좜λ ₯ μž₯치λ₯Ό λ§ν•œλ‹€. in은 ν‘œμ€€ μž…λ ₯ μž₯μΉ˜μ΄λ‹€. 

System.in.read();

1) λͺ¨λ‹ˆν„°λ‘œ λ³€μˆ«κ°’ 좜λ ₯ν•˜κΈ°

System. + out. + println(λ¦¬ν„°λŸ΄ λ˜λŠ” λ³€μˆ˜);

System: μ‹œμŠ€ν…œμ΄ 가지고 μžˆλŠ”
out: 좜λ ₯ μž₯치둜
println(λ¦¬ν„°λŸ΄ λ˜λŠ” λ³€μˆ˜): κ΄„ν˜Έ μ•ˆμ˜ λ‚΄μš©μ„ 좜λ ₯ν•˜κ³  행을 λ°”κΎΌλ‹€.

printf("ν˜•μ‹λ¬Έμžμ—΄",κ°’1,κ°’2,...);

κ΄„ν˜Έ μ•ˆμ˜ 첫 번째 λ¬Έμžμ—΄ ν˜•μ‹λŒ€λ‘œ λ‚΄μš©μ„ 좜λ ₯ν•œλ‹€.

%[$argument_index$][flags][width][.precision][conversion]

%: ν˜•μ‹ λ¬Έμžμ—΄μ˜ μ‹œμž‘
[$argument_index$]: κ°’μ˜ 순번 ex) 1$λŠ” 첫 번째 κ°’, 2$λŠ” 두 번째 값을 λœ»ν•œλ‹€. 
[flags]: -, o: 빈자리λ₯Ό μ±„μš°λŠ” 방법인데 μƒλž΅λ˜λ©΄ μ™Όμͺ½μ΄ 곡백으둜 μ±„μ›Œμ§€κ³ , -κ°€ 였면 였λ₯Έμͺ½μ΄ 곡백으둜 μ±„μ›Œμ§„λ‹€. 0은 곡백 λŒ€μ‹  0으둜 μ±„μš΄λ‹€. 

[width]: 전체 자릿수
[.precision]: μ†Œμˆ˜ 자릿수
[conversion]: λ³€ν™˜ 문자, μ œκ³΅λ˜λŠ” κ°’μ˜ νƒ€μž…μ— 따라 d(μ •μˆ˜), f(μ‹€μˆ˜), s(λ¬Έμžμ—΄)을 μž…λ ₯ν•œλ‹€.
ν˜•μ‹ λ¬Έμžμ—΄μ—μ„œ %와 conversion(λ³€ν™˜ 문자)은 ν•„μˆ˜λ‘œ μž‘μ„±ν•˜κ³  κ·Έ μ™Έμ˜ ν•­λͺ©μ€ λͺ¨λ‘ μƒλž΅ν•  수 μžˆλ‹€.

자주 μ‚¬μš©λ˜λŠ” ν˜•μ‹ λ¬Έμžμ—΄
μ‹€μˆ˜: %전체길이.μ†Œμˆ˜μ μ΄ λ‚˜μ˜€λŠ” 개수

ν˜•μ‹ν™”λœ λ¬Έμžμ—΄ μ„€λͺ… 좜λ ₯ ν˜•νƒœ
μ •μˆ˜ %d μ •μˆ˜ 123
%6d 6자리 μ •μˆ˜, μ™Όμͺ½ 빈 자리 곡백 ___123
%-6d 6자리 μ •μˆ˜, 였λ₯Έμͺ½ 빈 자리 곡백 123___
%06d 6자리 μ •μˆ˜, μ™Όμͺ½ 빈 자리 0 채움 000123
μ‹€μˆ˜ %10.2f μ†Œμˆ˜μ  이상 7자리, μ†Œμˆ˜μ  μ΄ν•˜ 2자리, μ™Όμͺ½ 빈 자리 곡백 ___123.45
%-10.2f μ†Œμˆ˜μ  이상 7자리, μ†Œμˆ˜μ  μ΄ν•˜ 2자리, 였λ₯Έμͺ½ 빈 자리 곡백 123.45___
%010.2f μ†Œμˆ˜μ  이상 7자리, μ†Œμˆ˜μ  μ΄ν•˜ 2자리, μ™Όμͺ½ 빈 자리 0채움 0000123.45
λ¬Έμžμ—΄ %s λ¬Έμžμ—΄ abc
%6s 6자리 λ¬Έμžμ—΄, μ™Όμͺ½ 빈 자리 곡백 ___abc
%-6s 6자리 λ¬Έμžμ—΄, 였λ₯Έμͺ½ 빈 자리 곡백 abc___
특수문자 \t νƒ­(tab)  
\n μ€„λ°”κΏˆ  
%% % %

예제) p. 91

public class P90PrintExample {
	public static void main(String[] args) {
		int value = 123;
		System.out.println("μƒν’ˆμ˜ 가격: "+value+"원");
		//			printf("ν˜•μ‹λ¬Έμžμ—΄",κ°’)
		System.out.printf("μƒν’ˆμ˜ 가격:%d\n원", value);
		System.out.printf("μƒν’ˆμ˜ 가격:%6d\n원", value);
		System.out.printf("μƒν’ˆμ˜ 가격:%-6d\n원", value);
		System.out.printf("μƒν’ˆμ˜ 가격:%06d\n원", value);
		
		double area = 3.14 * 10 * 10;
		
		System.out.printf("λ°˜μ§€λ¦„μ΄ %d인 μ›μ˜ 넓이: %10.2f\n",10,area);
		
		String name = "홍길동";
		String job = "도적";
		System.out.printf("%6d | %-10s | %10s\n", 1, name, job);
	}
}

κ²°κ³Ό)

μƒν’ˆμ˜ 가격: 123원
μƒν’ˆμ˜ 가격:123
μ›μƒν’ˆμ˜ 가격:   123
μ›μƒν’ˆμ˜ 가격:123   
μ›μƒν’ˆμ˜ 가격:000123
μ›λ°˜μ§€λ¦„μ΄ 10인 μ›μ˜ 넓이:     314.00
     1 | 홍길동        |         도적

2) ν‚€λ³΄λ“œμ—μ„œ μž…λ ₯된 λ‚΄μš©μ„ λ³€μˆ˜μ— μ €μž₯ν•˜κΈ° p. 92

ν‚€λ³΄λ“œμ—μ„œ ν‚€ ν•˜λ‚˜λ₯Ό μž…λ ₯ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” 숫자둜 된 ν‚€μ½”λ“œλ₯Ό 읽을 수 μžˆλ‹€.
ex) a = 97번, 1 = 49번

  1. keycode: (computing) A code that represents a keypress.
int keyCode = System. + in. + read();

System: μ‹œμŠ€ν…œμ΄ 가지고 μžˆλŠ”
in: μž…λ ₯ μž₯μΉ˜μ—μ„œ
read: μž…λ ₯된 ν‚€μ½”λ“œλ₯Ό 읽어라.
keyCode: 읽은 ν‚€μ½”λ“œλ₯Ό λ³€μˆ˜μ— μ €μž₯ν•œλ‹€. 

예제)

public class P93KeyCodeExample {
	public static void main(String[] args) throws Exception {
		int keyCode;
		
		keyCode=System.in.read();
		System.out.println("keyCode: " + keyCode);
		
		keyCode=System.in.read();
		System.out.println("keyCode: " + keyCode);
		
		keyCode=System.in.read();
		System.out.println("keyCode: " + keyCode);
	}
}

κ²°κ³Ό) 97: [A]킀에 λŒ€ν•œ ν‚€μ½”λ“œ
[Enter]ν‚€λŠ” λ‹€λ₯Έ 킀와 λ‹€λ₯΄κ²Œ 캐리지 리턴(CR: 13)+라인 ν”ΌνŠΈ(LF: 10) ν‚€μ½”λ“œ ꡬ성 
A carriage return, sometimes known as a cartridge return and often shortened to CR, <CR> or return, is a control character or mechanism used to reset a device's position to the beginning of a line of text.

a
keyCode: 97
keyCode: 13
keyCode: 10

예제) System.in.read()둜 μ½μ—ˆκΈ° λ•Œλ¬Έμ— int νƒ€μž…μ˜ ν‚€μ½”λ“œλ₯Ό μ–»λŠ”λ‹€. 

public class P94ContinueKeyCodeReadExample {

	public static void main(String[] args) throws Exception {
		int keyCode;
		while(true) {
			//λ¬΄ν•œλŒ€λ‘œ ν‚€λ³΄λ“œλ‘œ μž…λ ₯
			keyCode = System.in.read();
			System.out.println("keyCode : "+keyCode);
			//λ§Œμ•½μ— μ‚¬μš©μžκ°€ qλ₯Ό μž…λ ₯ν•˜λ©΄
			if(keyCode==113) {
			// λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•œλ‹€.
			break;	
		}
		System.out.println("μ’…λ£Œ");
	}
}
}


κ²°κ³Ό)

q
keyCode : 113

Scanner ν΄λž˜μŠ€ p. 95

System.in.read()의 단점은 ν‚€μ½”λ“œλ₯Ό ν•˜λ‚˜μ”© 읽기 λ•Œλ¬Έμ— 2개 μ΄μƒμ˜ ν‚€κ°€ μ‘°ν•©λœ ν•œκΈ€μ„ 읽을 수 μ—†λ‹€.
그리고 ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 톡 λ¬Έμžμ—΄λ‘œ 읽지 λͺ»ν•œλ‹€.
μ΄λŸ¬ν•œ 단점을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄ μžλ°”λŠ” Scanner 클래슀λ₯Ό μ œκ³΅ν•˜κ³  μžˆλ‹€.

Scanner scanner = new Scanner(System.in);

Scanner scanner: Scanner νƒ€μž…μ˜ λ³€μˆ˜ scanner을 μ„ μ–Έν•œλ‹€.
new Scanner(System.in): μ‹œμŠ€ν…œμ˜ μž…λ ₯ μž₯μΉ˜λ‘œλΆ€ν„° μ½λŠ” Scanner μƒμ„±ν•œλ‹€.
     System: μ‹œμŠ€ν…œμ΄ 가지고 μžˆλŠ”
     in: μž…λ ₯ μž₯μΉ˜μ—μ„œ
new Scanner: μƒμ„±λœ Scannerλ₯Ό λ³€μˆ˜μ— μ €μž₯ν•œλ‹€.

String inputData = scanner.nextLine();

String inputDate: λ³€μˆ˜ μ„ μ–Έ
scanner.nextLine(): [Enter]ν‚€κ°€ μž…λ ₯되기 μ „κΉŒμ§€ λŒ€κΈ° μƒνƒœκ°€ 되며, [Enter]ν‚€κ°€ μž…λ ₯되면 μž…λ ₯된 λͺ¨λ“  λ‚΄μš©μ„ λ¬Έμžμ—΄λ‘œ μ½λŠ”λ‹€.
scanner: 읽은 λ¬Έμžμ—΄μ„ String λ³€μˆ˜μ— μ €μž₯ν•œλ‹€.

예제) scanner.nextLine()으둜 μ½μ—ˆκΈ° λ•Œλ¬Έμ— String νƒ€μž…μ˜ λ¬Έμžμ—΄μ„ μ–»λŠ”λ‹€. 

import java.util.Scanner; //Scannerκ°€ java.util νŒ¨ν‚€μ§€μ— μžˆλ‹€λŠ” 것을 μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ•Œλ €μ€€λ‹€. 

public class P96_ScannerExample {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String inputData;
		
		while(true) {
			inputData=scanner.nextLine();//μ»€μ„œκ°€ κΉœλΉ‘μΈλ‹€.
			System.out.println("μž…λ ₯된 λ¬Έμžμ—΄: \""+inputData+"\"");
			//λ§Œμ•½μ— μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값이 q이면
			if(inputData.equals("q")) {
				//λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•œλ‹€. 
				break;
			}
		}
		System.out.println("μ’…λ£Œ");
	}
}

κ²°κ³Ό)

a
μž…λ ₯된 λ¬Έμžμ—΄: "a"
q
μž…λ ₯된 λ¬Έμžμ—΄: "q"
μ’…λ£Œ

μžλ°”λŠ” κΈ°λ³Έ νƒ€μž…(byte, short, int, long, float, double, boolean)의 값이 λ™μΌν•œμ§€ 비ꡐ할 λ•Œμ—λŠ” ==λ₯Ό μ‚¬μš©ν•˜κ³ ,
λ¬Έμžμ—΄(String)이 λ™μΌν•œμ§€ 비ꡐ할 λ•Œμ—λŠ”
equals() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.
p. 97

boolean result = inputData. equals("λΉ„κ΅λ¬Έμžμ—΄");

inputData: μ €μž₯된 λ¬Έμžμ—΄
equals("λΉ„κ΅λ¬Έμžμ—΄"): 비ꡐ
result: κ°™μœΌλ©΄ true, λ‹€λ₯΄λ©΄ false

예제) p. 121

String strVar1 = "μ‹ μš©κΆŒ";
String strVar2 = "μ‹ μš©κΆŒ";
System.out.println(strVar1.equals(strVar2)); //true
System.out.println(!strVar1.equals(strVar2)); //false

 


마무리 p. 98

데이터 손싀 μ΅œμ†Œν™”

=== console에 κ²°κ³Ό 좜λ ₯ ===

1) System.out.println(): κ΄„ν˜Έμ— 주어진 λ§€κ°œκ°’μ„ λͺ¨λ‹ˆν„°λ‘œ 좜λ ₯ν•˜κ³  κ°œν–‰(κ°•μ œ μ€„ λ°”κΏˆ)을 ν•œλ‹€.

2) System.out.print(): κ΄„ν˜Έμ— 주어진 λ§€κ°œκ°’μ„ λͺ¨λ‹ˆν„°λ‘œ 좜λ ₯ν•œ ν•˜κ³  κ°œν–‰μ„ ν•˜μ§€ μ•ŠλŠ”λ‹€.

3) System.out.printf(): κ΄„ν˜Έμ— 주어진 ν˜•μ‹λŒ€λ‘œ 좜λ ₯ν•œλ‹€.

=== ν‚€λ³΄λ“œλ‘œ 값을 μž…λ ₯ ===

4) Sytem.in.read(): ν‚€λ³΄λ“œμ— μž…λ ₯된 ν‚€λ³΄λ“œλ₯Ό μ½λŠ”λ‹€.

5) ScannerSystem.in.read()λŠ” ν‚€λ³΄λ“œλ₯Ό ν•˜λ‚˜μ”© 읽기 λ•Œλ¬Έμ— 2개 μ΄μƒμ˜ ν‚€κ°€ μ‘°ν•©λœ ν•œκΈ€μ„ 읽을 수 μ—†λ‹€. ν‚€λ³΄λ“œλ‘œλΆ€ν„° μž…λ ₯된 λ‚΄μš©μ„ 톡 λ¬Έμžμ—΄λ‘œ 읽기 μœ„ν•΄μ„œ Scannerλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.


Q1)

public class P98Q1 {
	public static void main(String[] args) {
		String name = "κΉ€μžλ°”";
		int age = 25;
		String tel1 = "010";
		String tel2 = "123";
		String tel3 = "4567";
		
		System.out.println("이름: " + name);
		System.out.print("λ‚˜μ΄: " + age+"\n");
		//1$: 첫 번째 κ°’, 2$: 두 번째 κ°’, n$: n번 μ§Έ κ°’
		System.out.printf("μ „ν™” : %1s-%2s-%3s", tel1,tel2,tel3);
	}
}

κ²°κ³Ό) 

이름: κΉ€μžλ°”
λ‚˜μ΄: 25
μ „ν™” : 010-123-4567

Q2)

public class P99Q2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("첫번째 수:");
		//String νƒ€μž…μœΌλ‘œ μ €μž₯ν•œλ‹€. 
		String strNum1 = scanner.nextLine();
		
		System.out.println("λ‘λ²ˆμ§Έ 수:");
		String strNum2 = scanner.nextLine();
	
		int num1 = Integer.parseInt(strNum1);
		int num2 = Integer.parseInt(strNum2);
		int result = num1 + num2;
		System.out.println("λ§μ…ˆ κ²°κ³Ό:"+result);
	}
}


κ²°κ³Ό)  μž…λ ₯ν•œ 숫자 2개의 합이 λœ¬λ‹€. 

첫번째 수:
15
λ‘λ²ˆμ§Έ 수:
20
λ§μ…ˆ κ²°κ³Ό:35

Q3)

import java.util.Scanner;
public class P99Q3 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.println("[ν•„μˆ˜ 정보 μž…λ ₯]");
		
		System.out.println("1. 이름: ");
		String name = scanner.nextLine();
		
		System.out.println("2. 주민번호 μ•ž 6자리: ");
		String ssn = scanner.nextLine();
		
		System.out.println("3. μ „ν™”λ²ˆν˜Έ: ");
		String tel = scanner.nextLine();
		
		System.out.println();
		
		System.out.println("[μž…λ ₯된 λ‚΄μš©]");
		System.out.println("1. 이름: " + name);
		System.out.println("2. μ£Όλ―Ό 번호 μ•ž 6자리: " + ssn);
		System.out.println("3. μ „ν™”λ²ˆν˜Έ: " + tel);
	}
}

κ²°κ³Ό) μž…λ ₯ν•œ κ²°κ³Όκ°€ λœ¬λ‹€. 

[ν•„μˆ˜ 정보 μž…λ ₯]
1. 이름: 
μ•ˆλ…•ν•˜μ„Έμš”
2. 주민번호 μ•ž 6자리: 
912345
3. μ „ν™”λ²ˆν˜Έ: 
0101234567

[μž…λ ₯된 λ‚΄μš©]
1. 이름: μ•ˆλ…•ν•˜μ„Έμš”
2. μ£Όλ―Ό 번호 μ•ž 6자리: 912345
3. μ „ν™”λ²ˆν˜Έ: 0101234567

728x90
λ°˜μ‘ν˜•
Comments