변수

이상민·2024년 7월 8일

변수 시작

Var1

package variable;

public class Var1 {
    public static void main(String[] args){
       System.out.println(10);
       System.out.println(10);
       System.out.println(10);

    }
}

패키지(package)

  • 자바 파일을 구분하기 위한 폴더

실행 결과

10
10
10

사용자가 숫자를 입력하고, 출력하고 싶다면 어떻게 해야할까? 사용자가 입력한 값은 항상 변한다.
결국 어딘가에 값을 보관해두고 필요할 때 값을 꺼내서 읽을 수 있는 저장소가 필요하다.
쉽게 비유하자면 데이터를 담을 수 있는 그릇이 필요하다.
모든 프로그래밍 언어는 이런 문제를 해결하기 위해 변수라는 기능을 제공한다.
변수는 이름 그대로 변할 수 있다는 뜻이다.

Var2

package variable;

public class Var2 {
    public static void main(String[] args) {
        int a; //변수 선언(숫자를 담을수 있는 그릇)
        a = 20; //변수 초기화

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

    }
}

a = 20 실행 결과

20
20
20

변수 선언

int a

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

변수에 값 대입
a = 10

  • 자바에서 =은 오른쪽에 있는 값을 왼쪽에 저장한다는 뜻이다.
  • 숫자를 보관할 수 있는 데이터 저장소인 변수a에 값10을 저장한다.
  • 이처럼 선언한 변수에 처음으로 값을 대입해서 저장하는 것을 변수 초기화라 한다.

변수 값 읽기
System.out.println(a)

  • 변수 이름을 적어주기만 하면 된다.
  • 변수 a에 10이 들어가 있다면 자바는 실행 시점에 변수의 값을 읽어서 사용한다.
  • 변수의 값은 반복해서 읽을 수 있다. 변수의 값을 읽는다고 없어지는 것은 아니다.

변수 값 변경

변수는 이름 그대로 변할 수 있는 수이다.
변수 a에 저장된 값을 언제든지 바꿀 수 있다.

Var3

package variable;

public class Var3 {

    public static void main(String[] args) {
        int a;//변수 선언
        a = 10;//변수 초기화 a(10)
        System.out.println(a);
        a = 50; //변수 값 변경: a(10 -> 50)
        System.out.println(a);

    }
}

실행 결과

10
50

변수의 값이 변경된 이후에는 10 대신에 50이 출력
변수의 값을 변경하면 변수에 들어있던 기존 값은 삭제된다.

변수 선언과 초기화

변수 선언
변수를 선언하면 컴퓨터의 메모리 공간을 확보해서 그곳에 데이터를 저장할 수 있다.
데이터를 보관할 수 있는 공간을 만들고, 그곳에 이름을 부여한다.

Var4

package variable;

public class Var4 {

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

        int c,d;

    }
}

다음과 같이 한번에 여러 변수를 선언할 수도 있다.
int c,d;

변수 초기화
변수를 선언하고, 선언한 변수에 처음으로 값을 저장하는 것을 변수 초기화라고 한다.

Var5

package variable;

public class Var5 {

    public static void main(String[] args) {
        int a;
        a = 1;
        System.out.println(a);

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

        int c = 3, d = 4; // 여러 변수 선언과 초기화를 한번에
        System.out.println(c);
        System.out.println(d);

    }
}

여러 변수를 선언하면서 초기화도 동시에 진행 가능

변수는 초기화 해야한다
만약 변수를 초기화 하지 않고 사용한다면?
Var6

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
변수가 초기화되지 않았다는 오류이다.

참고 : 지금 학습하는 지역 변수는 개발자가 직접 초기화를 해주어야 한다.클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화를 진행해준다.

참고 : 컴파일 에러는 자바 문법에 맞지 않았을 때 발생하는 에러이다. 컴파일 에러는 오류를 빨리, 그리고 명확하게 찾을 수 있기 때문에 사실 좋은 에러이다.

변수 타입1

변수는 데이터를 다루는 종류에 따라 다양한 형식이 존재한다.
Var7

package variable;

public class Var7 {

