(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

while문은 조건을 만족하는 경우에만 실행하기 때문에, 조건을 만족하지 않는 경우 한 번도 실행이 되지 않을 수 있다. 하지만 do-while문은 무조건 한 번은 실행하고, 조건 비교를 통해 만족하는 경우 반복 실행한다.

 

(자바(Java) while문 : https://devmoomin.tistory.com/60)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int num = 1, temp;
        
        do {
            System.out.println((num+++ "번째 반복");
            System.out.print("계속하려면 1, 종료하려면 0 입력 : ");
            temp = keyboard.nextInt();
        } while(temp != 0);
        
        System.out.println("종료!");
    }
}
cs

Line 6 : 정수형 변수 num, temp 선언 후 num을 1로 초기화

Line 8 : 조건에 상관없이 블록 안의 내용 실행

Line 9 : 반복 횟수 출력

Line 11 : temp에 값을 입력받음

Line 12 : 조건 비교 (temp가 0이면 종료, 0이 아니면 반복)

'Java' 카테고리의 다른 글

자바(Java) break, continue문  (0) 2020.06.26
자바(Java) for문  (0) 2020.06.26
자바(Java) while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

while문은 반복을 위한 문장으로, 조건을 만족하는 동안 블록 안의 내용을 계속 반복 실행하고, 조건을 만족하지 않는 경우 해당 블록을 빠져나온다. 반드시 블록 안의 조건식의 결과값을 변화시키는 문장이 필요하며, 조건이 잘못 처리될 경우 무한 루프에 빠질 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
    public static void main(String[] args) {
        int num = 1;
        
        System.out.println("[1부터 10까지 정수 출력]");
        
        while(num <= 10) {
            System.out.println(num++);
        }
        
        System.out.println("종료!");
    }
}
cs

Line 3 : 정수형 변수 num 선언 후 1로 초기화

Line 5 : 문자열 출력

Line 7 : num이 10보다 작거나 같은 동안 블록 안의 내용 반복

Line 8 : num의 값 출력 후 num을 1 증가

Line 11 : 문자열 출력

 

■ while문 무한 루프

- while문은 조건을 만족하는 동안 계속해서 반복 실행되는데, 만약 조건문을 계속해서 만족하게 된다면 while문을 빠져나오지 못하고 계속 실행하는 무한 루프에 빠지게 된다.

1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        int num = 1;
        
        while(num > 0) {
            System.out.println(num++);
        }
    }
}
cs

Line 3 : 정수형 변수 num 선언 후 1로 초기화

Line 5 : num이 0보다 큰 동안 블록 안의 내용 반복

Line 6 : num의 값 출력 후 num을 1 증가

※ num의 값은 무조건 0보다 크므로 무한 루프에 빠지게 된다.

 

■ while문 중첩

- while문 안에 while문을 포함시킨 것으로, 반복 구조 내에서 또 다른 반복 구조가 형성된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
    public static void main(String[] args) {
        int a = 1, b = 1;
        
        while(a <= 3) {
            System.out.println("[a = " + a + "일 때]");
            
            while(b <= 2) {
                System.out.println("b = " + b);
                ++b;
            }
            
            ++a;
            b = 1;
        }
    }
}
cs

Line 3 : 정수형 변수 a, b 선언 후 각각 1로 초기화

Line 5 : a가 3보다 작거나 같은 동안 블록 안의 내용 반복

Line 6 : a의 값 출력

Line 8 : b가 2보다 작거나 같은 동안 블록 안의 내용 반복

Line 9 : b의 값 출력

Line 10 : b를 1 증가

Line 13 : a를 1 증가

Line 14 : 내부의 while문을 빠져나오면 b를 다시 1부터 출력해 주기 위해 b를 1로 초기화

a b
1 1
1 2
2 1
2 2
3 1
3 2

 

'Java' 카테고리의 다른 글

자바(Java) for문  (0) 2020.06.26
자바(Java) do-while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

