[Java] 변수

AReum·2023년 12월 19일

Java-Start

목록 보기
2/8

1. 변수(Variable)

1-1. 변수(Variable)란?

  • 메모리 공간(RAM)에 한 개의 값을 기록하기 위한 공간이다.

1-2. Var1(변수) 코드 예시

package variable;

public class Var1 {
    public static void main(String[] args) {
        System.out.println(20); //변경 10 -> 20
        System.out.println(20); //변경 10 -> 20
        System.out.println(20); //변경 10 -> 20
    }
}

📍실행 결과

20
20
20
  • 변수 예시 코드를 생성하면서 패키지(package)를 만들어서 사용하였다.
  • 패키지(Package) : Java 파일을 구분하기 위한 폴더이다.
  • Java 파일이 위치하는 패키지와 package variable 선언 위치가 같아야 한다.

1-3. 변수를 사용하는 이유

  • 데이터가 적혀 있는 곳을 모두 찾아서 변경해야 하는 불편함을 해결하기 위해 사용한다.
  • 어딘가에 값을 보관해두고 필요할 때 값을 꺼내서 읽을 수 있는 저장소가 필요하다.

1-4. Var2(변수 선언 및 초기화) 코드 예시

package variable;

public class Var2 {
    public static void main(String[] args) {
        int a; //변수 선언
        a = 10; //변수 초기화

        System.out.println(a);
        System.out.println(a);
        System.out.println(a);
    }
}

📍a = 10으로 한 실행 결과

10
10
10

a = 20으로 변경해서 실행하기

package variable;

public class Var2 {
    public static void main(String[] args) {
        int a; //변수 선언
        a = 20; //변수 초기화 10 -> 20 변경

        System.out.println(a);
        System.out.println(a);
        System.out.println(a);
    }
}

📍실행 결과

20
20
20
  • a의 값을 변경하면 출력 결과가 모두 함께 변경되는 것을 확인할 수 있다.

1-5. 코드 분석

변수 선언

int a

  • 숫자 정수(integer)를 보관할 수 있는 이름이 a라는 데이터 저장소를 만든다.
  • 변수를 만드는 것을 변수 선언이라고 한다.
  • 숫자 정수 뿐만 아니라, 문자 등 다양한 종류 값을 저장할 수 있는 변수들이 있다.

변수에 값 대입

a = 10

  • Java에서 =은 오른쪽에 있는 값을 왼쪽에 저장한다는 뜻이다.
  • 숫자를 보관할 수 있는 데이터 저장소인 변수 a에 값 10을 저장한다.

변수 값 읽기

System.out.println(a)

  • 변수에 저장되어 있는 값을 읽어서 사용하는 방법은 변수 이름을 적어주기만 하면 된다.
  • 변수 a10이 들어있다면 Java는 실행 시점에 변수의 값을 읽어서 사용한다.
  • 참고. 변수의 값은 반복해서 읽을 수 있다.

2. 변수 선언 및 초기화

2-1. 변수 선언

  • 데이터를 보관할 수 있는 공간을 만들고, 그곳에 이름을 부여한다.
package variable;

public class Var4 {
    public static void main(String[] args) {
        int a;
        int b;

        int c,d;
    }
}
  • 변수는 하나씩 선언할 수도 있고, 한번에 여러 변수를 선언할 수도 있다.
int a;
int b;

int c,d;

2-2. 변수 초기화

  • 변수를 선언하고, 선언한 변수를 처음으로 값을 저장하는 것이다.
package variable;

public class Var5 {
    public static void main(String[] args) {
        //1. 변수 선언, 초기화 각각 따로
        int a;
        a = 1;
        System.out.println(a);

        int b = 2; //2. 변수 선언과 초기화를 한번에
        System.out.println(b);

        int c = 3, d = 4; //3. 여러 변수 선언과 초기화를 한번에
        System.out.println(c);
        System.out.println(d);
    }
}
  • 변수의 선언 및 초기화를 각각 따로 할 수 있다.
  • 변수를 선언하면서 동시에 초기화 할 수 있다.
    int b를 사용해서 변수 b를 만들고 그 다음에 바로 b=2를 사용해서 변수 b에 값 2를 저장한다.
  • 여러 변수를 선언하면서 초기화도 동시에 진행할 수 있다.

변수 초기화를 해야 하는 이유

package variable;

public class Var6 {
    public static void main(String[] args) {
        int a;
        System.out.println(a); //주석을 풀면 컴파일 오류 발생
    }
}
  • 아래와 같이 컴파일 에러가 발생한다.
  • 해석. 변수가 초기화되지 않았다는 오류이다.