    public static void main(String[] args) {
        int a = 100;//정수
        double b = 10.5;//실수
        boolean c = true;//불리언 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 타입,int 형식,int형 등으로 부른다.

참고 : String은 첫 글자가 대문자로 시작하는 특별한 타입이다. 문자열을 다루는 특별한 타입이다.

자신의 타입에 맞는 데이터 사용
각 변수는 지정한 타입에 맞는 값을 사용해야 한다.

리터럴
코드에서 개발자가 직접 적은 100,10.5,true,A,Hello Java와 같은 고정된 값을 프로그래밍 용어로 리터럴이라 한다.

		int a = 100;//정수 리터럴
        double b = 10.5;//실수 리터럴
        boolean c = true;//불리언 리터럴
        char d = 'A'; //문자 하나 리터럴
        String e = "Hello Java";//문자열 리터럴

리터럴 이라는 단어의 어원이 문자 또는 글자를 의미한다.

변수 타입2

Var8

package variable;

public class Var8 {

    public static void main(String[] args) {
        //정수
        byte b = 127; //-128~127
        short s = 32767; // -32,768 ~ 32,767
        int i = 2147483647; //-2,147,483,648 ~ 2,147,483,647 (약20억)

        long l = 92222222222L;

        //실수
        float f =10.0f;
        double d = 10.0;
    }
}

메모리를 작게 사용하면 작은 숫자를 표현할 수 있고, 메모리를 많이 사용하면 큰 숫자를 표현할 수 있다.

변수와 메모리 공간 크기

리터럴 타입 지정

  • 정수 리터럴은 기본으로 int을 사용한다.
    int범위인 약 20억을 넘어가면 L을 붙여서 정수 리터럴을 long으로 변경해야 한다. (소문자는 숫자1로 햇갈릴 수 있으므로 대문자를 붙이는 것을 권장)
  • 실수 리터럴은 기본이 double형을 사용한다.

변수 타입 정리

메모리 용량은 매우 저렴하다. 따라서 메모리 용량을 약간 절약하기 보다는 개발 속도나 효율에 초점을 맞추는 것이 더 효과적이다.

자주 사용하는 타입
실무에서 자주 사용하는 타입은 다음과 같다.

  • 정수 - int,long : 자바는 정수에 기본적으로 int를 사용한다. 만약 20억이 넘을 것 같으면 long을 사용한다.
    • 파일을 다룰 때는 byte를 사용한다.
  • 실수 - double : 실수는 고민하지 말고 double을 쓰자
  • 불린형 - boolean : true,false 참 거짓을 표현한다. 조건문에서 자주 사용된다.
  • 문자열 - String : 문자를 다룰 때는 문자 하나든 문자열이든 모두 String을 사용하는 것이 편리하다.

변수 명명 규칙

자바에서 변수의 이름을 짓는데는 규칙과 관례가 있다.
규칙은 필수이다. 규칙을 지키지 않으면 컴파일 오류가 발생한다.

규칙

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

관례

  • 소문자로 시작하는 낙타 표기법
    • 변수 이름은 소문자로 시작하는 것이 일반적이다. 여러 단어로 이루어진 변수 이름의 경우, 첫 번째 단어는 소문자로 시작하고 그 이후의 각 단어는 대문자로 시작하는 낙타 표기법을 사용한다(예 : orderDDetail,myAccount)

낙타표기법
낙타표기법을 사용하면 이름에 공백을 넣지 않고도 여러 단어를 쉽게 구분할 수 있으므로, 변수의 이름을 이해하기 쉽게 만들어준다.

자바 언어의 관례 한번에 정리

  • 자바에서 클래스 이름의 첫 글자는 대문자로 시작한다. 그리고 나머지는 모두 첫 글자를 소문자로 시작한다.
  • 예외가 2가지 있다.
    • 상수는 모두 대문자를 사용하고 언더바로 구분한다.
      • USEER_LIMIT
    • 패키지는 모두 소문자를 사용한다.
      • org.spring.boot

변수 이름은 의미있고, 그 용도를 명확하게 설명해야 한다.

문제와 풀이

문제1
다음 코드에 반복해서 나오는 숫자 4,3을 다른 숫자로 한번에 변경할 수 있도록 다음을 변수 num1,num2를 사용하도록 변경해 보자.
VarEx1

package variable.ex;

public class VarEx1Question {

    public static void main(String[] args) {
        int num1 = 4;
        int num2 = 3;
        System.out.println(num1 + num2);
        System.out.println(num1 - num2);
        System.out.println(num1 * num2);
    }
}

문제2
1.변수 num1을 선언하고, 이에 10을 할당하세요.
2.변수 num2를 선언하고, 이에 20을 할당하세요.
3.두 변수의 합을 구하고, 그 결과를 새로운 변수 sum에 저장하세요.
4.sum변수의 값을 출력하세요.

VarEx2

package variable.ex;

public class VarEx2 {

    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        int sum = num1 + num2;
        System.out.println(sum);


    }
}

실행 결과

30

문제3 - long,boolean 데이터 타입
long 타입의 변수를 선언하고,그 변수를 10으로 초기화한 후 출력하는 프로그램을 작성하자
boolean 타입의 변수를 선언하고, 그 변수를 true로 초기화한 후 출력하는 프로그램을 작성하자

VarEx3

package variable.ex;

public class VarEx3 {

    public static void main(String[] args) {
        long longVar = 10L;
        System.out.println(longVar);

        boolean booleanVar = true;
        System.out.println(booleanVar);


    }

}

실행 결과

10
true

마무리

오늘은 변수에 관한 정의와 어떻게 사용되고 주로 어떻게 활용되는지를 공부했다. 변수는 말 그대로 변할 수 있는 값으로 어딘가에 저장해두고 필요할 때 꺼내서 쓰는 것을 말한다.
그리고 다양한 변수 타입이 있지만 실무에서는 정수는 int,long 실수는 double 불린형 boolean 문자열 String이 주로 사용되니 위에 타입들을 많이 쳐보려고 노력했다.
그리고 요즘은 메모리 용량 값이 많이 저렴해졌다고 하니 그냥 큰용량에 숫자를 신경쓰지 않고 담는 방법을 사용하면 좋겠다고 생각했다. 마지막으로 낙타표기법을 이용하니 확실히 가독성이 좋다고 느껴졌다. 관례라고 하니 항상 유념해두어야 겠다.


출처

https://www.youtube.com/watch?v=JEzBDk0E9Rw

profile
안녕하세요

0개의 댓글