-
1. ์ฒซ ๋ฒ์งธ ํ๋ก๊ทธ๋จ
-
1.1. "Hello, World"
-
1.2. ์๋ฐ ํ๋ก๊ทธ๋จ ์ปดํ์ผ ๋ฐ ์คํ
-
1.3. ๋ฉ์๋ ํธ์ถ
-
-
2. ๊ธฐ๋ณธ ํ์
-
2.1. ๋ถํธ ์๋ ์ ์ ํ์
-
2.2. ๋ถ๋์์์ ํ์
-
2.3. char ํ์
-
2.4. boolean ํ์
-
3. ๋ณ์
-
3.1. ๋ณ์ ์ ์ธ
-
3.2. ๋ณ์ ์ด๋ฆ
-
3.3. ๋ณ์ ์ด๊ธฐํ
-
3.4. ์์(constant)
๊ธฐ์ด๋ฅผ ์ํด ์ฒ์๋ถํฐ ๋ค์ ์๋ฐ ๊ณต๋ถ๋ฅผ ํ๊ณ ์ ํ๋ค.
<๊ฐ์ฅ ๋นจ๋ฆฌ ๋ง๋๋ ์ฝ์ด์๋ฐ 9 - ์นด์ด ํธ์คํธ๋ง> ์ฑ ์ผ๋ก ๊ณต๋ถํ๋ฉด์ ์ ๋ฆฌํ๋ ๊ธ
์ค์ต ํ๊ฒฝ
macOS
JDK 19.0.2
InteIliJ 2022.3.2
1. ์ฒซ ๋ฒ์งธ ํ๋ก๊ทธ๋จ
1.1. "Hello, World"
package java_study;
public class HelloWorld {
public static void main(String[] args) { // main ๋ฉ์๋
System.out.println("Hello world!");
}
}
์๋ฐ - ๊ฐ์ฒด์งํฅ ์ธ์ด
ํ๋ก๊ทธ๋จ์์ ๊ฐ์ฒด(Object)๋ฅผ ์กฐ์ํด์ ๋์์ ์ํํจ
๊ฐ ๊ฐ์ฒด๋ ํน์ ํด๋์ค(Class)์ ์ํ๋ฉฐ, ๊ทธ ๊ฐ์ฒด๋ฅผ ํด๋์ค์ ์ธ์คํด์ค(instance)๋ผ๊ณ ํจ
ํด๋์ค์๋ ๊ฐ์ฒด์ ์ํ์ ๋์์ ์ ์
main ๋ฉ์๋ - ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ์ฒซ ๋ฒ์งธ๋ก ํธ์ถํ๋ ๋ฉ์๋
static์ด ๋ถ์ด์ ๊ฐ์ฒด๊ฐ ์์ด๋ ์๋ํ๋ค.
ํจํค์ง(package) - ๊ด๋ จ ์๋ ํด๋์ค๋ฅผ ๋ชจ์ ๋์ ์งํฉ
ํ ํจํค์ง์ ๊ด๋ จ ์๋ ํด๋์ค๋ค์ ํจ๊ป ๋ฌถ์ด ์๋ก ์ถฉ๋ํ์ง ์๋๋ก ๊ด๋ฆฌ ํ๋ฉด ์ข์
์๋ฐ๋ ํด๋์ค, ํจํค์ง, ๋ชจ๋๋ก ๊ตฌ์กฐํํด ๋๊ท๋ชจ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ข์ ์ธ์ด์
1.2. ์๋ฐ ํ๋ก๊ทธ๋จ ์ปดํ์ผ ๋ฐ ์คํ

