Notice
Recent Posts
Recent Comments
Links
ยซ   2025/04   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
Today
In Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

A Joyful AI Research Journey๐ŸŒณ๐Ÿ˜Š

[23] 230131 Java Ch. 2 ๋ณ€์ˆ˜์™€ ํƒ€์ž…: 3. ํƒ€์ž… ๋ณ€ํ™˜, 4. ๋ณ€์ˆ˜์™€ ์‹œ์Šคํ…œ ์ž…์ถœ๋ ฅ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 23์ผ] ๋ณธ๋ฌธ

๐ŸŒณBootcamp Revisionโœจ/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