3. ๋ณ€์ˆ˜๋ž€? ๋ณ€์ˆ˜์˜ ์„ ์–ธ๊ณผ ์ €์žฅ


1. ๋ณ€์ˆ˜(varialbe)๋ž€?

  • ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

2. ๋ณ€์ˆ˜์˜ ์„ ์–ธ

// ๋ณ€์ˆ˜ํƒ€์ž… ๋ณ€์ˆ˜์ด๋ฆ„;
int age; // ์ •์ˆ˜ํƒ€์ž…์˜ ๋ณ€์ˆ˜ age๋ฅผ ์„ ์–ธ
  • ๋ณ€์ˆ˜์˜ ์„ ์–ธ ์ด์œ 
    • ๊ฐ’(data)์„ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ๋งˆ๋ จํ•˜๊ธฐ ์œ„ํ•ด

3. ๋ณ€์ˆ˜์— ๊ฐ’ ์ €์žฅํ•˜๊ธฐ

int age;  // ์ •์ˆ˜ํƒ€์ž…์˜ ๋ณ€์ˆ˜ age๋ฅผ ์„ ์–ธ
age = 25; // ๋ณ€์ˆ˜ age์— 25๋ฅผ ์ €์žฅ
 
int x = 0;        // ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธ ํ›„, 0์œผ๋กœ ์ดˆ๊ธฐํ™”
int y = 5;        // ๋ณ€์ˆ˜ y๋ฅผ ์„ ์–ธ ํ›„, 5๋กœ ์ดˆ๊ธฐํ™”
int x = 0, y = 5; // ์œ„์˜ ๋‘ ์ค„์„ ํ•œ ์ค„๋กœ
  • ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™” : ๋ณ€์ˆ˜์— ์ฒ˜์Œ์œผ๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ
    • [์ฃผ์˜] ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์ฝ๊ธฐ ์ „์— ๊ผญ! ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•จ.

4. ๋ณ€์ˆ˜์˜ ๊ฐ’ ์ฝ์–ด์˜ค๊ธฐ

int year = 0, age = 14;
year = age + 2000;
// -> year = 14 + 2000;
// -> year = 2014;
age = age + 1; // ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•
// -> age = 14 + 1;
// -> age = 15;
System.out.println(age);
// -> System.out.println(15); // 15๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅ๋จ
  • ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ํ•„์š”ํ•œ ๊ณณ์— ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์ ๋Š”๋‹ค.

4. ๋ณ€์ˆ˜์˜ ํƒ€์ž…


1. ๋ณ€์ˆ˜์˜ ํƒ€์ž…

int age = 25; // ์ •์ˆ˜ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
age = 3.14;   // ํ• ๋‹น๊ฐ’์ด ์ •์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ
  • ๋ณ€์ˆ˜์˜ ํƒ€์ž…์€ ์ €์žฅํ•  ๊ฐ’์˜ ํƒ€์ž…์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค.
char ch = '๊ฐ€';   // char๋Š” ๋ฌธ์ž ํƒ€์ž…
double pi = 3.14; // double์€ ์‹ค์ˆ˜ ํƒ€์ž…
  • ์ €์žฅํ•  ๊ฐ’์˜ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ

2. ๊ฐ’์˜ ํƒ€์ž…

  • 8๊ฐœ์˜ ๊ธฐ๋ณธ ํƒ€์ž… (Primitive Type)
    • ๊ฐ’(data)
      • ๋ฌธ์ž - char
      • ์ˆซ์ž
        • ์ •์ˆ˜ - byte, short, int, long
        • ์‹ค์ˆ˜ - float, double
      • ๋…ผ๋ฆฌ - boolean

5. ์ƒ์ˆ˜์™€ ๋ฆฌํ„ฐ๋Ÿด


