쭈쌤
쭈쌤 Hello World

[Java] 변수

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 변수≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

[Java] 변수

수학에서의 변수라는 용어는 수식에 따라서 변하는 값을 의미하지만 프로그래밍 언어에서의 변수는 메모리에 저장되는 데이터들을 총칭하는 용어 입니다.

#01. 메모리

데이터를 저장할 수 있는 물리적 장치

1) 휘발성 메모리

전원을 OFF하면 저장되어 있는 데이터가 모두 삭제된다.

ex) RAM 카드

2) 비휘발성 메모리

전원을 OFF 하더라도 데이터가 삭제되지 않는다.

ex) 하드 디스크, USB

#02. 컴퓨터의 데이터 단위

컴퓨터에 저장될 수 있는 데이터는 이진수 형태이므로 0아니면 1로만 구성된다.

1) bit

이진수 값 하나를 의미.

  • 1bit는 두 개의 정보를 표현할 수 있다. (0 혹은 1)
  • 2bit는 네 개의 정보를 표현할 수 있다. (00, 01, 10, 11)
  • nbit는 2의 n제곱 개의 정보를 표현할 수 있다.
    • 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 …

알파벳 a는 이진수로 표현했을 때 01100001가 된다.

2) 인코딩

글자를 부호화 하기 위한 규격.

ex) 모스부호

ANSI

이진수를 사용해서 알파벳을 부호하 하기 위한 미국 표준 규격

7bit로 알파벳 한 글자를 표현한다.

미국 전용.

확장 ANSI

ANSI에서 다른 언어를 표현하기 위한 1bit를 추가하여 8bit로 한 글자를 표현하는 방식

영어 + 1개국어 표현이 가능하기 때문에 언어별로 종류가 나누어진다.

ex) euc-kr, euc-jp, euc-ch …

확장 ANSI가 국제표준으로 정해진 후 컴퓨터에서 데이터의 크기의 초소 단위를 8bit로 정하고 이를 1byte라고 부르기 시작함.

영어는 1byte로 한 글자를 표현 가능함.

한국어와 같은 조합형 글자는 두 개 이상의 byte가 모여야 한 글자를 구성할 수 있다.

UTF-8

확장 ANSI가 영어+1개국어 밖에 표현하는 한계를 개선하여 언어 종류에 상관 없이 3byte로 한 글자를 표현하는 방식.

한번에 모든 언어를 표현할 수 있다.

현재 사실상 산업 표준으로 사용되고 있다.

3) 컴퓨터의 용량 단위

  • byte : 최소단위 (이진수 8개)
  • kbyte : 1kb = 1024b
  • mbyte : 1mb = 1024kb
  • gbyte : 1gb = 1024mb
  • tbyte : 1tb = 1024gb

16gb의 RAM을 장착한 경우 16 * 1024 * 1024 * 1024 * 8 개의 이진수를 저장할 수 있는 공간이 존재한다는 의미

#03. 변수

메모리에 저장된 데이터.

쉽게 생각하면 값을 대입하기 위한 메모리 영역이라고 할 수 있다.

1) 데이터 타입 (Data Type)

메모리에 저장되어 있는 이진수들을 해석하기 위한 규칙들.

종류 설명 크기 값 형태
byte -128~127 까지의 범위를 갖는 정수 1byte ex) 1
short byte 보다 큰 범위를 저장할 수 있는 정수 2byte ex) 200
int short 보다 큰 범위를 저장할 수 있는 정수 4byte ex) 1234567
long int 보다 큰 범위를 저장할 수 있는 정수 8byte 생략
float 실수 4byte ex) 3.14
double float 보다 더 정밀하게 소수점 자리를 표현할 수 있는 실수 8byte ex) 3.141592…
boolean 참/거짓을 표현하는 논리값 2byte true / false
char 한 글자. 홑따옴표로 감싼다. 1byte ‘a’

예를 들어 int형 변수를 만든다는 것은 메모리의 4byte 공간(32칸)을 사용한다는 의미입니다.

2) 변수 사용하기

변수의 선언

데이터 타입을 명시하고 그 옆에 변수의 이름을 정의한 다음 세미콜론으로 명령을 종료한다.

1
int num;

메모리에서 4byte의 공간(32칸)을 선점하여 num이라는 이름표를 적용한다는 의미

값의 할당

대입 연산자 =을 사용해서 선언한 변수에 데이터를 저장하는 것.

항상 오른쪽에서 왼쪽으로 대입된다.

1
num = 100;

num이라고 이름 지어진 4byte의 메모리 공간에 10진수 100을 이진수로 변환하여 기록한다는 의미.

선언과 할당의 일괄 처리

1
int num = 100;

같은 데이터 타입을 갖는 변수 여러 개를 한 번에 선언하기

