1. λ³νλ κ²κ³Ό λ³νμ§ μλ κ²
1-1. λ³μ : λ¨ νλμ κ°μ μ μ₯ν μ μλ λ©λͺ¨λ¦¬ κ³΅κ° ( λ³νλ κ² )
-> μ μ₯νκ³ μλ κ°μ΄ λ¬λΌμ§ μ μλ€.
int age; //ageλΌλ μ΄λ¦μ λ³μ μ μΈ
/*
λ³μ νμ
: int
λ³μ μ΄λ¦ : age
*/
1-2. μμ : λ³νμ§ μλ μ μ₯ 곡κ°
- λ°λμ μ μΈκ³Ό λμμ μ΄κΈ°ν ν΄μΌνλ©° κ·Έ νμ μμλ₯Ό λ°κΏ μ μλ€.
final int MAX_SPEED ; //μλ¬ μμλ μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌλ§ ν¨
final int MAX_SPEED = 100; //OK, μ μΈκ³Ό λμμ μ΄κΈ°ν
MAX_SPEED = 200; //μλ¬ μμμ κ°μ λ³κ²½ λΆκ°
2. λ³μμ νμ
- κΈ°λ³Έν vs μ°Έμ‘°ν
- κΈ°λ³Έν : μ€μ κ°(data)λ₯Ό μ μ₯
- μ°Έμ‘°ν : μ΄λ€ κ°μ΄ μ μ₯λμ΄ μλ μ£Όμ(memory address)λ₯Ό κ°μΌλ‘ κ°μ§, κΈ°λ³Έν λΉΌκ³ λ€ ν¬ν¨λλ€.
2-1. κΈ°λ³Έν
2-1-1. κΈ°λ³Έν μ’ λ₯μ ν¬κΈ°
- λ
Όλ¦¬ν - boolean
- default κ°μ falseλ€.
- booleanμ true / false λκ°μ§ κ°λ§ ννν μ μμΌλ©΄ λλ―λ‘ κ°μ₯ μμ κ°μΈ 1 byte. -> μλ°μμλ μ΅μλ¨μκ° byteλΌμ 1bitλ§ νμνμ§λ§, 1byteμ 곡κ°μ μ°¨μ§νλ€
- boolean flag = true; // 1. λ Όλ¦¬ν λ³μ boolean μΌλ‘ μ μΈ λ° True κ°μΌλ‘ μ΄κΈ°ν
- flag = false; // 2. False κ°μΌλ‘λ μ μ₯ν μ μλ€.
- λ¬Έμν - char
- charλ μλ°μμ μ λμ½λ(2byte λ¬Έμ 체κ³)λ₯Ό μ¬μ©νλ―λ‘ 2byte.
- char alphabet = 'A'; // λ¬Έμ νλλ₯Ό μ μ₯, λ¬Έμ 'A'μ μ λμ½λλ 65, λ³μμλ 65κ° μ μ₯λλ€.
- μ΄λ€ λ¬Έμμ μ λμ½λλ₯Ό μκ³ μΆλ€λ©΄ int νμΌλ‘ νλ³νμ ν΄μ μΆλ ₯ν΄λ³΄λ©΄ μ μ μλ€.
- charν λ³μμ λ¬Έμλ₯Ό μ μ₯ν λ, λ¬Έμ 리ν°λ΄ λμ μ μ λμ½λλ₯Ό μ§μ μ¬μ©ν μλ μλ€.
- νΉμλ¬Έμ tab κ°μ κ²½μ°μλ ‘\t’λ‘ μ μ₯κ°λ₯νλ€.
- char νμ
μ ννλ°©μ
- λ¬Έμμ μ λμ½λ(μ μ)κ° μ μ₯λκ³ νννμ μμ μ μνκ³Ό λμΌνλ, μμλ₯Ό λνλΌ νμκ° μμΌλ―λ‘ ννν μ μλ κ°μ λ²μκ° λ€λ₯΄λ€.
- 2 byte (=16bit)λ‘λ λͺ¨λ 2^16(=65536)κ°μ κ°μ ννν μ μλλ°, λͺ¨λ μμμ΄λ―λ‘ ‘0~65536’μ λ²μλ₯Ό κ°μ§λ€.
- μ μνμΈ shortλ μμννμ μ¬μ©νλ―λ‘ ‘-32768 ~ 32768’μ λ²μλ‘ κ°λλ€.
- char λ shortμ λλ€ 65κ° μ μ₯λμ΄μλλΌλ μΆλ ₯μμλ κ° νμ μ λ§κ² λ¬Έμ, μ μλ‘ μΆλ ₯λ¨μ μ£Όμνλ€.
- μΈμ½λ©κ³Ό λμ½λ©
- λ¬Έμ ↔ μ«μ λ³νν λμ κΈ°μ€μ μ λμ½λμ΄λ€. ( λ¬Έμ → μ«μ : μΈμ½λ© )
- μ΄ κΈ°μ€νκ° μΈμ½λ©κ³Ό λμ½λ©ν λ λ€λ₯΄λ©΄ κΈμκ° κΉ¨μ Έ λ³΄μΌ μ μλ€.
- byteλ ν¬κΈ°κ° 1 byteλΌμ byte.
- int(4 byte)λ₯Ό κΈ°μ€μΌλ‘ ‘짧μμ short(2byte), κΈΈμ΄μ long(8byte). ( short ↔ long )
- byte < short < int < long 1 2 4 8 ⇒ λ¨μλ byte, κΈ°λ³Ένμ intλ€.
- floatμ μ€μκ°μ λΆλμμμ (floating - point) λ°μμΌλ‘ μ μ₯νκΈ° λλ¬Έμ float.
- doubleμ floatλ³΄λ€ λλ°°μ ν¬κΈ° (8byte)λ₯Ό κ°κΈ° λλ¬Έμ double.
- μ€μνμλ ννν μμλ κ°μ λ²μλΏλ§ μλλΌ ‘μ λ°λ(precision)’λ μ€μν μμλ€.
- floatμ κ²½μ° ‘7μ μ리 10μ§μλ₯Ό μ€μ°¨μμ΄ μ μ₯ν μ μλ€’λ λ»μΌλ‘ μ΄ μ΄μμ μ λ°λκ° νμνλ€λ©΄ doubleνμ μ¨μΌνλ€.
- doubleμ μ¬μ©νλ κ²½μ°λ λλΆλΆ λμ λ²μ λλ¬Έμ΄ μλλΌ μ΄ μ λ°λ λλ¬Έμ΄λ€.
- μ°μ°μλ ν₯μ, λ©λͺ¨λ¦¬ μ μ½ → float
- λ ν° κ°μ λ²μ, λμ μ λ°λ → double
byte byteNumber = 127; // byte λ -128 ~ 127 λ²μμ μ«μλ§ μ μ₯ κ°λ₯
short shortNumber = 32767; // short λ -32,768~32,767 λ²μμ μ«μλ§ μ μ₯ κ°λ₯
int intNumber = 2147483647; // int λ -21μ΅~21μ΅ λ²μμ μ«μλ§ μ μ₯ κ°λ₯
long longNumber = 2147483647L; // long μ μ«μλ€μ μνλ²³ L μ λΆμ¬μ νκΈ°νλ©° λ§€μ° ν°μλ₯Ό μ μ₯ κ°λ₯
2-1-2. κΈ°λ³Έν λ³μμ μ μ₯ λ²μ
- μλ₯Ό λ€μ΄ int νμ κ²½μ° '-2^31 ~ 2^31 -1' μ λ²μλ₯Ό κ°λλ€.
**** float κ° long λ³΄λ€ λ λμ λ²μλ₯Ό νννκΈ° λλ¬Έμ μλ νλ³νμ΄ μλλ€.
- why? λΆλ μμμ λ°©μμ΄κΈ° λλ¬Έμ.
- λΆλ μμμ λ°©μμ΄λ? κ°μμ μ§μλ₯Ό ꡬλΆν΄μ μ μ₯νκ³ μ΄ κ°λ€μ κ³±ν κ°μ μ μ₯(νν) νλ λ°©μ
- κ°μ(Mantissa): μ€μ κ°μ μ μ₯νλ λΆλΆ
- μ§μ(Exponent): λΆνΈμλ μ μ
- λΆνΈ(Sign bit): 0μ΄λ©΄ μμ, 1μ΄λ©΄ μμ
2-2. μμμ 리ν°λ΄
- 리ν°λ΄ μ΄λ? κ·Έ μμ²΄λ‘ κ°μ μλ―Ένλ κ².
2-2-1. 리ν°λ΄ νμ
- 16μ§μ → μ λμ¬μ ‘0X’ or ‘0x’
- 8μ§μ → μ λμ¬μ ‘0’
- μ€μνμμλ doubleμ΄ κΈ°λ³Έ μλ£νμ΄λ―λ‘ float νμ μ 리ν°λ΄μλ λ°λμ f μ λ―Έμ¬λ₯Ό λΆμΈλ€.
- νμ
μ λΆμΌμΉ
- νμ μ΄ λ¬λΌλ μ μ₯λ²μκ° λμ νμ μ μ’μ νμ μ κ°μ μ μ₯νλ κ²μ νμ©λλ€.
- κ·Έλ¬λ byte μ short νμ μ 리ν°λ΄μ λ°λ‘ μ‘΄μ¬νμ§ μμΌλ―λ‘ intνμ μ 리ν°λ΄μ μ¬μ©νλ€. λ¨, short νμ μ λ³μκ° μ μ₯ν μ μλ λ²μμ μμ΄μΌνλ€.
- λ¬Έμ 리ν°λ΄κ³Ό λ¬Έμμ΄ λ¦¬ν°λ΄
- char νμ μ λ¬Έμ 리ν°λ΄μ λ¨ νλμ λ¬Έμλ§ μ μ₯ν μ μκ³ , μ¬λ¬ λ¬Έμλ₯Ό μ μ₯νκΈ° μν΄μλ Stringμ μ΄λ€.
- λ¬Έμμ΄ λ¦¬ν°λ΄μΈ Stringμ μλ¬΄λ° λ¬Έμλ λ£μ§ μλ κ²μ νμ©νμ§λ§, λ¬Έμ 리ν°λ΄μ λ°λμ μμ νλμ λ¬Έμκ° μμ΄μΌλ§ νλ€.
- λ¬Έμμ΄μ λ§μ μ°μ° μν κ²°κ³Ό
λ¬Έμμ΄ + any type → λ¬Έμμ΄ + λ¬Έμμ΄ → λ¬Έμμ΄
any type + λ¬Έμμ΄ → λ¬Έμμ΄ + λ¬Έμμ΄ → λ¬Έμμ΄
3. νλ³ν
λ³μ λλ μμμ νμ μ λ€λ₯Έ νμ μΌλ‘ λ³ννλ κ²
3-2. νλ³ν λ°©λ²
- (νμ ) νΌμ°μ°μ
- float νμ μ κ°μ intλ‘ λ³νν λ μμμ μ΄νμ κ°μ λ°μ¬λ¦Όμ΄ μλ λ²λ¦ΌμΌλ‘ μ²λ¦¬νλ€.
- ν° νμ (int : 4byte) → μμ νμ (byte : 1byte)λ‘ νλ³ν μ κ° μμ€μ΄ μΌμ΄λ μ μλ€. (κ°μ νλ³ν = μΊμ€ν )
3-3. μ€μν κ°μ νλ³ν
- float μμ doubleλ‘ νλ³ν
- μ§μ(E)λ floatμ κΈ°μ μΈ 127μ λΉΌκ³ , doubleμ κΈ°μ μΈ 1023μ λν΄μ λ³ν
- κ°μ(M)λ floatμ κ°μ 23μ리λ₯Ό μ±μ°κ³ λ¨μ μ리λ₯Ό 0μΌλ‘ μ±μ΄λ€.
- doubleμμ floatμΌλ‘ νλ³ν
- μ§μ(E)λ doubleμ κΈ°μ μΈ 1023μ λΉΌκ³ , floatμ κΈ°μ μΈ 127μ λν ν λ³ν
- κ°μ(M)λ doubleμ κ°μ 52μ리 μ€ 23μλ¦¬λ§ μ μ₯λκ³ λλ¨Έμ§λ λ²λ €μ§λ€. μ΄ λ, 24λ²μ§Έ μ리μμ λ°μ¬λ¦Όμ΄ λ°μν μ μλ€λ μ μ μ£Όμνλ€.
- κ·Έλ¦¬κ³ floatνμ μ λ²μλ₯Ό λλ κ°μ floatμΌλ‘ νλ³ννλ κ²½μ°λ ‘무νλ’ λλ ‘0’μ κ²°κ³Όλ‘ μ»λλ€.
- floatκ³Ό doubleμ μ μ₯ν λλΆν° μ΄λ―Έ λ€λ₯Έ κ°μ κ°μ§κ³ μκΈ° λλ¬Έμ floatμ doubleνμΌλ‘ νλ³νν΄μ λΉκ΅νλ©΄ νμ λ€λ₯Ό μ λ°μ μλ€.
3-4. μ μνκ³Ό μ€μν κ°μ νλ³ν
- <μ μνμ μ€μνμΌλ‘ λ³ν>
- μ μλ₯Ό 2μ§μλ‘ λ³νν λ€μ μ κ·νλ₯Ό κ±°μ³ μ€μμ μ μ₯νμμΌλ‘ μ μ₯λλ€.
- μ£Όμν΄μΌν μ
- floatμ μ½ 7μ리μ μ λ°λλ§μ μ 곡νλλ° intλ μ΅λ 10μ리μ μ λ°λλ₯Ό μꡬνκΈ° λλ¬Έμ 8μ리 μ΄μμ κ°μ floatνμμ intλ‘ λ³νν λ μ λ°λ μ°¨μ΄μ μν μ€μ°¨κ° λ°μν μ μλ€.
- κ·Έλ¬λ―λ‘ 8μ리 μ΄μμ μ«μλ₯Ό νλ³νν λλ doubleν (μ½ 15μ리μ μ λ°λ)μ κΆμ₯νλ€.
- <μ€μνμ μ μνμΌλ‘ λ³ν>
- μ€μνμ μ μνμΌλ‘ λ³ννλ©΄ μ€μνμ μμμ μ΄ν κ°μ λ²λ €μ§λ€.
3-5. μλ νλ³ν
μλ νλ³νμ κ·μΉ
- κΈ°μ‘΄μ κ°μ μ΅λν 보쑴ν μ μλ νμ μΌλ‘ μλ νλ³ννλ€.
⇒ ννλ²μκ° μ’μ νμ → λμ νμ μΌλ‘ νλ³ννλ κ²½μ°μλ κ° μμ€μ΄ μμΌλ―λ‘ λ νμ μ€μμ νν λ²μκ° λ λμ μͺ½μΌλ‘ νλ³νλλ€.
byte byteNumber = 10;
int intNumber = byteNumber; // byte -> int νλ³ν
System.out.println(intNumber); // 10
char charAlphabet = 'A';
intNumber = charAlphabet; // char -> int νλ³ν
System.out.println(intNumber); // Aμ μ λμ½λ : 65
intNumber = 100;
long longNumber = intNumber; // int -> number νλ³ν
System.out.println(longNumber); // 100
intNumber = 200;
double doubleNumber = intNumber; // int -> double νλ³ν
System.out.println(doubleNumber); // 200.0 (μμμ μ΄ μΆκ°λ μ€μμΆλ ₯)
int intNumber = 10;
double doubleNumber = 5.5;
double result = intNumber + doubleNumber; // result μ 15.5 μ μ₯λ¨ (int -> double)
intNumber = 10;
int iResult = intNumber / 4; // iResult μ 2 μ μ₯λ¨ (intν μ°μ° -> μμμ λ²λ €μ§)
intNumber = 10;
double dResult = intNumber / 4.0; // dResult μ 2.5 μ μ₯λ¨ (doubleν μ°μ° -> μμμ μ μ₯)
- μ€μνμ μ μνκ³Ό κ°μ νννλ λ°©μμ΄ λ€λ₯΄κΈ° λλ¬Έμ κ°μ ν¬κΈ°μΌμ§λΌλ μ€μνμ΄ μ μνλ³΄λ€ ν¨μ¬ λ ν° νν λ²μλ₯Ό κ°κΈ° λλ¬Έμ λ μ€λ₯Έμͺ½μ μμΉνλ€.
π 1. booleanμ μ μΈν λλ¨Έμ§ 7κ°μ κΈ°λ³Ένμ μλ‘ νλ³νμ΄ κ°λ₯νλ€.
2. κΈ°λ³Ένκ³Ό μ°Έμ‘°νμ μλ‘ νλ³νμ΄ λ μ μλ€.
3. μλ‘ λ€λ₯Έ νμ μ λ³μκ°μ μ°μ°μ νλ³νμ νλ κ²μ΄ μμΉμ΄μ§λ§, κ°μ λ²μκ° μμ νμ μμ ν° νμ μΌλ‘μ νλ³νμ μλ΅ν μ μλ€.