int score = 100;
score = 200;
final int MAX = 100; // MAX๋Š” ์ƒ์ˆ˜
MAX = 200;           // ์—๋Ÿฌ
char ch = 'A';
String str = "abc";
// ๋ณ€์ˆ˜ : score, ch, str
// ์ƒ์ˆ˜ : MAX
// ๋ฆฌํ„ฐ๋Ÿด : 100, 200, 'A', "abc"
  • ๋ณ€์ˆ˜(variable) - ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„
  • ์ƒ์ˆ˜(constant) - ํ•œ ๋ฒˆ๋งŒ ๊ฐ’์„ ์ €์žฅ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜
  • ๋ฆฌํ„ฐ๋Ÿด(literal) - ๊ทธ ์ž์ฒด๋กœ ๊ฐ’์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ

6. ๋ฆฌํ„ฐ๋Ÿด์˜ ํƒ€์ž…๊ณผ ์ ‘๋ฏธ์‚ฌ


์ข…๋ฅ˜๋ฆฌํ„ฐ๋Ÿด์ ‘๋ฏธ์‚ฌ
๋…ผ๋ฆฌํ˜•false, true์—†์Œ
์ •์ˆ˜ํ˜•123, 0b0101, 077, 0xFF, 100LL
์‹ค์ˆ˜ํ˜•3.14, 3.0e8, 1.4f, 0x1.0p-1f, d
๋ฌธ์žํ˜•โ€˜Aโ€™, โ€˜1โ€™, โ€˜\nโ€™์—†์Œ
๋ฌธ์ž์—ดโ€œABCโ€, โ€œ123โ€, โ€œAโ€, โ€œtrueโ€์—†์Œ
boolean power = true;
char ch = 'A';
String str = "ABC";
byte b = 127; // intํƒ€์ž…์˜ ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ, ๋‹ค๋งŒ byte์˜ ๋ฒ”์œ„์— ๋“ค์–ด์™€์•ผ ํ•จ
byte b = 128; // ์—๋Ÿฌ
// ์ ‘๋‘์‚ฌ : 0b, 0x, 0
int i = 100;     // 10์ง„์ˆ˜
int bin = 0b0101 // 2์ง„์ˆ˜
int oct = 0100;  // 8์ง„์ˆ˜
int hex = 0x100; // 16์ง„์ˆ˜
long l = 10_000_000_000L; // 20์–ต ์ดˆ๊ณผ ์‹œ L ํ•„์ˆ˜ ์ ์šฉ
long l = 100;             // L ์ƒ๋žต ๊ฐ€๋Šฅ
float f = 3.14f;  // f ์ƒ๋žต ๋ถˆ๊ฐ€
double d = 3.14d; // d ์ƒ๋žต ๊ฐ€๋Šฅ
10. -> double 10.0
.10 -> double 0.10
10f -> float 10.0f
1e3 -> double 1000.0

7. ๋ณ€์ˆ˜์™€ ๋ฆฌํ„ฐ๋Ÿด์˜ ํƒ€์ž… ๋ถˆ์ผ์น˜


int i = 'A';      // int > char
// 'A' ๋Š” 65
long l = 123;     // long > int
double d = 3.14f; // double > float
  • ๋ฒ”์œ„๊ฐ€ โ€˜๋ณ€์ˆ˜ > ๋ฆฌํ„ฐ๋Ÿดโ€™ ์ธ ๊ฒฝ์šฐ, OK
int i = 3_000_000_000; // int์˜ ๋ฒ”์œ„ ๋ฒ—์–ด๋‚จ
long l = 3.14f;        // long < float
float f = 3.14         // float < double
  • ๋ฒ”์œ„๊ฐ€ โ€˜๋ณ€์ˆ˜ < ๋ฆฌํ„ฐ๋Ÿดโ€™ ์ธ ๊ฒฝ์šฐ, ์—๋Ÿฌ