switch-case문은 case 뒤의 값과 일치하는 경우 분기하는 조건 분기문이다. break를 통해 switch-case문을 빠져나갈 수 있고, default를 통해 if-else if-else문의 else처럼 case 이외의 조건을 처리할 수도 있다. case 뒤에는 정수나 문자만 사용할 수 있었지만, JAVA 7 버전부터 문자열도 사용할 수 있게 되었다.

 

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
31
32
33
34
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("월 입력 : ");
        int month = keyboard.nextInt();
        
        switch(month) {
        case 1 :
        case 3 : 
        case 5 : 
        case 7 : 
        case 8 : 
        case 10 : 
        case 12 : 
            System.out.println(month + "월은 31일까지 있습니다.");
            break;
        case 4 : 
        case 6 : 
        case 9 : 
        case 11 : 
            System.out.println(month + "월은 30일까지 있습니다.");
            break;
        case 2 :
            System.out.println(month + "월은 28일까지 있습니다.");
            break;
        default : 
            System.out.println("잘못된 값을 입력하였습니다.");
            break;
        }
    }
}
cs

Line 8 : 정수를 입력받아 변수 month에 저장

Line 10 : month에 따른 분기

Line 11 ~ 17 : month가1, 3, 5, 7, 9, 10, 12 중 하나인 경우, Line 18 ~ 19 실행 후 Line 33으로 이동

Line 20 ~ 23 : month가 4, 6, 8, 11 중 하나인 경우, Line 24 ~ 25 실행 후 Line 33으로 이동

Line 26 : month가 2인 경우, Line 27 ~ 28 실행 후 Line 33으로 이동

Line 29 : month가 1~12의 값이 아닌 경우, Line 30 ~ 31 실행 후 Line 33으로 이동

'Java' 카테고리의 다른 글

자바(Java) do-while문  (0) 2020.06.26
자바(Java) while문  (0) 2020.06.26
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

if문은 어떤 조건의 참, 거짓 여부를 판단하여 실행을 제어하는 구조이다. 참은 true, 거짓은 false로 표현한다.

 

■ if