java: variable a might not have been initialized
  • 왜 이런 오류가 발생할까?
    - 컴퓨터에서 메모리는 여러 시스템이 함께 사용하는 공간이다. 그래서 어떠한 값들이 계속 저장된다.
    - 변수를 선언하면 메모리상의 어떤 공간을 차지하고 사용한다. 그런데 그 공간에 기존에 어떤 값이 있었는지는 아무도 모른다.
    - 따라서 초기화를 하지 않으면 이상한 값이 출력될 수 있기 때문에 이러한 문제를 예방하기 위해 Java는 변수를 초기화 하도록 강제한다.

3. 변수 타입

3-1. 변수 타입 코드 예시

package variable;

public class Var7 {
    public static void main(String[] args) {
        int a = 100; //정수
        double b = 10.5; //실수
        boolean c = true; //불리언(boolean) true, false 입력 가능
        char d = 'A'; //문자 하나
        String e = "Hello Java"; //문자열, 문자열을 다루기 위한 특별한 타입

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
    }
}

📍실행 결과

100
10.5
true
A
Hello Java
  • int : 정수를 표현한다. (예. 1 , 100 , 1000) 범위 초과 시 long을 사용한다.
  • double : 실수를 표현한다. (예. 0.2 , 1.5 , 100.121)
  • boolean : true , false 참, 거짓을 표현한다. 조건문에서 자주 사용된다.
  • char : 문자 하나를 표현하고, 작은따옴표( ' )를 사용한다. (예. 'A' , '가')
  • String : 문자열을 표현하고, 큰따옴표를 사용해야 한다. (예."hello java")
  • 각 변수는 지정한 타입에 맞는 값을 사용해야 한다.

리터럴(Literal)

  • 코드에서 개발자가 직접 작성한 100, 10.5, true, 'A', "Hello Java"와 같은 고정된 값이다.

3-2. 변수의 자료형

  • 변수의 자료형에는 기본형과 참조형이 있다.

1) 기본형(Primitive Type)

  • 실제 데이터를 저장한다.
  • 논리형, 문자형, 정수형, 실수형으로 나눠지고, 8개의 자료형이 있다.
  • 각 자료형별 데이터의 저장 크기가 다르다.

정수형 표현 범위

  • byte : -128 ~ 127 (1byte, 2⁸)
  • short : -32,768 ~ 32,767 (2byte, 2¹⁶)
  • int : -2,147,483,648 ~ 2,147,483,647 (약 20억) (4byte, 2³²)
  • long : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (8byte, 2⁶⁴)

실수형 표현 범위

  • float : 대략 -3.4E38 ~ 3.4E38, 7자리 정밀도 (4byte, 2³²)
  • double : 대략 -1.7E308 ~ 1.7E308, 15자리 정밀도 (8byte, 2⁶⁴)

기타 표현 범위

  • boolean(논리형) : true , false (1byte)
  • char(문자형) : u0000 ~ uffff(2byte)

2) 참조형(Reference Type)

  • 데이터가 저장되어 있는 주소를 저장(객체의 주소)한다.

  • String
    : 문자열을 표현한다.
    : 메모리 사용량은 문자 길이에 따라 동적으로 달라진다.

4. 변수 명명 규칙

4-1. 규칙(필수 - 지키지 않으면 컴파일 오류가 발생한다.)

  • 변수 이름은 숫자로 시작할 수 없다.(예: 1num, 1st)
    - but, 숫자를 이름에 포함하는 것은 가능하다.(예: myVar1, num1)
  • 공백이 들어갈 수 없다.
  • 자바의 예약어를 변수 이름으로 사용할 수 없다.(예: int, class, public)
  • 영문자(a-z, A-Z), 숫자(0-9), 달러 기호($), 또는 밑줄(_)만 사용할 수 있다.

4-2. 관례(필수는 아니지만 전세계 개발자가 해당 관례를 따르기 때문에 사실상 규칙)

  • 소문자로 시작하는 낙타 표기법(Camel Case)을 사용한다.
  • 여러 단어로 이루어진 변수 이름의 경우, 첫 번째 단어는 소문자로 시작하고 그 이후의 각 단어는 대문자로 시작하는 낙타 표기법을 사용한다.(예: orderDetail, myAccount)
  • 변수 이름은 의미있고, 그 용도를 명확하게 설명해야 한다.
profile
개발 관련 공부한 것을 기록합니다.🎈

0개의 댓글