javac java_study/HelloWorld.java
java java_study.HelloWorld
์์ค ์ฝ๋๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํด ์ ๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด Hello world!๊ฐ ์ถ๋ ฅ ๋๋ค.
์๋ฐ ํ๋ก๊ทธ๋จ ์คํ ์์
- javac ๋ช ๋ น์ผ๋ก ์๋ฐ ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋(byte code, ํน์ ๊ธฐ๊ณ์ ์ข ์๋์ง ์์ ์ค๊ฐ ํํ)๋ก ์ปดํ์ผ(complie)ํ์ฌ ํด๋์ค ํ์ผ(class file)์ ์ ์ฅ
- java ๋ช ๋ น์ผ๋ก ๊ฐ์ ๋จธ์ (virtual machine)์ ๊ตฌ๋ํ๊ณ ํด๋์ค ํ์ผ์ ๋ก๋ํด์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํ
๋ฐ์ดํธ ์ฝ๋๋ ํ๋ฒ ์ปดํ์ผํ๋ฉด ๋ชจ๋ ์๋ฐ ๊ฐ์ ๋จธ์ ์์ ์คํํ ์ ์์
1.3. ๋ฉ์๋ ํธ์ถ
System.out.println("Hello world!");
System.out ์ ๊ฐ์ฒด์ด๋ฉฐ, PrintStream ํด๋์ค์ ์ธ์คํด์ค
PrintStream ํด๋์ค์๋ println, print ๋ฑ์ ๋ฉ์๋๊ฐ ์์
์ด๋ฐ ๋ฉ์๋๋ ํด๋น ํด๋์ค์ ๊ฐ์ฒด(์ธ์คํด์ค)์์ ์๋ํ๋ฏ๋ก ์ธ์คํด์ค ๋ฉ์๋(instance method)๋ผ๊ณ ํจ
๊ฐ์ฒด์ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๋ฉด ์ (.) ํ๊ธฐ๋ฒ(dot notation)์ ์ฌ์ฉํด์ผ ํจ
object.methodName(arguments)
// example
import java.util.Random;
public class MethodDemo {
public static void main(String[] args) {
System.out.println("Hello, World!");
// String ํด๋์ค์์ String ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ length ๋ฉ์๋
System.out.println("Hello, World!".length());
// Random ํด๋์ค ๊ฐ์ฒด๋ก ๋์ ์์ฑ, ์ ์ ๋์ ๋ฐ์
System.out.println(new Random().nextInt());
// ํ ๊ฐ์ฒด์์ ๋ฉ์๋๋ฅผ ๋ ๋ฒ ์ด์ ํธ์ถํ๋ ค๋ฉด ํด๋น ๊ฐ์ฒด๋ฅผ ๋ณ์์ ์ ์ฅํด์ผ ํจ
// ๋์ ๋ ๊ฐ ์ถ๋ ฅ
Random generator = new Random();
System.out.println(generator.nextInt());
System.out.println(generator.nextInt());
}
}

2. ๊ธฐ๋ณธ ํ์
์๋ฐ์ ๋ชจ๋ ๊ฐ์ด ๊ฐ์ฒด์ธ ๊ฒ์ ์๋
๋ช ๊ฐ์ง ๊ฐ์ ๊ธฐ๋ณธ ํ์ (primitive type)์ ์ํจ
- ๋ถํธ ์๋ ์ ์ ํ์ : byte, short, int, long
- ๋ถ๋์์์ ํ์ : float, double
- ๋ฌธ์ ํ์ : char
- ์ง๋ฆฟ๊ฐ : boolean
2.1. ๋ถํธ ์๋ ์ ์ ํ์
- ์์์ ์ด ์๋ ์ซ์๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ
- ์์ ๊ฐ๋ ํ์ฉ
ํ์ | ์ ์ฅ ๊ณต๊ฐ | ๋ฒ์(ํฌํจ) |
byte | 1๋ฐ์ดํธ | -128 ~ 127 |
short | 2๋ฐ์ดํธ | -32,768 ~ 32,767 |
int | 4๋ฐ์ดํธ | -2,147,483,648 ~ 2,147,483,647 |
long | 8๋ฐ์ดํธ | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
โป Integer.MIN_VALUE ์์ = ๊ฐ์ฅ ์์ ์ ์ ๊ฐ
โป Integer.MAX_VALUE ์์ = ๊ฐ์ฅ ํฐ ์ ์ ๊ฐ
long์ด ๋ถ์กฑํ๋ฉด BigInteger์ฌ์ฉ
2.2. ๋ถ๋์์์ ํ์
- ์์์ ์ด ์๋ ์ซ์๋ฅผ ๋ํ๋
ํ์ | ์ ์ฅ ๊ณต๊ฐ | ๋ฒ์ |
float | 4๋ฐ์ดํธ | ์ฝ +- 3.40282347E+38F (์ ํจ์๋ฆฌ์ 6~7) |
double | 8๋ฐ์ดํธ | ์ฝ +- 1.79769313486231570E+308 (์ ํจ์๋ฆฌ์ 15) |
โป Double.POSITIVE_INFINITY = ์์ ๋ฌดํ๋
โป Double.NEGATIVE_INFINITY = ์์ ๋ฌดํ๋
โป Double.NaN = ์ซ์๊ฐ ์๋ ๊ฐ(Not a Number)
1.0 / 0.0 = ์์ ๋ฌดํ๋
0.0 / 0.0 = NaN
์ซ์๊ฐ ์๋ ๊ฐ์ ๋ชจ๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ผ๋ก ๊ฐ์ฃผ
if(x == Double.NaN) - (X) : x๊ฐ NaN์ธ์ง ๊ฒ์ฌํ ์ ์์
if(Double.isNaN(x)) - (O)
๋ถ๋์์์ ์๋ ๊ธ์ต ๊ณ์ฐ์ ์ ํฉํ์ง ์์
์๋ ๋ถ๋์์์ ์๋ฅผ 2์ง์ ์ฒด๊ณ๋ก ๋ํ๋ด๊ธฐ ๋๋ฌธ