- 조건식이 참인 경우에만 중괄호 내용을 실행 (내용이 한 줄인 경우에는 중괄호를 빼고 사용하기도 한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println(num + "은 자연수");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 14로 이동

 

■ if-else

-  조건식이 참인 경우 if의 중괄호 내용을 실행하고, 거짓인 경우 else의 중괄호 내용을 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println(num + "은 자연수");
        } else {
            System.out.println(num + "은 자연수가 아님");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 15로 이동

Line 12 : num의 값이 0보다 크지 않은 경우, Line 13 실행 후 Line 15로 이동

 

■ if-else if-else

- if의 조건식이 참인 경우 if의 중괄호 안의 내용을 실행하고, if의 조건식이 거짓이고 else if의 조건식이 참인 경우 else if의 중괄호 내용을 실행. 그 외에는 else의 중괄호 내용을 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println("양의 정수");
        } else if(num == 0) {
            System.out.println("0");
        }else {
            System.out.println("음의 정수");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 18로 이동

Line 12 : num의 값이 0인 경우, Line 13 실행 후 Line 18로 이동

Line 14 : num의 값이 0보다 작은 경우, Line 15 실행 후  Line 18로 이동

 

※ "if-if-if" vs "if-else if-else"

- 아래의 [코드 1]처럼 if문 3개를 사용하는 경우, 첫 번째 if문을 만족하더라도 아래의 if문을 계속해서 비교한다. 하지만, [코드 2]처럼 if-else if-else문을 사용하는 경우 하나의 조건문을 만족하면 다음의 조건문을 비교하지 않고 건너뛰기 때문에, 속도면에서 조금 더 유리하다.

 

[코드 1]

1
2
3
4
5
6
7
8
9
if(num > 0) {
    System.out.println("양의 정수");
}
if(num == 0) {
    System.out.println("0");
}
if(num < 0) {
    System.out.println("음의 정수");
}
cs

 

[코드 2]

1
2
3
4
5
6
7
if(num > 0) {
    System.out.println("양의 정수");
else if(num == 0) {
    System.out.println("0");
}else {
    System.out.println("음의 정수");
}
cs

'Java' 카테고리의 다른 글

자바(Java) while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

수학에서 2 + 3 * 2를 계산할 때, 우리는 연산자 우선순위에 의해 *을 먼저 계산하고, +을 계산하여 8이라는 결과 값을 얻어낸다. 이와 마찬가지로 컴퓨터에도 연산자 우선순위가 존재한다.

연산기호 결합방향 우선순위
[ ], . 1(높음)
expr++, expr-- 2
++expr, --expr, +expr, -expr, ~, !, (type) 3
*, /, % 4
+, - 5
<<, >>, >>> 6
<, >, <=, >=, instanceof 7
==, != 8
& 9
^ 10
| 11
&& 12
|| 13
? expr : expr 14
=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= 15(낮음)

 

'Java' 카테고리의 다른 글

자바(Java) switch-case문  (0) 2020.06.25
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(JAVA) 자료형 변환  (0) 2020.06.18

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

비트 연산자는 비트(Bit) 단위로 연산을 수행하는 연산자이다. 비트 연산자를 이용하면 연산을 더 빠르게 수행할 수 있다.

 

 

■ & 연산자

- 두 개의 비트가 모두 1일 때 1을 반환 (아래 그림은 4와 7의 AND 연산 결과)

 

■ | 연산자

- 두 개의 비트중 하나만 1이면 1을 반환 (아래 그림은 4와 7의 OR연산 결과)

 

■ ^ 연산자

- 두 개의 비트가 서로 다를 경우 1을 반환 (아래 그림은 4와 7의 XOR연산 결과)

 

■ ~ 연산자

- 부호비트도 포함하여 0은 1로 1은 0으로 반전 (아래 그림은 4의 NOT연산 결과)

 

■ << 연산자

- 왼쪽으로 지정된 칸만큼 이동하는 연산자로, 앞으로 이동한 비트는 삭제되고 뒤의 빈 공간은 0으로 채우게 된다. 1비트씩 왼쪽으로 이동할 때마다 값이 2배가 된다. (아래 그림은 4 << 2 연산 결과)

 

■ >> 연산자

- 오른쪽으로 지정된 칸만큼 이동하는 연산자로, 뒤로 이동한 비트는 삭제되고 앞의 빈공간은 왼쪽 항의 부호 비트(MSB)가 0이면 0, 부호 비트(MSB)가 1이면 1로 채운다. (아래 그림은 4 >> 2, -4 >> 2 연산 결과)

 

■ >>> 연산자

- 오른쪽으로 지정된 칸만큼 이동하는 연산자로, 뒤로 이동한 비트는 삭제되고 앞의 빈공간은 왼쪽 항의 부호 비트(MSB)에 상관없이 0으로 채운다. (아래 그림은 4 >>> 2, -4 >>> 2 연산 결과)

'Java' 카테고리의 다른 글

자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(JAVA) 자료형 변환  (0) 2020.06.18
자바(Java) 상수  (0) 2020.06.18

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

연산에 사용하는 기호를 연산자(Operator)라고 하며, 연산에 사용하는 값을 항(Operand)이라고 한다. 예를 들어 1 + 2에서 1과 2는 항이고 +는 연산자이다.

연산자 기능
단항 연산자 항이 한 개인 연산자 ++num
이항 연산자 항이 두 개인 연산자 num1 + num2
삼항 연산자 항이 세 개인 연산자 (num1 > num2) ? 1 : 0

 

■ 대입 연산자

- 오른쪽에 있는 값이나 수식을 계산하여 왼쪽에 있는 변수에 넣어주는 연산자이다.

1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {
        int x = 10, y = 20;
        int z = x + y;
 
        System.out.println("x + y = " + z); // x + y = 30
    }
}
cs

 

■ 부호 연산자

- 양수와 음수를 나타내는 연산자이다.

연산자 기능
+ 변수나 상수의 값을 양수로 만듦 +1
- 변수나 상수의 값을 음수로 만듦 -1
1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {
        int x = +10, y = -5;
        
        System.out.println("x = " + x); // x = 10
        System.out.println("y = " + y); // y = -5
    }
}
cs

 

