2. 변수(variable)와 자료형(data type)

2.1 변수 variable


  • 변수 variabledata 를 저장하기 위해 이름을 할당받은 메모리 공간 을 의미한다.

2.1.1 변수 명명 규칙


  • 대소문자를 구분한다.

  • 변수의 이름은 숫자로 시작할 수 없다.

  • $_ 이외의 특수문자는 사용할 수 없다.

  • 키워드 (지정된 예약어)는 변수의 이름으로 사용할 수 없다.

  • 권장사항

    • 시작문자는 소문자 로 문자 사이에 공백은 없도록 한다.

    • 합성어일 경우 첫 문자는 소문자 , 두번째 단어부터 첫 문자는 대문자 (camelCase)

    • 상수의 이름은 모두 대문자 , 단어 사이의 구분은 _ 로 한다.

		합성어의 경우			상수의 경우
		userName			PI
		telNumber			MAX_NUMBER
  • 예약어
타입예약어
기본자료형  boolean, char, byte, short, int, long, float, double
접근지정자private, protected, public
클래스class, abstract, interface, extends, implements, enum
메서드void, return
제어문if, else, swich, case, default, for, do, while, break, continue
논리true, false
예외 처리try, catch, finally, throw, throws
기타transient, volatile, package, import, synchronized, native, final, static, strictfp, assert, this, super, instanceof, new, etc.

2.1.2 변수 선언


// 변수는 선언만 할 수도 있고, 선언과 초기화를 동시에 할 수도 있다.

int userNumber;	// 선언만 하는 경우.
userNumber = 7; // 선언된 변수에 값을 할당.(초기화)

---------------------

int userNumber = 7; // 선언과 초기화를 동시에 하는 경우.

// [타입] [변수명] [대입연산자] [변수값]
// 타입 : int
// 타입은 기본자료형과 참조자료형이 있다.
// 변수명 : userNumber
// 대입연산자 : =
// 변수값 : 7

---------------------

int number1, number2;	// 같은 타입의 변수를 동시에 선언을 할 수 있다.

---------------------

int num1=1, num2=2;	// 같은 타입의 변수는 동시에 선언과 초기화 할 수 있다. 다른 타입은 불가능하다.

---------------------

// 잘못된 예시
// 같은 타입이면 동시에 선언이 가능하다. 하지만 이미 선언된 변수는 동시에 초기화는 불가능하다.
int num7, num8;
num7=7, num8=8;	// ERROR 발생

---------------------

final double CONSTANT_VALUE_PI = 3.14;	// 상수는 자료형 앞에 final을 붙여 선언한다.


//잘못된 예시
// 할당한 값은 변경할 수 없다.
final double CONSTANT_VALUE_PI = 3.14;
CONSTANT_VALUE_PI = 5.14;	// ERROR 발생

2.2 자료형 data type


  • 자료형 data type 은 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 역할을 한다.

2.2.1 자료형의 종류


  • Data type
    • Primitive type
      • Character
        • char
      • Interger
        • byte
        • short
        • int
        • long
      • Boolean
        • boolean
      • Floating-point
        • float
        • double
    • Reference type
      • String
      • Array
      • etc.

2.2.2 기본 자료형 primitive type


  • 실제 값을 저장한다.

  • 사용하기 전에 반드시 선언을 해야한다.

  • 기본값이 존재한다.

  • 기본자료형들은 모두 소문자로 시작한다.

  • null 을 가질 수 없다. 기본형 타입에 null을 넣고 싶다면 래퍼클래스( wrapper class )를 활용한다.

  • 기본자료형에는 8가지 유형이 있다.

1. 정수형 : byte , short , int , long ,  default : int

  • 연산시 결과 값은 정수형 int로 표현된다.

  • 값의 범위를 벗어나게 되면 오버플로우(overflow)와 언더플로우(underflow)가 발생하고 전혀 다른 값이 저장된다. 최소값부터 다시 반복되는 순환형 구조이다. byte의 경우 127을 벗어나면 -128부터 다시 시작된다.

  • byte : 1byte 자료형. 동영상, 음악파일, 실행파일의 자료를 처리할 때 사용.

  • short : 2byte 자료형. C/C++ 언어 호환 시 사용.

  • int

    • 4byte 자료형으로 정수에 대한 default 자료형이다.

    • 모든 숫자(리터럴)은 int로 저장된다.

    • 32bit 를 초과하는 숫자는 long 자료형으로 처리해야한다.

  • long

    • 8byte 자료형

    • 숫자 뒤에 알파벳 L 또는 l 을 써서 long 자료형임을 표시해야한다.

			int num = 123456789000; //오류
			long lnum = 123456789000; //오류
			long lnum = 123456789000L;