2.0 - 1.1 ์ฐ์ฐ์ ์ถ๋ ฅ ํด๋ณด๋ฉด 0.9๊ฐ ์๋๋ผ 0.8999999999999999๊ฐ ์ถ๋ ฅ๋๋ค.
10์ง์ ์ฒด๊ณ๋ก 1/3์ ์ ํํ ๋ํ๋ผ ์ ์๋ฏ์ด, 2์ง์ ์ฒด๊ณ๋ก 1/10์ ์ ํํ ๋ํ๋ผ ์ ์์
์ปดํจํฐ๊ฐ ์์๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์ 32bit ์ ์ซ์๋ฅผ 2์ง๋ฒ์ผ๋ก ๋ณํํด ์ ์ฅ

10์ง๋ฒ -> 2์ง๋ฒ ๋ณํ์ 0.1์ ์ํ์์์
๋ฉ๋ชจ๋ฆฌ ๋๋ฌธ์ 32์นธ์์ ์๋ฆผ, ๊ทธ๋์ ์ค์ฐจ๊ฐ ๋ฐ์.
0.1์ ๋ณ์์ ์ ์ฅ ํ๋ค๊ณ ํ๋๋ผ๋ 0.1๊ณผ ๋น์ทํ ์ซ์์ผ ๋ฟ 0.1์ด ์๋
1. ์ ํํ ๊ณ์ฐ ํ๋ ค๋ฉด ์ ์๋ก (ex. 5.1๋ฌ๋ฌ -> 5100์ผํธ)
2. float ์จ์ผํ๋ ์ํฉ์ด ์๊ธฐ๋ฉด ๋ฐ์ฌ๋ฆผ ๋ฌธ๋ฒ ์ ์ ํ ํ์ฉ
precision = Math.pow(10, precision)
Math.ceil(num * precision) / precision
3. double ์๋ฃํ : ์ซ์ 1๊ฐ๋น 64์นธ ์ฌ์ฉ / ๋จ์ : ๋ฉ๋ชจ๋ฆฌ ์ฉ๋ 2๋ฐฐ
(์ฐธ๊ณ ) https://youtu.be/-GsrYvZoAdA
2.3. char ํ์
์๋ฐ๊ฐ ์ฌ์ฉํ๋ UTF-16 ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ฝ๋ ์ ๋(code unit)์ ๋ํ๋
'J' = ๊ฐ์ด 74์ธ ๋ฌธ์ ๋ฆฌํฐ๋ด (= ์ ๋์ฝ๋ ๋ฌธ์ U+004)
System.out.println('J' == 74); // true
System.out.println('\u004A'); // J
์์๋ฐ์ดํ ์์ฒด ํ์ =\'
๋ฐฑ์ฌ๋์ ์์ฒด ํ์ = \\
2.4. boolean ํ์
false, true ๊ฐ
3. ๋ณ์
3.1. ๋ณ์ ์ ์ธ
์๋ฐ๋ ํ์ ๊ฒฐํฉ์ด ๊ฐํ ์ธ์ด, ๊ฐ ๋ณ์์๋ ํด๋น ํ์ ๊ฐ๋ง ์ ์ฅํ ์ ์์
int total = 0; // intํ ๋ณ์ total ์ ์ธ, ์ด๊ธฐํ
int i = 0, count; // intํ ๋ณ์ i์ count ์ ์ธ, count ๋ ์ด๊ธฐํ x
Random generator = new Random(); // ๊ฐ์ฒด ์ ์ธ ๋ฐ ์์ฑ
3.2. ๋ณ์ ์ด๋ฆ
- ๋ฐ๋์ ๋ฌธ์๋ก ์์ํด์ผ ํจ
- ๋ฌธ์, ์ซ์, ๊ธฐํธ _, $๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ ($๋ ์๋์์ฑ ์ด๋ฆ์ฉ, _ ์์ฒด๋ ์ ํจํ ๋ณ์ ์ด๋ฆ์ด ์๋)
- ๋ผํด ์ํ๋ฒณ์ ํ์ ๋์ง ์๊ณ ๋ชจ๋ ์ํ๋ฒณ์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
- ๋. ์๋ฌธ์ ๊ตฌ๋ถ (count์ Count๋ ๋ค๋ฆ)
- ์ด๋ฆ์๋ ๊ณต๋ฐฑ, ๊ธฐํธ ์ฌ์ฉ x
- double, int ๊ฐ์ ํค์๋๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ x
- ์๋ฐ ํ๋ก๊ทธ๋๋จธ๋ ๋ํ ํ๊ธฐ๋ฒ ์ ํธ (inputData)
double lotsa$ = 1000000000.0; // $๋ ์๋์์ฑ ์ด๋ฆ์ฉ์ด๋ฏ๋ก ์ฌ์ฉ x
double รฉlรฉvation = 0.0; // ๋ชจ๋ ์ํ๋ฒณ ์ฌ์ฉ ๊ฐ๋ฅ
double ฯ = 3.141592653589793;
์๋ฐ8 ์์๋ _์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋ฉด ๊ฒฝ๊ณ ํ์,
์๋ฐ 9๋ถํฐ๋ _์ ์์ฝ์ด๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๋ฉด ์ค๋ฅ ๋ฐ์
3.3. ๋ณ์ ์ด๊ธฐํ
๋ณ์๋ ๋ฐ๋์ ์ด๊ธฐํํ ํ ์ฌ์ฉํด์ผ ํจ
int count;
System.out.println(count);
java: variable count might not have been initialized
๋ณ์๋ฅผ ์ด๊ธฐํ ํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์ ์ค๋ฅ ๋ฐ์
์๋ฐ์์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ง์ ๊น์ง ๋ณ์ ์ ์ธ ์๊ธฐ๋ฅผ ๋ฆ์ถ๋ ๊ฒ์ ์ข์ ๋ฐฉ์์ผ๋ก ์ฌ๊ธด๋ค๊ณ ํจ
3.4. ์์(constant)
ํ๋ฒ ํ ๋นํ๋ฉด ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ
์ฌ์ฉํ๊ธฐ ์ ์ ๋ฑ ํ๋ฒ๋ง ์ด๊ธฐํํ๋ฉด ๋๋ค.
final ํค์๋ ์ฌ์ฉ
final int DAYS_PER_WEEK = 7;
์์ ์ด๋ฆ์ ๋๋ฌธ์๋ก ์ ์ธํ๋ ๊ด๋ก๊ฐ ์์
static ํค์๋๋ก ์์๋ฅผ ๋ฉ์๋ ์ธ๋ถ์ ์ ์ธํ ์๋ ์์
public class Calendar {
public static final int DAYS_PER_YEAR = 365; // ์ฌ๋ฌ ๋ฉ์๋์์ ์ฌ์ฉ ๊ฐ๋ฅ
...
}
Calendar ํด๋์ค ์ธ์ ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฉํ๋ ค๋ฉด
Calendar.DAYS_PER_YEAR๋ก ์์ ์ด๋ฆ ์์ ํด๋์ค๋ช ์ ๋ถ์ฌ์ค์ผ ํจ
System ํด๋์ค์๋ out์ด ์๋์ ๊ฐ์ด ์์๋ก ์ ์ธ๋์ด ์์
public static final PrintStream out
๊ทธ๋์ System.out์ ์ด๋์์๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ
์์์ ๋๋ฌธ์๋ฅผ ์ฐ์ง ์์ ๊ฒ์ด ๋ช ๊ฐ์ง ์๋๋ฐ ๊ทธ์ค ํ๋๊ฐ out
๊ธฐ์ด๋ฅผ ์ํด ์ฒ์๋ถํฐ ๋ค์ ์๋ฐ ๊ณต๋ถ๋ฅผ ํ๊ณ ์ ํ๋ค.
<๊ฐ์ฅ ๋นจ๋ฆฌ ๋ง๋๋ ์ฝ์ด์๋ฐ 9 - ์นด์ด ํธ์คํธ๋ง> ์ฑ ์ผ๋ก ๊ณต๋ถํ๋ฉด์ ์ ๋ฆฌํ๋ ๊ธ
์ค์ต ํ๊ฒฝ
macOS
JDK 19.0.2
InteIliJ 2022.3.2
1. ์ฒซ ๋ฒ์งธ ํ๋ก๊ทธ๋จ
1.1. "Hello, World"
package java_study;
public class HelloWorld {
public static void main(String[] args) { // main ๋ฉ์๋
System.out.println("Hello world!");
}
}
์๋ฐ - ๊ฐ์ฒด์งํฅ ์ธ์ด
ํ๋ก๊ทธ๋จ์์ ๊ฐ์ฒด(Object)๋ฅผ ์กฐ์ํด์ ๋์์ ์ํํจ
๊ฐ ๊ฐ์ฒด๋ ํน์ ํด๋์ค(Class)์ ์ํ๋ฉฐ, ๊ทธ ๊ฐ์ฒด๋ฅผ ํด๋์ค์ ์ธ์คํด์ค(instance)๋ผ๊ณ ํจ
ํด๋์ค์๋ ๊ฐ์ฒด์ ์ํ์ ๋์์ ์ ์
main ๋ฉ์๋ - ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ์ฒซ ๋ฒ์งธ๋ก ํธ์ถํ๋ ๋ฉ์๋
static์ด ๋ถ์ด์ ๊ฐ์ฒด๊ฐ ์์ด๋ ์๋ํ๋ค.
ํจํค์ง(package) - ๊ด๋ จ ์๋ ํด๋์ค๋ฅผ ๋ชจ์ ๋์ ์งํฉ
ํ ํจํค์ง์ ๊ด๋ จ ์๋ ํด๋์ค๋ค์ ํจ๊ป ๋ฌถ์ด ์๋ก ์ถฉ๋ํ์ง ์๋๋ก ๊ด๋ฆฌ ํ๋ฉด ์ข์
์๋ฐ๋ ํด๋์ค, ํจํค์ง, ๋ชจ๋๋ก ๊ตฌ์กฐํํด ๋๊ท๋ชจ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ข์ ์ธ์ด์
1.2. ์๋ฐ ํ๋ก๊ทธ๋จ ์ปดํ์ผ ๋ฐ ์คํ