■ 산술 연산자

- 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 할 때 사용되는 연산자이다.

연산자 기능
+ 덧셈 x + y
- 뺄셈 x - y
* 곱셈 x * y
/ 나눗셈 x / y
% 나머지 x % y
1
2
3
4
5
6
7
8
9
10
11
public class Main {
    public static void main(String[] args) {
        int x = 3, y = 2;
 
        System.out.println("x + y = " + (x + y)); // x + y = 5
        System.out.println("x - y = " + (x - y)); // x - y = 1
        System.out.println("x * y = " + (x * y)); // x * y = 6
        System.out.println("x / y = " + (x / y)); // x / y = 1
        System.out.println("x % y = " + (x % y)); // x % y = 1
    }
}
cs

 

■ 증감 연산자

- 후위 증감 연산자 : 증감 연산자를 사용한 줄에서는 증감하지 않은 값을 사용하고, 해당 줄을 넘어가면 증감시킨다.

- 전위 증감 연산자 : 증감 연산자를 사용한 줄에서부터 증감시킨다.

연산자 기능
++ 항의 값을 1 증가시킨다. num++
++num
-- 항의 값을 1 감소시킨다. num--
--num
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
    public static void main(String[] args) {
        int x = 10;
 
        System.out.println("x++ = " + x++); // x++ = 10
        System.out.println("x = " + x); // x = 11
        System.out.println("++x = " + ++x); // ++x = 12
        System.out.println("x = " + x); // x = 12
        System.out.println("x-- = " + x--); // x-- = 12
        System.out.println("x = " + x); // x = 11
        System.out.println("--x = " + --x); // --x = 10
        System.out.println("x = " + x); // x = 10
    }
}
cs

 

■ 관계 연산자

- 두 식의 대소관계를 비교하는 연산자로서, 결과를 참(true)이나 거짓(false)으로 표현한다.

연산자 기능
> 왼쪽 항이 크면 참, 아니면 거짓 반환 x > y
< 왼쪽 항이 작으면 참, 아니면 거짓 반환 x < y
>= 왼쪽 항이 크거나 같으면 참, 아니면 거짓 반환 x >= y
<= 왼쪽 항이 작거나 같으면 참, 아니면 거짓 반환 x <= y
== 두 항이 같으면 참, 아니면 거짓 반환 x == y
!= 두 항이 다르면 참, 아니면 거짓 반환 x != y
1
2
3
4
5
6
7
8
9
10
11
12
public class Main {
    public static void main(String[] args) {
        int x = 3, y = 5;
 
        System.out.println("x > y = " + (x > y)); // x > y = false
        System.out.println("x < y = " + (x < y)); // x < y = true
        System.out.println("x >= y = " + (x >= y)); // x >= y = false
        System.out.println("x <= y = " + (x <= y)); // x <= y = true
        System.out.println("x == y = " + (x == y)); // x == y = false
        System.out.println("x != y = " + (x != y)); // x != y = true
    }
}
cs

 

■ 논리 연산자

- 논리 곱(AND), 논리 합(OR), 논리 부정(NOT)의 연산을 할 때 사용된다.

연산자 기능
&& 두 항이 모두 참인 경우에만 참 x && y
|| 두 항 중 하나의 항이라도 참이면 참 x || y
! 참인 경우 거짓, 거짓인 경우 참으로 바꾼다. !x
1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        boolean x = true, y = false;
          
        System.out.println("x && y = " + (x && y)); // x && y = false
        System.out.println("x || y = " + (x || y)); // x || y = true
        System.out.println("!x = " + (!x)); // !x = false
    }
}
cs

 

■ 복합 대입 연산자

- 대입 연산자와 다른 연산자를 조합해 하나의 연산자로 사용할 수 있다.