byte b = 100; // OK
byte b = 128; // ์—๋Ÿฌ, (-128 ~ 127) ๋ฒ”์œ„ ๋ฒ—์–ด๋‚จ
  • byte, short ๋ณ€์ˆ˜์— int ๋ฆฌํ„ฐ๋Ÿด ์ €์žฅ ๊ฐ€๋Šฅ
    • ๋‹จ, ๋ณ€์ˆ˜์˜ ํƒ€์ž…์˜ ๋ฒ”์œ„ ์ด๋‚ด์ด์–ด์•ผ ํ•จ

8. ๋ฌธ์ž์™€ ๋ฌธ์ž์—ด


char ch = 'A';
char ch = 'AB'; // ์—๋Ÿฌ
String s = "ABC";
// String์€ ํด๋ž˜์Šค
String s1 = "AB";             // s1์— ์ฃผ์†Œ๋ฅผ ์ €์žฅ
String s2 = new String("AB"); // ์ƒ์„ฑ์ž ์ƒ๋žต ๊ฐ€๋Šฅ
String s = "A";
String s = ""; // ๋นˆ ๋ฌธ์ž์—ด
char ch = '';  // ์—๋Ÿฌ
String s1 = "A" + "B"; // "AB"
""+7 -> ""+"7" -> "7"
""+7+7 -> "7"+7 -> "7"+"7" -> "77"
7+7+"" -> 14+"" -> "14"+"" -> "14"

9. ๋‘ ๋ณ€์ˆ˜ ๋ฐ”๊พธ๊ธฐ


int x = 10, y = 20;
x = y; // y์˜ ๊ฐ’์„ x์— ์ €์žฅ
y = x; // x์˜ ๊ฐ’์„ y์— ์ €์žฅ
int x = 10, y = 20;
int tmp;
tmp = x; // x์˜ ๊ฐ’์„ tmp์— ์ €์žฅ
x = y;   // x์˜ ๊ฐ’์„ y์— ์ €์žฅ
y = tmp; // tmp์˜ ๊ฐ’์„ y์— ์ €์žฅ

10. ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•


  • ๊ธฐ๋ณธํ˜•(Primitive Type)
    • ์˜ค์ง 8๊ฐœ (boolean, char, byte, short, int, long, float, double)
    • ์‹ค์ œ ๊ฐ’์„ ์ €์žฅ
    • ๊ฐ ํƒ€์ž…๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    • ์Šคํƒ ์˜์—ญ์— ์ƒ์„ฑ
  • ์ฐธ์กฐํ˜•(Reference Type)
    • ๊ธฐ๋ณธํ˜•์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ (String, System ๋“ฑ)
    • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅ(4 byte ๋˜๋Š” 8 byte)
    • null ๊ฐ’์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ฐธ์กฐ ํƒ€์ž…
    • ํž™ ์˜์—ญ์— ์ƒ์„ฑ
Date today; // ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜ today๋ฅผ ์„ ์–ธ
today = new Date(); // ๊ฐ์ฒด์ƒ์„ฑ ํ›„ today์— ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ

11. ๊ธฐ๋ณธํ˜•์˜ ์ข…๋ฅ˜์™€ ๋ฒ”์œ„


  • ๊ธฐ๋ณธํ˜•(Primitive Type) - ์ข…๋ฅ˜์™€ ํฌ๊ธฐ
    • ๋…ผ๋ฆฌํ˜• - true์™€ false์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ–์œผ๋ฉฐ, ์กฐ๊ฑด์‹๊ณผ ๋…ผ๋ฆฌ์  ๊ณ„์‚ฐ์— ์‚ฌ์šฉ๋จ
    • ๋ฌธ์žํ˜• - ๋ฌธ์ž๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ณ€์ˆ˜ ๋‹น ํ•˜๋‚˜์˜ ๋ฌธ์ž๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
    • ์ •์ˆ˜ํ˜• - ์ •์ˆ˜๊ฐ’์„ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋จ
      • ์ฃผ๋กœ int์™€ long์„ ์‚ฌ์šฉํ•จ
      • byte๋Š” ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์‚ฌ์šฉ
      • short์€ c์–ธ์–ด์™€์˜ ํ˜ธํ™˜์„ ์œ„ํ•ด ์ถ”๊ฐ€๋จ(์ž˜ ์•ˆ์“ฐ์ž„)
    • ์‹ค์ˆ˜ํ˜• - ์‹ค์ˆ˜๊ฐ’์„ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, float์™€ double์ด ์žˆ์Œ
