본문 바로가기

프로그래밍/JAVA

[JAVA 이론] 변수

변수란?

단 하나의 값을 저장할 수 있는 메모리 공간

 

변수 선언

  • int age;

변수타입: int(메모리의 빈공간에 알맞은 크기의 저장 공간이 확보 됨)

변수이름: age(저자공간은 변수이름을 통해 사용할 수 있음)

 

변수 초기화

  • int age = 30;

변수를 사용하기 전에 처음으로 값을 지정하는 것, 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수없는 값(쓰레기값, garbage value)'이 남아있을 수 있기 때문이다.

 

변수의 명명규칙

'변수의 이름'처럼 프로그래밍에서 사용하는 모든 이름을 '식별자(identifier)'라고 하며, 식별자는 같은 영역내에서 서로 구분(식별)될 수 있어야 한다.

  • 대소문자가 구분되며 길이에 제한이 없다.
    - True와 true는 서로 다른 것으로 간주된다.
  • 예약어를 사용해서는 안 된다.
    - true는 예약어라서 사용할 수 없지만, True는 가능하다.
  • 숫자로 시작해서는 안 된다.
    - top10은 허용하지만, 10top은 허용되지 않는다.
  • 특수문자는 '_'와 '$'만을 허용한다.
    - $harpㅇㄴ 허용되지만, #harp는 허용되지 않는다.

예약어

※ 암묵적인 약속

  • 클래스 이름의 첫 글자는 항상 대문자로 한다.
    - 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
  • 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
    - lastlndexOf, StringBuffer
  • 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
    - PI, MAX_NUMBER
변수의 타입
  • 기본형 변수: 실제 값(data)를 저장
    - 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 계산을 위한 실제 값을 저장한다. 모두 8개
  • 참조형 변수: 어떤 값이 저장되어 있는 주소(memory address)를 값으로 갖는다.
    - 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입

기본형 타입

자료형 설명 bit 범위
char 16비트 유니코드(Unicode) 문자 데이터 16 '\u0000' ~ '\uFFFF'
boolean 참/거짓 값 8 true 또는 false
byte 부호를 가진 8비트 정수 8 -128 ~ +127
short 부호를 가진 16비트 정수 16 -32,768 ~ +32,767
int 부호를 가진 32비트 정수 32 -2,147,483,638~+2,147,483,647
long 부호를 가진 64비트 정수 64 -9223372036854775808~+9223372036854775807
float 부호를 가진 32비트 부동 소수점 32 -3.402932347e+38~+3.40292347e+38
double 부호를 가진 64비트 부동 소수점 64 -179769313486231570e+308~1.79769313486231570e+08

 

변수(variable):   하나의 값을 저장하기 위한 공간

상수(constatnt): 값을 한번만 저장할 수 있는 공간

리터럴(literal):   그 자체로 값을 의미하는 것

 

println: 값을 변환하지 않고 그대로 출력

printf: 지시자(specifier)을 통해 변수의 값을 여러가지 형식으로 변환하여 출력 ex) System.out.printf("%d", num);

 

진법
  • 비트(bit, binary digit): 컴퓨터가 저장할수 있는 최소 단위
  • 바이트(byte): 데이터의 기본단위, 1비트 8개가 묶인 것
  • 워드(word): CPU가 한번에 처리할 수 있는 데이터의 크기
                   워드는 CPU 성능에 따라 바뀜(32 bit CPU: 4바이트, 64 bit CPU: 8바이트)

음수의 2진 표현을 구하는 방법

  1. 음수의 절대값을 2진수로 변환한다.
    -5의 절대값인 5를 2진수로 변환한다. 10진수 5를 2진수로 변환하면 '0101'이다.
  2. 1.에서 구한 2진수의 1을 0으로 0은 1로 바꾼다.(1의 보수 구하기)
    '0101'이 '1010'이 된다.
  3. 2.의 결과에 1을 더한다.(2의 보수 구하기, 1의 보수 +1)
    '1010'에 1을 더하면 '1011'이 되고, 이것이 -5의 2진 표현이다. 

 

기본형(primitive type)
  • 논리형(boolean)
    - boolean: 1byte, 디폴트 값(false), true/false 두 가지 값만 존재(대소문자 구분)
  • 문자형(char) 
    - char: 2byte, 단 하나의 문자만을 저장, 실제로는 문자가 아닌 문자의 유니코드가 저장 됨
  • 정수형(byte, short, int, long)
    자료형 키워드
    메모리 크기 값의 범위
    정수형 byte 1 Bytes -128~127
    short 2 Bytes -32,768~32,767
    int 4 Bytes -2,147,483,648
    ~ 2,147,483,647
    long 4 Bytes -2,147,483,648
    ~2.147.483.647
    byte나 short보다 int를 사용하도록 하는 것이 좋다. 저장할 수 있는 값의 범위가 작은 편이라서 연산시에 범위를 넘어서 잘못된 결과를 얻기 쉽다. 또한, JVM의 피연산자 스택(operand stack)이 피연산자를 4byte 단위로 저장하기 때문에 크기가 4byte 보다 작은 자료형의 값을 계산할 때는 4byte로 변환하여 연산이 수행된다.  

 

 

형변환

형변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것

 

형변환 방법

  • (타입)피연산자

괄호(): '캐스트 연산자' 또는 '형변환 연산자'

boolen타입을 제외한 나머지 타입들은 서로 형변환이 가능

기본형과 참조형간의 형변환은 불가능

큰 값에서 작은값으로 형변환할때 타입을 명시하지 않으면 에러발생

 

기본형의 자동 형변환이 가능한 방향

 

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA 이론] 객체지향 프로그래밍_1  (2) 2022.01.19
[JAVA 이론] 배열  (0) 2022.01.15
[JAVA 이론] 조건문과 반복문  (0) 2022.01.12
[JAVA 이론] 연산자  (0) 2021.12.28
[JAVA 이론] 자바  (0) 2021.12.15