본문 바로가기

Java를 자바

[Java] 변수

변수가 왜 필요해?

package variable;

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

지금은 10을 세 번 출력하는 코드이다. 20을 세 번 출력하는 코드로 바꾸고 싶어! 그럼 10→20으로 3번이나 바꿔 적어 주어야 하는데… 매우 귀찮지 않은가

변수(변할 수 있는 값)을 설정해줌으로써 간단하게 변경해 줄 수 있다 .

package variable;

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

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

 

이렇게 변수를 선언했다면 20을 출력하고 싶을 때 num = 10; 대신 num = 20; 으로 바꾸면 손쉽게 20을 출력할 수 있다.

  • 변수명을 호출하면 변수의 값을 읽어올 수 있음 System.out.println(num); → num 호출

 

변수 선언, 초기화

package variable;

public class Var1 {
    public static void main(String[] args) {
        변수타입 변수명; // 변수 선언
            변수명 = 값; // 변수 초기화

            변수명 = 값2; // 변수값 변경

            int a, b; // 여러개 동시에 선언 가능
        }
}

변수 선언과 초기화를 동시에 해보자

package variable;

public class Var1 {
    public static void main(String[] args) {
        int num = 10; // 변수 선언과 초기화 한번
    }
}

java: variable num might not have been initialized

: 변수가 초기화 되지 않았다는 오류 (컴파일 오류)

package variable;

public class Var1 {
    public static void main(String[] args) {
        int num;

        // System.out.println(num); -> 오류 발생
    }
}

변수 num 공간에 어떤 값이 있는지 알 수 없음. 그래서 그냥 출력해버리면 나는 아무 값을 넣지 않았음에도 이상한 값이 나올 수 있기 때문에 컴파일러에서 오류를 내버린다.

num 공간에 내가 원하는 값을 채워 넣어 주어야 이상한 값이 출력 되는 것을 예방할 수 있다.

변수 타입

  • 대표적인 타입
package variable;

public class Var1 {
    public static void main(String[] args) {
        int a = 100; //정수 ⭐
        double b = 10.5; //실수 ⭐
        boolean c = true; //불리언 : true, false ⭐
        char d = 'A'; //문자 하나 / 그냥 String a = "a"; 해도 됨. 잘 안씀
        String e = "Hello"; //문자열 ⭐ , "" 큰따옴표 사용

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

※ String 타입은 첫글자가 대문자로 시작함

정수

public class Var1 {
    public static void main(String[] args) {
        byte b = 127; //-128 ~ 127 / 사용 잘 안함. 그냥 int를 쓰자
        short s = 32767; //-32,768 ~ 32,767 / 사용 잘 안함. 그냥 int를 쓰자
        int i = 2147483647; //-2,147,483,648 ~ 2,147,483,647 (약 20억)
        long l = 9223372036854L; // 엄청나다~ 20억 이상일 때 사용 / 뒤에 L을 붙임
    }
}

바이트가 높을 수록 메모리 차지가 많아지니 사용할 범위에 맞춰서 타입을 지정해 주는 게 good

실수

public class Var1 {
    public static void main(String[] args) {
        float f = 10.0f; // 뒤에 f를 붙여줘야함 
        // float 사용 잘 안함. 크기가 작고 정밀도가 낮음. 그냥 double을 쓰자
        double d = 10.0; // 더 큰 범위의 실수 사용 가능
    }
}

불리안

public class Var1 {
    public static void main(String[] args) {
        int score = 80;

        boolean b = score >= 80 && score <= 100;
        
        System.out.println(b);
    }
}

변수 명명 규칙

: 이름 짓는 규칙 ~!

  • 숫자로 시작할 수 없다
  • 공백 X
  • 예약어 사용 X (ex. int, class …)
  • 영문자, 숫자, 달러 기호, 밑줄만 사용 가능

관례

  • 첫 글자는 소문자로 시작하는 카멜 표기법 사용 (낙타 표기법) ⇒ 변수
    • ex ) myDetail, HelloWorld
    • 두 단어를 이을 때 첫 글자를 대문자로
    • 공백 없이 단어를 이을 수 있음
  • 클래스는 첫글자가 대문자
    • MyDetail
    • 클래스도 첫 글자만 대문자지 낙타 표기법 사용함
    • 클래스 이름의 첫 글자는 대문자, 나머지는 모두 첫 글자 소문자
  • 상수는 모두 대문자 사용, 언더바로 구분
    • USER_LIMIT
  • 패키지는 모두 소문자
    • org.spring.boot
  • 변수 이름은 의미있고, 용도를 명확하게 !
    • 그래야 딱 보고 뭔지 바로 알 수 있음