์ข…๋ฅ˜/ํฌ๊ธฐ1248
๋…ผ๋ฆฌํ˜•boolean
๋ฌธ์žํ˜•char
์ •์ˆ˜ํ˜•byteshortintlong
์‹ค์ˆ˜ํ˜•floatdouble
  • ๊ธฐ๋ณธํ˜•(Primitive Type) - ํ‘œํ˜„๋ฒ”์œ„
    • n๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๊ฐœ์ˆ˜ : ๊ฐœ
    • byte -128 ~ 127
    • short -32768 ~ 32767
    • char 0 ~ 65535
    • int -20์–ต ~ 20์–ต
    • long -800๊ฒฝ ~ 800๊ฒฝ
์ž๋ฃŒํ˜•์ €์žฅ ๊ฐ€๋Šฅํ•œ ๊ฐ’์˜ ๋ฒ”์œ„์ •๋ฐ€๋„bitbyte
float1.4E-45 ~ 3.4E387 ์ž๋ฆฌ324
double4.9E-324 ~ 1.8E30815 ์ž๋ฆฌ648

12. ํ˜•์‹ํ™”๋œ ์ถœ๋ ฅ - printf()


System.out.println(10.0/3); // 3.333333...
  • println()์˜ ๋‹จ์  - ์ถœ๋ ฅํ˜•์‹ ์ง€์ •๋ถˆ๊ฐ€
    • ์‹ค์ˆ˜์˜ ์ž๋ฆฌ์ˆ˜ ์กฐ์ ˆ๋ถˆ๊ฐ€ - ์†Œ์ˆ˜์  n์ž๋ฆฌ๋งŒ ์ถœ๋ ฅํ•˜๋ ค๋ฉด?
System.out.println(0x1A); // 26
  • 10์ง„์ˆ˜๋กœ๋งŒ ์ถœ๋ ฅ๋œ๋‹ค
System.out.printf("%.2f", 10.0/3); // 3.33
System.out.printf("%d", 0x1A); // 26
System.out.printf("%x", 0x1A); // 1A
  • printf()๋กœ ์ถœ๋ ฅํ˜•์‹ ์ง€์ •๊ฐ€๋Šฅ

13. printf()์˜ ์ง€์‹œ์ž


