β . λ³μμ μλ£ν
1. μλ£ν μ μΈνκΈ°
- λ³μ : λ©λͺ¨λ¦¬ 곡κ°μ κ°μ μ μ₯ν 곡κ°μ λΆμ¬λ μ΄λ¦
- μλ£ν : μ μ₯ν μ μλ κ°μ νν(μ’ λ₯, νΉμ§)
- μλ° νλ‘κ·Έλ¨μ λͺ¨λ λ³μ/μμλ μλ£νμ μ μΈ ν μ¬μ© κ°λ₯
- νλ² μ μΈλ μλ£νμ λ°μ΄ν°λ λ³κ²½ν μ μλ€
// μλ£ν λ³μλͺ
; μΌλ‘ μ μΈ
int a = 3; // (O)
b = 5; // (X)
String c;
c = "μλ
" // (O)
- μλ° μ€ν¬λ¦½νΈ, νμ΄μ¬κ°μ μ€ν¬λ¦½νΈ μΈμ΄λ μλ£ν μ μΈ μμ΄ λ³μ μ¬μ©μ΄ κ°λ₯
2. λ³μ μ¬μ©νκΈ°
1) λ³μ μ μΈκ³Ό ν¨κ» κ° λμ νκΈ°
// μλ£ν λ³μλͺ
= κ°;
int a = 3;
2) λ³μ μ μΈκ³Ό κ° λμ λΆλ¦¬νκΈ°
// μλ£ν λ³μλͺ
;
// λ³μλͺ
= κ°;
int a;
a = 3;
μ΄ λ int a;μμ λλ΄λ λ±ν μ€λ₯λ μλμ§λ§, aμ κ°μ λΆλ¬μ€λ μ½λλ₯Ό λ£κ² λλ©΄ μ»΄νμΌ μ€λ₯κ° λ°μνλ€. λλ¬Έμ a = 3μΌλ‘ μΈν΄ λ³μ aμ κ° 3μ΄ μ λ ₯λλ―λ‘ aμ κ°μ λΆλ¬μ€λ©΄ 3μ΄ μΆλ ₯λλ€.
β ‘. μ΄λ¦ μ§κΈ°
1. μ΄λ¦ μ§κΈ° κ·μΉ
λ³μ, μμ, λ©μλμ μ΄λ¦μ μ§μ λλ λ€μκ³Ό κ°μ 4κ°μ§ κ·μΉμ μ§μΌμΌ νλ€.
- μλ¬Έ λμλ¬Έμμ νκΈ μ¬μ© κ°λ₯(νκΈμ κΆμ₯νμ§λ μλλ€) : abc(O), ABC(O), aBc(O), κ°λλ€(O)
- νΉμ λ¬Έμλ λ°μ€(_)κ³Ό λ¬λ¬($)λ§ μ¬μ© κ°λ₯ : $abc(O), _abc(O), ab_c(O), $abc_(O)
- μλΌλΉμ μ«μ μ¬μ© κ°λ₯νλ, 첫 λ²μ§Έ κΈμλ‘λ μ¬μ© λΆκ°λ₯ : a3bc(O), abc3(O), 3abc(X)
- μλ°μμ μ¬μ©νλ μμ½μ΄λ μ¬μ© κΈμ§ : int(X), break(X), public(X), static(X)
2. μ΄λ¦ μ§κΈ° κΆμ₯ μ¬ν
λ³μ, μμ, λ©μλλ€μ μ΄λ¦κ³Ό ꡬ쑰λ§μΌλ‘λ ꡬλΆν μ μκ² νλ κ²μ΄ ν΅μ¬μ΄λ©°, μ΄λ₯Ό ꡬλΆν λ κΆμ₯νλ μ¬νλ€μ΄ μλ€.
1) λ³μλͺ , λ©μλλͺ
μ°Έκ³ λ‘ λ©μλλͺ μ μ΄λ¦ λ€μ μκ΄νΈμ μ€κ΄νΈκ° λΆλλ€.
- μλ¬Έ μλ¬Έμλ‘ μμ : avg, name, value
- μλ¬Έ λ¨μ΄λ₯Ό 2κ° μ΄μ κ²°ν© μ μ λ¨μ΄μ 첫 κΈμλ₯Ό λλ¬Έμλ‘ ν¨ : myWork, maxValue, bestPosition, ourClassNum
2) μμλͺ
- λ³μμ ꡬλΆνκΈ° μν΄ λͺ¨λ λλ¬Έμλ‘ νκΈ°
- λ¨μ΄κ° μ¬λ¬ κ° κ²°ν© μ κ°λ μ±μ μν΄ λ°μ€μ μ¬μ©ν΄ λΆλ¦¬ ex) MY_DATA
3. λ³μμ μμ‘΄ κΈ°κ°
λ³μλ μμ μ΄ μ μΈλ μ΄λ¦° μ€κ΄νΈ({)μ μμΈ λ«ν μ€κ΄νΈ(})λ₯Ό λ§λ λ λ©λͺ¨λ¦¬μμ μμ λλ€.
package sec01_datatype.EX03_RangeOfVariableUse;
public class RangeOfVariableUse {
public static void main(String[] args) {
int value1 = 3; // λ³μ value1μ΄ μμ±λλ μμ
{
int value2 = 5; // λ³μ value2κ° μμ±λλ μμ
System.out.println(value1);
System.out.println(value2);
} // λ³μ value2κ° μ¬λΌμ§λ μμ
System.out.println(value1);
// System.out.println(value2); // μ€λ₯
} // λ³μ value1μ΄ μ¬λΌμ§λ μμ
}
β ’. μλ£νμ μ’ λ₯
κ΅¬λΆ | μ μ₯κ° | μλ£ν | ||
κΈ°λ³Έ μλ£ν | μ°Έ(true), κ±°μ§(false) | boolean | ||
μ μ | byte, short, int, long | |||
μ€μ | float, double | |||
λ¬Έμ(μ μ) | char | |||
μ°Έμ‘° μλ£ν | κ°μ²΄(Object) | λ°°μ΄, ν΄λμ€, μΈν°νμ΄μ€ |
1. κΈ°λ³Έ μλ£νκ³Ό μ°Έμ‘° μλ£νμ μ°¨μ΄
1) μ€μ λ°μ΄ν° κ°μ μ μ₯ μμΉ
λμ μ μ₯ μμΉμ μ°¨μ΄μ μ μμ보기 μ μ λ©λͺ¨λ¦¬μ ꡬ쑰μ λν΄ μμλ³Ό νμκ° μλ€. λ©λͺ¨λ¦¬λ λͺ©μ μ λ°λΌ ν¬κ² 3κ°μ§ μμμΌλ‘ λλλ€.
class μμ static μμ final(μμ) μμ method μμ |
stack μμ | heap μμ |
ν΄λμ€ μμ(= μ μ μμ, μμ μμ, λ©μλ μμ)κ³Ό λ³μλ€μ΄ μ μ₯λλ 곡κ°μΈ μ€ν μμ, κ°μ²΄λ€μ΄ μ μ₯λλ κ³΅κ° ν μμμΌλ‘ λλ μ μλ€.
κΈ°λ³Έ μλ£νκ³Ό μ°Έμ‘° μλ£νμ κ° μ μ₯ λ°©μμ΄ μλ‘ λ€λ₯΄λ€.
- λ λ€ λ³μμ 곡κ°μ μ€ν λ©λͺ¨λ¦¬μ μμ±
- κΈ°λ³Έ μλ£νμ μ€ν λ©λͺ¨λ¦¬μ μμ±λ 곡κ°μ λ³μμ κ°μ μ μ₯
- μ°Έμ‘° μλ£νμ ν λ©λͺ¨λ¦¬μ μ€μ λ°μ΄ν° κ°, μ€ν λ©λͺ¨λ¦¬μ λ³μ 곡κ°μλ μ€μ λ³μ«κ°μ΄ μ μ₯λ ν λ©λͺ¨λ¦¬μ μμΉκ° μ μ₯
2) μλ£νμ μ΄λ¦ κ·μΉ (νμX, κΆκ³ μ¬ν)
- κΈ°λ³Έ μλ£νμ μ΄λ¦μ μλ¬Έμλ‘ μμ ex) int, double
- μ°Έμ‘° μλ£νμ μ΄λ¦μ λλ¬Έμλ‘ μμ ex) String, System
- μμΈλ‘ κΈ°λ³Έ μλ£νμ μμλ‘ νλ λ°°μ΄ μ°Έμ‘° μλ£νμ int[], double[] μ²λΌ μλ¬Έμλ‘ μμ
2. κΈ°λ³Έ μλ£νμ ν¬κΈ°μ κ°μ λ²μ
μλ£ν | μλ£μ ν¬κΈ° | κ°μ λ²μ | |
λΆμΈλμ | boolean | 1byte | true, false |
μ μ | byte | 1byte | -2^7 ~ 2^7-1 |
short | 2byte | -2^15 ~ 2^15-1 | |
int | 4byte | -2^31 ~ 2-1 | |
long | 8byte | -2^63 ~ 2^63-1 | |
μ€μ | float | 4byte | ±(1.40x10^-45 ~ 3.40x10^38) |
double | 8byte | ±(4.94x10^-324 ~ 1.79x10^308) | |
λ¬Έμ(μ μ) | char | 2byte | μ λμ½λ λ¬Έμ (0~2^16-1) |
1. λΆμΈλμ μλ£ν boolean(1byte)
- booleanμ trueμ false κ°λ§ μ μ₯ κ°λ₯
- μλ£ μ²λ¦¬μ μ΅μ λ¨μκ° 1byteμ΄κΈ° λλ¬Έμ 8bit μ€ μμ 7bitλ μ¬μ©νμ§ μκ³ λλ¨Έμ§ 1bitλ§ μ¬μ©
2. μ μ μλ£ν byte(1byte), short(2byte), int(4byte), long(8byte)
- nκ°μ bitλ‘ ννν μ μλ μ μλ 2^nκ°μ΄λ€. ex) nμ΄ 2μΌ λ, 00, 01, 10, 11 μ΄ 4(2²)κ°
- λ©λͺ¨λ¦¬μ ν¨μ¨μ±μ μν΄ κ°μ μ μλ₯Ό λ΄λλΌλ μ’ λ₯λ 4κ°μ§μ΄λ©°, λμ μ°μ°μ(=)λ₯Ό μ€μ¬μΌλ‘ μμͺ½ μλ£νμ΄ κ°μ§ μμΌλ©΄ λ¬Έλ² μ€λ₯κ° λ°μνλ€.
- byte, shortμ μ μ₯ν μ μλ λ²μμ μ μ 리ν°λ΄, int, longμ μ μ 리ν°λ΄μ μ λ ₯ν λ λͺ¨λ int μλ£νμΌλ‘ μΈμ
- μ μ 리ν°λ΄ λ€μ longμ λνλ΄λ L(μλ¬Έμλ κ°λ₯)μ λΆμ¬ νκΈ°νλ©΄ long μλ£νμΌλ‘ μΈμν¨
byte a = 3; // byteλ‘ μΈμ
short a = 3; // shortλ‘ μΈμ
byte a = 138; // intλ‘ μΈμ
int a = 3; // intλ‘ μΈμ
long a = 3; // intλ‘ μΈμ => μλ νμ
λ³νμ΄ λ°μν΄ longμΌλ‘ λ³ν (κ²°λ‘ μ long)
long a = 3L; // longμΌλ‘ μΈμ
3. μ€μ μλ£ν float(4byte), double(8byte)
- μ€μμ μ μ₯ λ°©μμ λΆλ μμμ λ°©μ(κ°μ*λ°^μ§μ)μΌλ‘ μ μ₯λ¨
κ΅¬λΆ | λΆνΈ λΉνΈ | κ°μ λΉνΈ | μ§μ λΉνΈ |
float (32bit) | 1 | 23 | 8 |
double (64bit) | 1 | 52 | 11 |
- μΌλ°μ μΌλ‘ floatμ μ λ°λλ μμμ 7μ리, doubleμ μ λ°λλ μμμ 15μ리 μ λ
public class FloatVsDouble {
public static void main(String[] args) {
// floatμ μ λ°λ (λλ΅ μμ 7μ리)
float f1 = 1.0000001f;
System.out.println(f1); // μ μ μΆλ ₯
float f2 = 1.00000001f;
System.out.println(f2); // μ€μ°¨ λ°μ
// doubleμ μ λ°λ(λλ΅ μμ 15μ리)
double d1 = 1.000000000000001;
System.out.println(d1); // μ μ μΆλ ₯
double d2 = 1.0000000000000001;
System.out.println(d2); // μ€μ°¨ λ°μ
- μλ°λ μ€μ 리ν°λ΄μ double μλ£νμΌλ‘ μΈμνμ§λ§, floatλ₯Ό λνλ΄λ F(μλ¬Έμ κ°λ₯)λ₯Ό μ€μ 리ν°λ΄ λ€μ λΆμ΄λ©΄ float μλ£νμΌλ‘ μΈμν¨
float a = 3.5; // μ€μ 리ν°λ΄μ κΈ°λ³Έμ μΌλ‘ doubleλ‘ μΈμ (μλ νμ
λ³νλ μν΄μ€)
float a = 3.5F; // floatλ‘ μΈμ
double a = 5.8; // doubleλ‘ μΈμ
double a = 5; // intλ‘ μΈμνμ§λ§ μλ νμ
λ³νμΌλ‘ doubleλ‘ μΈμλ¨
- μλ°μμλ κ°μ μ μ₯ μλ£νμ κΈ°μ€μΌλ‘ μΆλ ₯νλ€.
public class PrimaryDataType_1 {
public static void main(String[] args) {
// boolean : true / false
boolean bool1 = true;
boolean bool2 = false;
System.out.println(bool1);
System.out.println(bool2);
System.out.println();
// μ μ(byte, short, int, long)
byte value1 = 10;
short value2 = -10;
int value3 = 100;
long value4 = -100L; // long μλ£νμΌλ‘ μΈμ
System.out.println(value1);
System.out.println(value2);
System.out.println(value3);
System.out.println(value4);
System.out.println();
// μ€μ(float, double)
float value5 = 1.2F; // float μλ£νμΌλ‘ μΈμ
double value6 = -1.5;
double value7 = 5; // μλ νμ
λ³ν
System.out.println(value5);
System.out.println(value6);
System.out.println(value7); // μ€μ«κ°μΌλ‘ μΆλ ₯
}
}
4. λ¬Έμ μλ£ν char
- λ¬Έμλ₯Ό μμλ°μ΄ν ('') μμ νκΈ°νλ©°, μ λμ½λ νλ₯Ό μ¬μ©ν΄ λ¬Έμλ₯Ό νΉμ μ μ«κ°μΌλ‘ λ°κΏ λ©λͺ¨λ¦¬μ μ μ₯νλ€. λ¬Έμλ₯Ό μ½μ λλ μ μλ₯Ό μ½μ΄μ κ·Έ μ μμ ν΄λΉνλ λ¬Έμλ₯Ό μΆλ ₯νλ€.
- charμ μ μ«κ°μ μ μ₯ν΄λ μ λμ½λ νμλ μ μλ€λ μκΈ° λλ¬Έμ μ μλ₯Ό μ μ₯νκ³ μ½μ μ μλ€. λ€λ§ λ¬Έμ μλ£νμΌλ‘ μ μ₯λμΌλ―λ‘ λ¬Έμκ° μλ μ«μλ‘ μ΄μ©νκ³ μΆλ€λ©΄ μ΄λ λ©μλλ₯Ό ν΅ν΄ λ³νν μ μλ€.
- char μλ£νμ μ λμ½λ κ°μ μ§μ μ λ ₯ν λλ '\u+16μ§μ μ λμ½λ'μ κ°μ΄ μ¬μ©νλ€. 2byteλ‘ 16μ§μ 4μλ¦¬λ‘ νννλ€.
// λ¬Έμλ‘ μ μ₯νλ λ°©λ²
char value1 = 'A';
char value2 = 'κ°';
char value3 = '3'; // μ«μ 3μ΄ μλ λ¬Έμ 3
System.out.println(value1);
System.out.println(value2);
System.out.println(value3);
System.out.println();
// μ μλ‘ μ μ₯νλ λ°©λ²
char value4 = 65;
char value5 = 0xac00;
char value6 = 51;
System.out.println(value4);
System.out.println(value5);
System.out.println(value6);
System.out.println();
// μ λμ½λλ‘ μ§μ μ
λ ₯
char value7 = '\u0041';
char value8 = '\uac00';
char value9 = '\u0033';
System.out.println(value7);
System.out.println(value8);
System.out.println(value9);
μ΄ μΈμλ 2μ§μ, 8μ§μ, 16μ§μλ‘ μ μ₯ν μ μλ€.
char a = 'A'; // λ¬Έμ
char b = 65; // 10μ§μ
char c = 0b1000001; // 2μ§μ
char d = 00101; // 8μ§μ
char e = 0x0041; // 16μ§μ
char f = '\u0041' // μ λμ½λ
μ§λ²λ§λ€ μ«μμ νν λ°©μμ΄ λ€λ₯΄λ€.
- 10μ§μ : μ«μ (ex. int a = 11 => 10μ§μ 11)
- 2μ§μ : 0b + μ«μ (ex. int b = 0b11 => 10μ§μ 3)
- 8μ§μ : 0 + μ«μ (ex. int c = 011 => 10μ§μ 9)
- 16μ§μ : 0x + μ«μ (ex. int d = 0x11 => 10μ§μ 17)
μ½λμμ μ§λ²μ λ³ννλ λ°©λ²λ μλ€.
- 10μ§μ -> 2μ§μ : Integer.toBinaryString()
- 10μ§μ -> 8μ§μ : Integer.toOctalString()
- 10μ§μ -> 16μ§μ : Integer.toHexString()
- 2μ§μ -> 10μ§μ : Integer.parseInt("2μ§μ μ«μ", 2)
- 8μ§μ -> 10μ§μ : Integer.parseInt("8μ§μ μ«μ", 8)
- 16μ§μ -> 10μ§μ : Integer.parseInt("16μ§μ μ«μ", 16)
β £. κΈ°λ³Έ μλ£ν κ°μ νμ λ³ν
- booleanμ μ μΈν κΈ°λ³Έ μλ£ν 7κ°λ νμ λ³νμ΄ κ°λ₯ν¨
- λ°©λ²μ λ¨μν λ³ν λμ μμ (μλ£ν)λ§ νκΈ°
- μ μλ μ«μ 리ν°λ΄μ μ«μ λ€μ L, Fλ₯Ό λΆμ¬ νμ λ³νμ μνν μλ μμ
- λ½, νμ λ³ν μν μ μ μ₯ν μ μλ κ°μ λ²μλ μ’ λ₯κ° λ¬λΌμ§λ―λ‘ κ°μ΄ λ³ν μ μμ
// μΊμ€ν
λ°©λ² 1 : μλ£ν
int value1 = (int)5.3; // κ°μ΄ 5.3μμ 5λ‘ λ³κ²½λλ€.
long value2 = (long)10;
float value3 = (float)5.8;
double value4 = (double)16;
// μΊμ€ν
λ°©λ² 2 : L, F
long value5 = 10L;
long value6 = 10l;
float value7 = 5.8F;
float value8 = 5.8f;
1. μλ νμ λ³ν(μ»΄νμΌλ¬κ° μλμΌλ‘), μλ νμ λ³ν(κ°λ°μκ° μ§μ )
ν¬κΈ°(λ²μ)κ° μμ μλ£νμ ν° μλ£νμ λμ μ λ°μ΄ν° μμ€μ΄ λ°μνμ§ μμΌλ―λ‘ μ»΄νμΌλ¬κ° μλμΌλ‘ νμ λ³ν μ€νν΄μ€λ€. μ΄λ₯Ό 'μ μΊμ€ν (up-casting)'μ΄λΌκ³ νλ€. μ΄ μΈμλ λͺ¨λ μ μ 리ν°λ΄κ°μ΄ int μλ£νμΌλ‘ μΈμλμ§λ§ byteλ short μλ£νμ μ μ₯ν μ μλ λ²μ λ΄μ μ μ 리ν°λ΄ κ°μ΄ λμ λ κ²½μ° μ μΊμ€ν μ΄ μλμ§λ§ μλ νμ λ³νμ ν΄μ£ΌκΈ°λ νλ€.
λ°λλ‘ ν° μλ£νμ μμ μλ£νμ λμ νλ κ²μ 'λ€μ΄μΊμ€ν (down-casting)'μ΄λΌκ³ νλλ° λ°μ΄ν°μ μμ€μ΄ λ°μν μ μμΌλ―λ‘ μλ νμ λ³νμ΄ μλκ³ κ°λ°μκ° μ§μ νμ λ³νμμΌμΌ νλ€.
μλ£νμ ν¬κΈ°(μ μ₯νλ κ°μ λ²μ) : byte < short < char < int < long < float < double
// μλ νμ
λ³ν
float value1 = 3; // int => float μ
μΊμ€ν
long value2 = 5; // int => long μ
μΊμ€ν
double value3 = 7; // int => double μ
μΊμ€ν
byte value4 = 8; // int => byte
short value5 = 11; // int => short
// μλ νμ
λ³ν
byte value6 = (byte)128; // int => byte λ€μ΄μΊμ€ν
int value7 = (int)3.5; // double => int λ€μ΄μΊμ€ν
float value8 = (float)7.00000005; // double => float λ€μ΄μΊμ€ν
value6μ κ°μ -128μ΄ λμ€λλ°, μ μν μλ£νμ μμ λ²μμ μλ£νμΌλ‘ μΊμ€ν ν λλ λ²μμ λ°λμͺ½ λμμλΆν° λ€μ μμνλ μνλ¬ κ΅¬μ‘°λ€.
2. κΈ°λ³Έ μλ£ν κ°μ μ°μ°
booleanμ μ μΈν λλ¨Έμ§ κΈ°λ³Έ μλ£νμ μλ‘ μ°μ°ν μ μμ§λ§ κ°μ μλ£νλΌλ¦¬λ§ κ°λ₯νλ©° κ²°κ³Ό λν κ°μ μλ£νμ΄λ€. λ¨, intλ³΄λ€ μμ μλ£ν(byte, short) κ°μ μ°μ° κ²°κ³Όλ intκ° λμ¨λ€. CPUμμμ μ°μ° μ΅μ λ¨μκ° intμ΄κΈ° λλ¬Έμ΄λ€.
int + longμ κ²½μ° μ μΊμ€ν μ΄ λμ΄ longμΌλ‘ μλ νμ λ³νμ ν΄ long+long=longμΌλ‘ κ³μ°νλ€.
// κ°μ μλ£ν κ°μ μ°μ°
int value1 = 3+5;
int value2 = 8/5; // int/int=int
float value3 = 3.0f+5.0f;
double value4 = 8.0/5.0;
byte data1 = 3;
byte data2 = 5;
byte value5 = data1+data2; // data1 + data2λ intνμ΄λ―λ‘ μ€λ₯ λ°μ
// λ€λ₯Έ μλ£ν κ°μ μ°μ°
int value6 = 5+3.5 // 5+3.5λ doubleνμ΄λ―λ‘ μ€λ₯ λ°μ
double value6 = 5+3.5;
int value7 = 5+(int)3.5;
double value8 = 5/2.0;
byte data3 = 3;
short data4 = 5;
int value9 = data3+data4;
double value10 = data3+data4; // data3+data4λ intνμ΄λ―λ‘ μλ νμ
λ³ν μν, μΆλ ₯ μ 8.0μΌλ‘ μΆλ ₯λ¨
'java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
1μ₯. μλ° μμνκΈ° (0) | 2022.01.24 |
---|