1
2
3
int num1, num2;
num1 = 100;
num2 = 200;

변수 값 할용하기

이미 값이 할당된 변수는 다른 값으로 변경 가능
1
2
int pay = 100;
pay = 200;
변수 값을 다른 변수에 복사 가능
1
2
3
4
5
int x, y;
x = 50;
y = x;

int z = y;

3) 변수의 이름 규칙

  1. 언더바(_), 숫자, 영어, $기호만 사용 가능하다.
  2. 첫 글자는 숫자가 될 수 없다.
  3. 자바에서 사용하는 예약어를 사용할 수 없다.
  4. 첫 글자는 대부분 소문자로 시작한다.

소스코드가 UTF-8인 경우 한글도 변수 이름에 사용할 수 있습니다.

두 개 이상의 단어를 조합하여 이름을 정의하는 경우
  1. 스네이크 표기법 : 띄어 쓰기를 언더바(_)로 표현
    1
    
    int my_age;
    
  2. 카멜 표기법 : 띄어쓰기가 시작되는 단어의 첫 글자를 대문자로 변경
    1
    
    int myAge;
    

자바의 경우 대부분 카멜표기법을 따릅니다.

4) 문자열

쌍따옴표로 감싸진 문장을 저장할 수 있는 데이터 타입

1
String welcomeMessage = "Hello World";

데이터 타입 첫 글자가 대문자로 시작하는 것에 주의!!!

5) 변수의 제약

선언되지 않은 변수는 사용할 수 없다.

1
2
3
int x;
x = 100;    // 선언된 변수를 사용하므로 ok
y = 200;    // 선언되지 않은 변수에 값을 대입하므로 에러

이미 선언된 변수를 중복 선언할 수 없다.

1
2
3
4
int z;
z = 200;

int z = 300;    // 중복선언 에러

float 타입 사용시 주의사항

double 타입과의 구분을 위해 대입시 F를 적용해야 한다. (필수)

1
float k = 12.345F;

Java는 변수에 대입되는 모든 실수형 값을 double로 기본 인식합니다.

long 타입 사용시 주의사항

int 타입과의 구분을 위해 대입시 L을 적용해야 한다. (권장)

1
long k = 12345678L

Java는 변수에 대입되는 모든 정수형 값을 int로 기본 인식합니다.

6) 변수 값 출력하기

1
2
3
4
int myAge = 100;

System.out.println(myAge);      // 100이 출력된다.
System.out.println("myAge");    // myAge라는 문자열이 출력된다.

#03. 변수 활용 예제

제시된 소스 파일들을 추가하고 다음의 결과값을 출력하시오.

Value1.java

논리형 변수 isMan과 isWoman이라는 값을 한 줄로 선언하고 자신의 성별을 의미하는 변수에 참, 반대쪽 성별을 의미하는 변수에 false를 할당한 뒤 두 개의 변수를 모두 출력하세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * @filename    : Value1.java
 * @description : 연습문제 1
 * @author      : 이 광 호 (leekh4232@gmail.com)
 */
public class Value1 {
    public static void main(String[] args) {
        // 논리형 변수 isMan과 isWoman이라는 값을 한 줄로 선언
        boolean isMan, isWoman;

        // 자신의 성별을 의미하는 변수에 참, 반대쪽 성별을 의미하는 변수에 false를 할당
        isMan = true;
        isWoman = false;

        // 출력
        System.out.println(isMan);
        System.out.println(isWoman);
    }
}
출력결과
1
2
true
false

Value2.java

정수형 변수 peopleCount를 선언하고 다음 라인에서 30이라는 값을 할당 한 후 출력하세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * @filename    : Value2.java
 * @description : 연습문제 2
 * @author      : 이 광 호 (leekh4232@gmail.com)
 */
public class Value2 {
    public static void main(String[] args) {
        // 정수형 변수 peopleCount를 선언
        // -> byte, short, int, long 모두 사용 가능
        int peopleCount;

        // 다음 라인에서 30이라는 값을 할당 한 후 출력.
        peopleCount = 30;
        System.out.println(peopleCount);
    }
}
출력결과
1
30

Value3.java

실수형 변수 pi라는 값을 선언하면서 원주율값 3.141592를 한 라인에서 할당하고 출력하세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * @filename    : Value3.java
 * @description : 연습문제3
 * @author      : 이 광 호 (leekh4232@gmail.com)
 */
public class Value3 {
    public static void main(String[] args) {
        // 실수형 변수 pi라는 값을 선언하면서 원주율값 3.141592를 한 라인에서 할당하고 출력.
        // -> float, double 모두 사용가능
        // -> float 사용시 `f`적용
        double pi = 3.141592;
        System.out.println(pi);
    }
}
출력결과
1
3.141592

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 변수≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

comments powered by Disqus