javac java_study/HelloWorld.java
java java_study.HelloWorld
์์ค ์ฝ๋๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํด ์ ๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด Hello world!๊ฐ ์ถ๋ ฅ ๋๋ค.
์๋ฐ ํ๋ก๊ทธ๋จ ์คํ ์์
- javac ๋ช ๋ น์ผ๋ก ์๋ฐ ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋(byte code, ํน์ ๊ธฐ๊ณ์ ์ข ์๋์ง ์์ ์ค๊ฐ ํํ)๋ก ์ปดํ์ผ(complie)ํ์ฌ ํด๋์ค ํ์ผ(class file)์ ์ ์ฅ
- java ๋ช ๋ น์ผ๋ก ๊ฐ์ ๋จธ์ (virtual machine)์ ๊ตฌ๋ํ๊ณ ํด๋์ค ํ์ผ์ ๋ก๋ํด์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํ
๋ฐ์ดํธ ์ฝ๋๋ ํ๋ฒ ์ปดํ์ผํ๋ฉด ๋ชจ๋ ์๋ฐ ๊ฐ์ ๋จธ์ ์์ ์คํํ ์ ์์
1.3. ๋ฉ์๋ ํธ์ถ
System.out.println("Hello world!");
System.out ์ ๊ฐ์ฒด์ด๋ฉฐ, PrintStream ํด๋์ค์ ์ธ์คํด์ค
PrintStream ํด๋์ค์๋ println, print ๋ฑ์ ๋ฉ์๋๊ฐ ์์
์ด๋ฐ ๋ฉ์๋๋ ํด๋น ํด๋์ค์ ๊ฐ์ฒด(์ธ์คํด์ค)์์ ์๋ํ๋ฏ๋ก ์ธ์คํด์ค ๋ฉ์๋(instance method)๋ผ๊ณ ํจ
๊ฐ์ฒด์ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๋ฉด ์ (.) ํ๊ธฐ๋ฒ(dot notation)์ ์ฌ์ฉํด์ผ ํจ
object.methodName(arguments)
// example
import java.util.Random;
public class MethodDemo {
public static void main(String[] args) {
System.out.println("Hello, World!");
// String ํด๋์ค์์ String ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ length ๋ฉ์๋
System.out.println("Hello, World!".length());
// Random ํด๋์ค ๊ฐ์ฒด๋ก ๋์ ์์ฑ, ์ ์ ๋์ ๋ฐ์
System.out.println(new Random().nextInt());
// ํ ๊ฐ์ฒด์์ ๋ฉ์๋๋ฅผ ๋ ๋ฒ ์ด์ ํธ์ถํ๋ ค๋ฉด ํด๋น ๊ฐ์ฒด๋ฅผ ๋ณ์์ ์ ์ฅํด์ผ ํจ
// ๋์ ๋ ๊ฐ ์ถ๋ ฅ
Random generator = new Random();
System.out.println(generator.nextInt());
System.out.println(generator.nextInt());
}
}