연산자 기능
+= a = a + 2와 동일 a += 2
-= a = a - 2와 동일 a -= 2
*= a = a * 2와 동일 a *= 2
/= a = a / 2와 동일 a /= 2
%= a = a % 2와 동일 a %= 2
<<= a = a << 2와 동일 a <<= 2
>>= a = a >> 2와 동일 a >>= 2
>>>= 2는 a = a >>> 2와 동일 a >>>= 2
&= a = a & 2와 동일 a &= 2
|= a = a | 2와 동일 a |= 2
^= a = a ^ 2와 동일 a ^= 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
    public static void main(String[] args) {
        int a = 7;
        
        System.out.println("a += 2 : " + (a += 2)); // a += 2 : 9
        System.out.println("a -= 2 : " + (a -= 2)); // a -= 2 : 7
        System.out.println("a *= 2 : " + (a *= 2)); // a *= 2 : 14
        System.out.println("a /= 2 : " + (a /= 2)); // a /= 2 : 7
        System.out.println("a %= 2 : " + (a %= 2)); // a %= 2 : 1
        System.out.println("a <<= 2 : " + (a <<= 2)); // a <<= 2 : 4
        System.out.println("a >>= 2 : " + (a >>= 2)); // a >>= 2 : 1
        System.out.println("a >>>= 2 : " + (a >>>= 2)); // a >>>= 2 : 0
        System.out.println("a &= 2 : " + (a &= 2)); // a &= 2 : 0
        System.out.println("a |= 2 : " + (a |= 2)); // a |= 2 : 2
        System.out.println("a &= 2 : " + (a &= 2)); // a &= 2 : 2
    }
}
cs

 

■ 조건 연산자

- 조건 연산자는 삼항 연산자라고도 하며, 조건식이 참인 경우와 거짓인 경우 각각 다른 값이 나온다.

연산자 기능
조건식 ? 식1 : 식2 조건식이 참이면 식1, 거짓이면 식2 수행 (num % 2 == 0) ? "짝수" : "홀수"
1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {
        int num1 = 10, num2 = 11;
        
        System.out.println("num1 : " + ((num1 % 2 == 0) ? "짝수" : "홀수")); // num1 : 짝수
        System.out.println("num2 : " + ((num2 % 2 == 0) ? "짝수" : "홀수")); // num2 : 홀수
    }
}
cs

'Java' 카테고리의 다른 글

자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24
자바(JAVA) 자료형 변환  (0) 2020.06.18
자바(Java) 상수  (0) 2020.06.18
문자 인코딩(Character Encoding) ASCII, ANSI, Unicode, UTF  (0) 2020.06.17

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

자료형 변환이란 데이터 형식(Type)을 변환하는 것으로 자동 형 변환(Implicit Conversion)과 강제 형 변환(Explicit Conversion)으로 나누어 진다.

■ 자동 형 변환(Implicit Conversion) : 자동적으로 발생하는 형태의 변환으로 묵시적 형 변환이라고도 한다.

1) 대입 연산에서의 자동 형 변환

- 대입 연산시, =의 왼쪽 값이 기준이 되고, 이항 연산자(=, +,-, *, /)는 양쪽 모두의 자료형과 결과까지 같아야 한다.

2) 산술 연산 과정의 자동 형 변환

- 산술 연산 과정에서의 형 변환은 데이터 손실이 최소화되는 방향(범위가 큰쪽)으로 진행된다.

(long은 8바이트 float의 크기는 4바이트지만, 정수보다 실수의 표현범위가 더 크기 때문에 float로 변환된다.)

 

1
2
3
4
5
6
public class Main {
    public static void main(String[] args) {
        double d = 7;
        int i = 'A';
    }
}
cs

Line 3 : int 형이 double 형으로 변환

Line 4 : char 형이 int 형으로 변환

 

■ 강제 형 변환(Explicit Conversion) : 프로그래머가 명시적으로 형 변환을 요청하는 형태의 변환으로 명시적 형 변환이라고도 한다.

1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
 
        double f = a / b;
        double g = (double)a / b;
    }
}
cs

Line 6 : int형 a / b의 결과인 0이 double형으로 자동 형변환 되어 f에 0.0 저장

Line 7 : int형 a를 double형으로 강제 형변환하여 10.0이 되고, b도 a와 연산을 하면서 double로 자동 형변환 되어 10.0 / 20.0의 계산 결과가 g에 저장

