[Java] 자료형과 변수
programming/java

[Java] 자료형과 변수

2. 자료형과 변수

 

2.1 정보의 저장 단위

Photo Credit: teach-ict.com

 

bit(Binary digIT) : 전산학 분야에서 사용되는 정보의 최소저장단위
8bit = 1byte
1024byte = 1KB(킬로바이트)
1024KB = 1MB(메가바이트)
1024MB = 1GB(기가바이트)
1024GB = 1TB(테라바이트)
1024TB = 1PB(페타바이트)
1024PB = 1EB(엑사바이트)
1024EB = 1ZB(제타바이트)

 

 

2.2 변수와 상수

2.2.1 변수(Variable)

변하는 값
하나의 값을 저장할 수 있는 기억공간

 

2.2.2 상수(Contstant)

변하지 않는 값

final int NUM = 100;

 

 

2.3 변수의 type(Data Type)

 

문자형: char

숫자형

  • 정수형: byte, short, int, long
  • 실수형: float, double

논리형: boolean

 

 

2.4 변수 선언

변수를 사용하기 전에 먼저 변수 선언을 해야 함

변수의 자료형과 이름을 컴파일러에게 알려주어야 함

int foo;

변수의 이름은 같은 영역에서 중복될 수 없음

 

 

package example;

public class Test4 {
    // Ctrl + Space: 자동완성
    // Ctrl + F11: 실행
    public static void main(String[] args) {
    	// 변수 선언: 자료형 변수;
        int foo;
        
        // 변수 foo에 10 대입
        foo = 10;

        // 상수는 좌변에 올 수 없음
        // 10 = a;

        // 좌변 = 우변
        System.out.println(foo);
        
        foo = 20;
        System.out.println(foo);
        
        // 에러
        // char foo;
        
        // 문자형 변수 선언
        char c;
        
        // 작은 따옴표로 묶음
        c = 'A';
        System.out.println(c);
    }
}

 

 

2.5 변수의 초기화

 

지역변수: 연산, 출력 등의 작업을 하기 전에 반드시 초기값을 할당해야 함

잘못된 사용 예

int a;

System.out.println(a);

 

전역변수(멤버변수) : 초기화를 하지 않아도 기본값이 할당됨

 

기본자료형

정수형 변수 : 0

실수형 변수 : 0.0

문자형 변수 : \0 (null 문자)

논리형 변수 : false

객체자료형(참조변수)

null

 

package example;

public class Test5 {
    static int m;

    // main: 함수 | 메서드
    public static void main(String[] args) {
        System.out.println(m);
    }
}

 

 

2.6 사용 범위에 따른 변수의 종류

2.6.1 지역변수(local variable)

method 내부에 선언된 변수

method 내부에서만 사용 가능

method가 호출될 때 생성되고 method가 종료되면 자동으로 삭제됨

public double convert(int num) {
    // sum: local variable
    double sum;
    sum = Math.sqrt(num * num);
    return sum;
}

 

2.6.2 전역변수(global variable, instance variable, member variable)

method 내부에 선언된 변수

class 전체에서 사용 가능

객체가 생성될 때 만들어지고 가비지 컬렉터(Garbage Collector)에 의해 삭제됨

class A {
	// instance variable
	int x;
    
    // instance method
    void f1() {
    	// (...)
    }
    
    // x, f1: instance members
}

public static void main(String args[]) {
	// local instance explicitly we have to initalized
	int k = 100;
}

 

2.6.2.1 기본자료형(Primitive type)

8개 (boolean, char, byte, short, int, long, float, double)

종류 자료형 메모리 크기(byte) 기본값 표현 가능 범위
논리형(참  / 거짓) boolean 1 false true 또는 false(0과 1이 아니다)
문자형 char 2 \u0000 0 ~ 65,535
정수형 byte 1 0 -128 ~ 127
short 2 0 -32.768 ~ 32,767
int 4 0 -2,147,483,648 ~ 21억
long 8 0 -9223372036854775808 ~ 9223372036854775807
실수형 float 4 0.0 1.4E-45 ~ 3.4028235E38
double 8 0.0 4.9E-324 ~ 1.7976931348623157E308

 

 

2.6.2.2 참조자료형(Reference type)

- 기본자료형을 제외한 나머지(String, System 등)

- 주소값(위치값)을 저장

 

 

기초형(기본형)과 참조형의 종류

 

 

2.7 Garbage Collector

사용하지 않는 메모리가 일정 용량 이상이 되면 가비지 컬렉터에 의해 자동으로 회수됨
쓰레기 수집(Garbage Collection)
쓰레기 수집기(Garbage Collector)

 

 

 

2.8 Unicode와 ASCII code

2.8.1 유니코드(Unicode)

16비트(2바이트) 기반의 다국적 문자 체계

전세계 대부분의 문자를 수용 다국어 처리에 효과

 

2.8.2 아스키코드(미국정보교환표준부호, American Standard Code for Information Interchange; ASCII)

8비트(1바이트) 코드 체계

 

 

2.9 명명규칙(Naming Rule)

패키지(package): 모두 소문자로, 2단어 이상일 경우 _로 연결

package com.test;

 

클래스(class): 첫 글자는 대문자로, 2단어 이상일 경우 단어의 첫글자는 대문자로

class Person { }
class AllPerson { }

 

변수(variable), 메서드(method): 첫글자는 소문자로, 2단어 이상일 경우 단어의 첫글자는 대문자로

int maxNum;
void setData() { }

 

상수(constant): 두 대문자로, 2단어 이상일 경우 _로 연결

final int MAX_NUM = 100;

 

일반적인 규칙

대소문자가 구분되며 길이 제한이 없음
예약어(Reserved word)는 사용 금지
숫자로 시작할 수 없음
특수문자는 '_'와 '$'만 허용됨
한글도 사용가능하나 권장하지 않음

 

 

2.10 문자와 문자열

2.10.1 문자(char)

작은따옴표 안에 작성
1개의 문자만 저장 가능

char ch = 'A';

 

2.10.2 문자열(String)

 

문자들의 집합

 

큰따옴표 안에 작성
" Good "

 

큰따옴표 안에 큰따옴표가 들어갈 경우 \" 사용
" \"Good \" "

 

문자열을 연결할 경우 + 사용

String str = "Hello " + "CoRock";

 

2.10.3 String 사용시 주의사항

 

String 생성시 new를 사용하지 않으면 메모리 절약을 위해 Heap 영역 내부에 있는 String pool 영역에 생성되어 공유함
new를 사용하면 String pool과 별도의 영역에 생성됨

 

== 주소 비교 연산자
String의 내용을 비교할 경우 equals method를 사용

 

A.equals(B)
A 문자열과 B 문자열의 내용만을 비교함

 

 

 

2.11 실습예제

2.11.1 Ex01_var.java