2. 실수형 : float , double ,  default : double

  • 실수는 부동소수점 방식으로 가수부와 지수부로 표현한다.

  • 3.141592 = 0.3141592 X 101이므로 가수는 0.3141592 , 지수는 1 이다.

  • 실수형의 경우 값의 범위 중 최대값을 벗어나면 오버플로우(overflow), 최소값을 벗어나면 언더플로우(underflow)가 발생하고 각각의 경우 값은 Infinity, 0.0으로 변환된다.

  • float : 4byte 자료형.

    • 부호 bit 1 + 지수 bit 8 + 가수 bit 23 = 32bit = 4byte

    • default 자료형은 double 이므로 실수 값 끝에 F 또는 f로 float를 표기한다.

    • 유효자릿수(정밀도)는 6~7 자리

  • double : 8byte 자료형. 실수에 대한 default 자료형이다.

    • 부호 bit 1 + 지수 bit 11 + 가수 bit 52 = 64bit = 8byte

    • 실수 값 끝에 D 또는 d로 double을 표기한다. 생략도 가능하다.

    • 유효자릿수(정밀도)는 15~16자리

		float fnum = 3.141592F;	// default 자료형은 double 이므로 F 또는 f로 float 를 표기
		double dnum = 3.141592;	// D 또는 d를 표기. 생략도 가능하다.
        
        // 지수표기법
        // 빈칸없이 연결되어 있어야 한다. 3.14e +6 같은 경우는 안된다.
        double d1 = 3.14e+6;	// 3140000
        double d2 = 3.14e6;		// 3140000
        double d3 = 3.14E+6;	// 3140000
        double d4 = 3.14E6;		// 3140000

3. 문자형 : char ,  default : '\u0000'

  • 2byte 자료형. 데이터 표현 범위는 0 ~ 65,535
  • 한 개의 문자 값에 대한 자료형으로 문자값을 single quote ' 로 감싸주어야 한다.
  • 컴퓨터는 2진수만 인식하기 때문에 문자집합(Character set)을 이용해 문자를 표현한다.
  • char은 국제 규약인 UNICODE를 기본으로 사용한다.
  • 아스키코드 ASCII , 유니코드 UNICODE , etc.
char c1 = 'A';	// 문자
char c2 = 65;	// ASCII
char c3 = '\u0041';	// UNICODE , 0041은 65의 16진수.

// 모두 문자 A 를 표현한다.
  • ASCII

4. 논리형 : boolean ,  default : false

  • 1byte 자료형

  • true , false 두 가지만 나타낸다.

  • 값이 존재하는지, 배열이 비었는지, 결과가 참인지 거짓인지등을 표현한다.

5. Summary table

유형자료형기본값자료크기값의 범위
  논리     boolean      false      1byte      true,false   
문자char'\u0000'2byte0 ~ 216 -1
정수byte01byte-27 ~ 27 -1
short02byte-215 ~ 215 -1
int04byte-231 ~ 231 -1
long0L8byte-263 ~ 263 -1
실수float0.0f4byte1+8+23
double0.0d8byte1+11+52

2.2.3 참조자료형 reference type


  • 기본자료형은 실제 값이 저장되지만 참조자료형은 자료가 저장된 공간의 주소를 저장한다.

  • 실제 값이 있는 주소를 가지고 있어서 그 주소를 참조해서 값을 가져온다.

  • 메모리의 힙 heap 에 실제 값을 저장하고, 그 주소를 가지고 있는 변수는 스택 stack 에 저장한다.

  • 참조형 변수는 null로 초기화 시킬 수 있다

  • 배열 array , 클래스 class , etc.

  • 참조자료형의 자세한 설명은 후에 객체지향에서 다룬다.

profile
real.great.code

0개의 댓글