'Java' 카테고리의 다른 글

자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(Java) 상수  (0) 2020.06.18
문자 인코딩(Character Encoding) ASCII, ANSI, Unicode, UTF  (0) 2020.06.17
자바(Java) 변수  (0) 2020.06.17

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

값을 변경하지 못하는 데이터를 상수라고 한다. 상수는 이름을 가지지 않는 리터럴(Literal) 상수와 이름을 가지는 심볼릭(Symbolic) 상수로 나누어 진다.

 

■ 리터럴(Literal) 상수

10이나 20과 같이 이름이 붙지 않은 고유의 값을 리터럴(Literal) 상수라고 한다. 이름이 없기 때문에 메모리 공간의 접근 자체가 불가능하며, 존재 의미가 없어지면 메모리에서 바로 소멸된다. 기본적으로 모든 정수형 상수는 int형, 실수형 상수는 double형으로 표현 및 저장된다.

1
2
3
4
5
public class Main {
    public static void main(String[] args) {
        int num = 100;
    }
}
cs

Line 3 : 변수 num에 대입하는 값인 100이라는 숫자 자체는 상수

 

■ 심볼릭(Symbolic) 상수

- 변수와 같이 이름이 부여된 변하지 않는 값을 심볼릭(Symbolic) 상수라고 한다. 심볼릭(Symbolic) 상수를 사용하는 가장 큰 이유는, 사용자가 임의로 값을 변경할 수 없도록 하기 위해서이다. final 키워드를 통해 심볼릭(Symbolic) 상수를 정의할 수 있다.

1
2
3
4
5
6
public class Main {
    public static void main(String[] args) {
        final double PI = 3.14;
        //PI = 10
    }
}
cs

Line 3 : PI라는 이름의 상수를 선언하고, 값을 3.14로 고정

Line 4 : PI라는 상수의 값을 변경하려고 시도하여 에러 발생

'Java' 카테고리의 다른 글

자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(JAVA) 자료형 변환  (0) 2020.06.18
문자 인코딩(Character Encoding) ASCII, ANSI, Unicode, UTF  (0) 2020.06.17
자바(Java) 변수  (0) 2020.06.17
자바(Java) 정수, 실수의 표현방식  (0) 2020.06.17

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

문자 인코딩(Character Encoding)이란 문자나 기호들의 집합을 컴퓨터에 저장하거나 사용할 목적으로 부호화하는 방법을 말한다. 자바(Java)는 유니코드(Unicode)에 기반하여 문자를 표현한다.

 

■ 아스키(ASCII)

- bit(비트) 문자 인코딩으로 0(0x00) ~ 127(0x7F)까지 총 128개의 부호가 사용

- 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계

- 한글과 같은 2바이트 이상의 코드를 표현 불가능

■ ANSI

- 영어 이외의 문자를 표현하기 위해 사용

- 2바이트 문자와 1바이트 ASCII 문자를 혼용하는 가변길이 인코딩

- 한글은 표현되지만 더 많은 문자들을 인코딩하지는 못함

 

■ Unicode

- 전 세계의 모든 문자를 일관되게 표현할 수 있도록 설계된 산업 표준

- 모든 글자를 2바이트로 표현

- 자바(Java)에서 사용하는 방식

 

■ UTF-8

- 유니코드 인코딩 중에 하나로 문자열을 8Bit 기반으로 저장

- ANSI 문자는 그대로, 아시아 문자는 3바이트로 가변 표기

 

■ UTF-16

- 문자열을 16Bit 기반으로 저장

- 한글을 2바이트로 저장할 수 있어서 영어와 한글을 함께 처리할 경우 편리

- ANSI와 호환이 안된다는 단점

'Java' 카테고리의 다른 글

자바(JAVA) 자료형 변환  (0) 2020.06.18
자바(Java) 상수  (0) 2020.06.18
자바(Java) 변수  (0) 2020.06.17
자바(Java) 정수, 실수의 표현방식  (0) 2020.06.17
2진수(Binary), 8진수(Octal), 16진수(Hex)  (0) 2020.06.16

+ Recent posts