2. ๊ธฐ๋ณธ ํ์
์๋ฐ์ ๋ชจ๋ ๊ฐ์ด ๊ฐ์ฒด์ธ ๊ฒ์ ์๋
๋ช ๊ฐ์ง ๊ฐ์ ๊ธฐ๋ณธ ํ์ (primitive type)์ ์ํจ
- ๋ถํธ ์๋ ์ ์ ํ์ : byte, short, int, long
- ๋ถ๋์์์ ํ์ : float, double
- ๋ฌธ์ ํ์ : char
- ์ง๋ฆฟ๊ฐ : boolean
2.1. ๋ถํธ ์๋ ์ ์ ํ์
- ์์์ ์ด ์๋ ์ซ์๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ
- ์์ ๊ฐ๋ ํ์ฉ
ํ์ | ์ ์ฅ ๊ณต๊ฐ | ๋ฒ์(ํฌํจ) |
byte | 1๋ฐ์ดํธ | -128 ~ 127 |
short | 2๋ฐ์ดํธ | -32,768 ~ 32,767 |
int | 4๋ฐ์ดํธ | -2,147,483,648 ~ 2,147,483,647 |
long | 8๋ฐ์ดํธ | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
โป Integer.MIN_VALUE ์์ = ๊ฐ์ฅ ์์ ์ ์ ๊ฐ
โป Integer.MAX_VALUE ์์ = ๊ฐ์ฅ ํฐ ์ ์ ๊ฐ
long์ด ๋ถ์กฑํ๋ฉด BigInteger์ฌ์ฉ
2.2. ๋ถ๋์์์ ํ์
- ์์์ ์ด ์๋ ์ซ์๋ฅผ ๋ํ๋
ํ์ | ์ ์ฅ ๊ณต๊ฐ | ๋ฒ์ |
float | 4๋ฐ์ดํธ | ์ฝ +- 3.40282347E+38F (์ ํจ์๋ฆฌ์ 6~7) |
double | 8๋ฐ์ดํธ | ์ฝ +- 1.79769313486231570E+308 (์ ํจ์๋ฆฌ์ 15) |
โป Double.POSITIVE_INFINITY = ์์ ๋ฌดํ๋
โป Double.NEGATIVE_INFINITY = ์์ ๋ฌดํ๋
โป Double.NaN = ์ซ์๊ฐ ์๋ ๊ฐ(Not a Number)
1.0 / 0.0 = ์์ ๋ฌดํ๋
0.0 / 0.0 = NaN
์ซ์๊ฐ ์๋ ๊ฐ์ ๋ชจ๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ผ๋ก ๊ฐ์ฃผ
if(x == Double.NaN) - (X) : x๊ฐ NaN์ธ์ง ๊ฒ์ฌํ ์ ์์
if(Double.isNaN(x)) - (O)
๋ถ๋์์์ ์๋ ๊ธ์ต ๊ณ์ฐ์ ์ ํฉํ์ง ์์
์๋ ๋ถ๋์์์ ์๋ฅผ 2์ง์ ์ฒด๊ณ๋ก ๋ํ๋ด๊ธฐ ๋๋ฌธ