์ง€์‹œ์ž์„ค๋ช…
%bboolean ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ
%ddecimal ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ
%ooctal ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ
%x, %Xhexa-decimal ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ
%ffloating-point ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ
%e, %Eexponent ํ‘œํ˜„์‹์˜ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ
%ccharater๋กœ ์ถœ๋ ฅ
%sstring์œผ๋กœ ์ถœ๋ ฅ
// ์ •์ˆ˜๋ฅผ 10์ง„์ˆ˜, 8์ง„์ˆ˜, 16์ง„์ˆ˜๋กœ ์ถœ๋ ฅ
System.out.printf("%d", 15); // 15 10์ง„์ˆ˜
System.out.printf("%o", 15); // 17 8์ง„์ˆ˜
System.out.printf("%x", 15); // f 16์ง„์ˆ˜
System.out.printf("%s", Integer.toBinaryString(15)); // 1111 2์ง„์ˆ˜
// 8์ง„์ˆ˜์™€ 16์ง„์ˆ˜์— ์ ‘๋‘์‚ฌ ๋ถ™์ด๊ธฐ
System.out.printf("%#o", 15); // 017
System.out.printf("%#x", 15); // 0xf
System.out.printf("%#X", 15); // 0XF
// ์‹ค์ˆ˜ ์ถœ๋ ฅ์„ ์œ„ํ•œ ์ง€์‹œ์ž %f - ์ง€์ˆ˜ํ˜•์‹(%e), ๊ฐ„๋žตํ•œ ํ˜•์‹(%g)
float f = 123.4567890f;
System.out.printf("%f", f); // 123.456787 (์ •๋ฐ€๋„ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฆ„)
System.out.printf("%e", f); // 1.234567e+02
System.out.printf("%g", 123.456789); // 123.457
System.out.printf("%g", 0.00000001); // 1.00000e-8
System.out.printf("[%5d]%n", 10);  // [   10]
System.out.printf("[%-5d]%n", 10); // [10   ]
System.out.printf("[%05d]%n", 10); // [00010]
System.out.printf("d=%14.10f%n", d); // ์ „์ฒด 14์ž๋ฆฌ ์ค‘ ์†Œ์ˆ˜์  ์•„๋ž˜ 10์ž๋ฆฌ
// [  1.2345678900]
System.out.printf("[%s]%n", url);    // [www.codechobo.com]
System.out.printf("[%20s]%n", url);  // [   www.codechobo.com]
System.out.printf("[%-20s]%n", url); // [www.codechobo.com   ]
System.out.printf("[%.8s]%n", url);  // [www.code]

14. ํ™”๋ฉด์œผ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›๊ธฐ


3. ํ™”๋ฉด์—์„œ ์ž…๋ ฅ๋ฐ›๊ธฐ - Scanner

import java.util.*;                       // import๋ฌธ ์ถ”๊ฐ€
Scanner scanner = new Scanner(System.in); // Scanner ๊ฐ์ฒด ์ƒ์„ฑ
int num = scanner.nextInt();              // ํ™”๋ฉด์—์„œ ์ž…๋ ฅ๋ฐ›์€ ์ •์ˆ˜๋ฅผ num์— ์ €์žฅ
String input = scanner.nextLine();        // ํ™”๋ฉด์—์„œ ์ž…๋ ฅ๋ฐ›์€ ๋‚ด์šฉ์„ input์— ์ €์žฅ
int num = Integer.parseInt(input);        // ๋ฌธ์ž์—ด(input)์„ ์ˆซ์ž(num)๋กœ ๋ณ€ํ™˜
  • Scanner๋ž€?
    • ํ™”๋ฉด์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค

15. ์ •์ˆ˜ํ˜•์˜ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ


short sMin = -32768, sMax = 32767;
char cMin = 0, cMax = 65535;
System.out.println("sMin  = " + sMin);             // sMin  = -32768
System.out.println("sMin-1= " + (short)(sMin-1));  // sMin-1= 32767
System.out.println("sMax  = " + sMax);             // sMax  = 32767
System.out.println("sMax+1= " + (short)(sMax+1));  // sMax+1= -32768
System.out.println("cMin  = " + (int)cMin);        // cMin  = 0
System.out.println("cMin-1= " + (int)--cMin);      // cMin-1= 65535
System.out.println("cMax  = " + (int)cMax);        // cMax  = 65535
System.out.println("cMax+1= " + (int)++cMax);      // cMax+1= 0

17. ํƒ€์ž…๊ฐ„์˜ ๋ณ€ํ™˜๋ฐฉ๋ฒ•


1. ๋ฌธ์ž์™€ ์ˆซ์ž๊ฐ„์˜ ๋ณ€ํ™˜

3 + '0' -> '3'
'3' - '0' -> 3

2. ๋ฌธ์ž์—ด๋กœ์˜ ๋ณ€ํ™˜

3 + "" -> "3"
'3' + "" -> "3"

3. ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

Integer.parseInt("3") -> 3
Double.parseDouble("3.14") -> 3.14
"3".charAt(0) -> '3'