2.0 - 1.1 ์ฐ์ฐ์ ์ถ๋ ฅ ํด๋ณด๋ฉด 0.9๊ฐ ์๋๋ผ 0.8999999999999999๊ฐ ์ถ๋ ฅ๋๋ค.
10์ง์ ์ฒด๊ณ๋ก 1/3์ ์ ํํ ๋ํ๋ผ ์ ์๋ฏ์ด, 2์ง์ ์ฒด๊ณ๋ก 1/10์ ์ ํํ ๋ํ๋ผ ์ ์์
์ปดํจํฐ๊ฐ ์์๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์ 32bit ์ ์ซ์๋ฅผ 2์ง๋ฒ์ผ๋ก ๋ณํํด ์ ์ฅ

10์ง๋ฒ -> 2์ง๋ฒ ๋ณํ์ 0.1์ ์ํ์์์
๋ฉ๋ชจ๋ฆฌ ๋๋ฌธ์ 32์นธ์์ ์๋ฆผ, ๊ทธ๋์ ์ค์ฐจ๊ฐ ๋ฐ์.
0.1์ ๋ณ์์ ์ ์ฅ ํ๋ค๊ณ ํ๋๋ผ๋ 0.1๊ณผ ๋น์ทํ ์ซ์์ผ ๋ฟ 0.1์ด ์๋
1. ์ ํํ ๊ณ์ฐ ํ๋ ค๋ฉด ์ ์๋ก (ex. 5.1๋ฌ๋ฌ -> 5100์ผํธ)
2. float ์จ์ผํ๋ ์ํฉ์ด ์๊ธฐ๋ฉด ๋ฐ์ฌ๋ฆผ ๋ฌธ๋ฒ ์ ์ ํ ํ์ฉ
precision = Math.pow(10, precision)
Math.ceil(num * precision) / precision
3. double ์๋ฃํ : ์ซ์ 1๊ฐ๋น 64์นธ ์ฌ์ฉ / ๋จ์ : ๋ฉ๋ชจ๋ฆฌ ์ฉ๋ 2๋ฐฐ
(์ฐธ๊ณ ) https://youtu.be/-GsrYvZoAdA
2.3. char ํ์
์๋ฐ๊ฐ ์ฌ์ฉํ๋ UTF-16 ๋ฌธ์ ์ธ์ฝ๋ฉ์ ์ฝ๋ ์ ๋(code unit)์ ๋ํ๋
'J' = ๊ฐ์ด 74์ธ ๋ฌธ์ ๋ฆฌํฐ๋ด (= ์ ๋์ฝ๋ ๋ฌธ์ U+004)
System.out.println('J' == 74); // true
System.out.println('\u004A'); // J
์์๋ฐ์ดํ ์์ฒด ํ์ =\'
๋ฐฑ์ฌ๋์ ์์ฒด ํ์ = \\
2.4. boolean ํ์
false, true ๊ฐ
3. ๋ณ์
3.1. ๋ณ์ ์ ์ธ
์๋ฐ๋ ํ์ ๊ฒฐํฉ์ด ๊ฐํ ์ธ์ด, ๊ฐ ๋ณ์์๋ ํด๋น ํ์ ๊ฐ๋ง ์ ์ฅํ ์ ์์
int total = 0; // intํ ๋ณ์ total ์ ์ธ, ์ด๊ธฐํ
int i = 0, count; // intํ ๋ณ์ i์ count ์ ์ธ, count ๋ ์ด๊ธฐํ x
Random generator = new Random(); // ๊ฐ์ฒด ์ ์ธ ๋ฐ ์์ฑ
3.2. ๋ณ์ ์ด๋ฆ
- ๋ฐ๋์ ๋ฌธ์๋ก ์์ํด์ผ ํจ
- ๋ฌธ์, ์ซ์, ๊ธฐํธ _, $๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ ($๋ ์๋์์ฑ ์ด๋ฆ์ฉ, _ ์์ฒด๋ ์ ํจํ ๋ณ์ ์ด๋ฆ์ด ์๋)
- ๋ผํด ์ํ๋ฒณ์ ํ์ ๋์ง ์๊ณ ๋ชจ๋ ์ํ๋ฒณ์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
- ๋. ์๋ฌธ์ ๊ตฌ๋ถ (count์ Count๋ ๋ค๋ฆ)
- ์ด๋ฆ์๋ ๊ณต๋ฐฑ, ๊ธฐํธ ์ฌ์ฉ x
- double, int ๊ฐ์ ํค์๋๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ x
- ์๋ฐ ํ๋ก๊ทธ๋๋จธ๋ ๋ํ ํ๊ธฐ๋ฒ ์ ํธ (inputData)
double lotsa$ = 1000000000.0; // $๋ ์๋์์ฑ ์ด๋ฆ์ฉ์ด๋ฏ๋ก ์ฌ์ฉ x
double รฉlรฉvation = 0.0; // ๋ชจ๋ ์ํ๋ฒณ ์ฌ์ฉ ๊ฐ๋ฅ
double ฯ = 3.141592653589793;
์๋ฐ8 ์์๋ _์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋ฉด ๊ฒฝ๊ณ ํ์,
์๋ฐ 9๋ถํฐ๋ _์ ์์ฝ์ด๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๋ฉด ์ค๋ฅ ๋ฐ์
3.3. ๋ณ์ ์ด๊ธฐํ
๋ณ์๋ ๋ฐ๋์ ์ด๊ธฐํํ ํ ์ฌ์ฉํด์ผ ํจ
int count;
System.out.println(count);
java: variable count might not have been initialized
๋ณ์๋ฅผ ์ด๊ธฐํ ํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์ ์ค๋ฅ ๋ฐ์
์๋ฐ์์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ง์ ๊น์ง ๋ณ์ ์ ์ธ ์๊ธฐ๋ฅผ ๋ฆ์ถ๋ ๊ฒ์ ์ข์ ๋ฐฉ์์ผ๋ก ์ฌ๊ธด๋ค๊ณ ํจ
3.4. ์์(constant)
ํ๋ฒ ํ ๋นํ๋ฉด ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ
์ฌ์ฉํ๊ธฐ ์ ์ ๋ฑ ํ๋ฒ๋ง ์ด๊ธฐํํ๋ฉด ๋๋ค.
final ํค์๋ ์ฌ์ฉ
final int DAYS_PER_WEEK = 7;
์์ ์ด๋ฆ์ ๋๋ฌธ์๋ก ์ ์ธํ๋ ๊ด๋ก๊ฐ ์์
static ํค์๋๋ก ์์๋ฅผ ๋ฉ์๋ ์ธ๋ถ์ ์ ์ธํ ์๋ ์์
public class Calendar {
public static final int DAYS_PER_YEAR = 365; // ์ฌ๋ฌ ๋ฉ์๋์์ ์ฌ์ฉ ๊ฐ๋ฅ
...
}
Calendar ํด๋์ค ์ธ์ ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฉํ๋ ค๋ฉด
Calendar.DAYS_PER_YEAR๋ก ์์ ์ด๋ฆ ์์ ํด๋์ค๋ช ์ ๋ถ์ฌ์ค์ผ ํจ
System ํด๋์ค์๋ out์ด ์๋์ ๊ฐ์ด ์์๋ก ์ ์ธ๋์ด ์์
public static final PrintStream out
๊ทธ๋์ System.out์ ์ด๋์์๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ
์์์ ๋๋ฌธ์๋ฅผ ์ฐ์ง ์์ ๊ฒ์ด ๋ช ๊ฐ์ง ์๋๋ฐ ๊ทธ์ค ํ๋๊ฐ out