카테고리 없음

Java 공부, 변수에 대해 알아보기~

냥발개발 2025. 7. 29. 10:26

오늘은 새롭게, variable 이라는 이름으로 package를 만들었다. 

 

그리고 variable 에서 오른쪽버튼, new, java class~ 원래 하듯~~~

 

package variable;  // 소속된 패키지 꼭 밝혀주기~ 

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

    }
}

 

이제 변수를 사용한 코드로 변경해 본다~~

 

package variable;

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

        System.out.println(a);


    }
}

 

 

이제 변수 값 바꾸는 것도 연습해 본다~~~

package variable;

public class Var3 {
    public static void main(String[] args) {
        int a;  // 변수 선언
        a = 10;  // 변수 초기화
        System.out.println(a);  // 10이 나옴
        a = 22;  // 변수 값 변경
        System.out.println(a);  // 변경된 22가 나옴.

    }
}

 


이제 변수 선언과 초기화에 대해 배운당~

 

변수 선언을 하면 컴퓨터에 메모리 공간이 확보된다. 이 공간에 데이터를 저장하는거다. 그리고 변수의 이름을 통해서 해당 메모리 공간에 접근하는 것이고. 

 

package variable;

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

 

위 코드에서는 a,b,c,d 이름으로 메모리 공간 네 군데를 확보한거다. 아직 데이터는 넣지 않은 상태~

 

그리고 이제 변수 선언이랑 초기화 한번에 하기도 한다~

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);
    }
}

 

 

변수 선언을 하는데 초기화를 하지 않으면? 아래와 같은 에러가 난다. 

java: variable a might not have been initialized

 

컴파일도 안된다. 

 

제일 좋은 에러는 컴파일에러, 제일 나쁜 에러는 런타임에러라는데 ~

컴파일 에러는 눈에 딱 보이고, 바로 고칠 수 있으니까~~

 

그런데 이렇게 아래와 같은 코드 컴파일 하면, 어떻게 되나~ 

package variable;

public class Var6 {
    public static void main(String[] args) {
        int a;
        //System.out.println(a);

    }
}

 

최적화 돼버린다~ 변수 선언은 했는데 안쓰이니까~

 


이제 변수 타입에 대해 알아보겠당~

package variable;

public class Var7 {
    public static void main(String[] args) {
        int a = 100; // 정수
        double b = 10.5; // 실수
        boolean c = true;  // 불리언
        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);

    }
}

 

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

int는 정수를 다루고

double은 실수를 다루고

boolean은 불리언 타입 true, false 만 다루고

char는 문자 하나 다룰 때 사용하고 작은 따옴표 (') 로 감싸서 쓴다

String은 문자열을 다루고 쌍따옴표 (") 로 감싸서 쓴다.

 

리터럴! 

코드에서 개발자가 직접 적은 고정된 값을 리터럴이라고 부름

위의 코드에서는 100, 10.5, 'a' 이런것들.

 


숫자 변수 타입~ 

package variable;

public class Var8 {
    public static void main(String[] args) {
        // 정수
        byte b = 127; // -128 ~127
        short s = 32767; // -32768 ~ 32767
        int i = 2147483647;  // 대충 21억 20억 -2,147,483,648 ~
        long l = 9223372036854775807L;  // 뒤에 대문자 L 을 넣는걸 권장. 소문자도 되지만.

        // 실수
        float f = 3.14f;  // 뒤에 f 붙이기
        double d = 1.23456789;   // 더블 범위가 더 크다

    }
}

 

실무에서는 double 주로 씀. float은 범위가 작아서 계산이 잘 안되는 경우가 있다고 함. 

기본이 더블~ 

 

변수 타입 정리! 

다음 타입은 실무에서 거의 사용하지 않는다

byte

short

float

char

 

byte는 우선 표현의 길이가 너무 짧다. 자바는 기본적으로 4byte(int)를 효율적으로 계산하도록 설계돼 있으니 int 쓰자~

대신에 파일을 바이트 단위로 다루므로 파일 전송, 복사, 등에서는 쓰인다.

 

short도 표현의 길이가 너무 짧아. 같은 이유로 int~ 

 

float은 표현의 길이도 짧고 정밀도도 낮다. 실수형은 double~ 

 

char 문자 하나 표현하는 일이 거의 없다. 문자 하나 써도 문자열로 쓸 수 있다 String a = "a"; 이런식으로~

 

실무에서 자주 쓰는 타입! 

 

정수- int, long, 파일 다룰 때는 byte

실수 - double

불리언 - boolean

문자열 - String

 


변수의 명명 규칙!

 

자바에서 변수의 이름을 짓는데는 규칙과 관례가 있는데

규칙은 필수! 이거 안지키면 컴파일 오류 발생.

관례는 필수는 아닌데 전세계 개발자가 해당 관례를 따르므로 지키는게 좋다. 규범 같은건가봐.

 

규칙

- 변수의 이름은 숫자로 시작 X

- 숫자를 이름에 포함하는건 오케이

- 이름엔 공백 들어가기 안되고

- 자바의 예약어 변수 이름 사용 불가

- 변수 이름에는 영문자, 숫자, 달러기호, 밑줄만 사용 가능

 

관례

- 소문자로 시작하는 낙타 표기법 (변수)

 

클래스는 대문자로 시작, 나머지는 소문자로 시작

 

예외 두 개: 상수랑, 패키지

상수는 모두 대문자. 언더바로 구분

패키지는 모두 소문자 사용

 

참고로 변수의 이름은 의미있게, 그 용도를 명확히 설명할 수 있게 짓는게 좋다. 

 

백문이 불여일타! 

 

프로그래밍은 운동이랑 비슷하다고한다. 아무리 책을 봐도 직접 해봐야. 수영처럼. 크로스핏처럼.

 


퀴즈 풀기

 

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);
    }
}

 

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);
    }
}

 

package variable.ex;

public class VarEx3 {
    public static void main(String[] args) {
        long ll = 10000000000L;
        boolean bb = true;
        System.out.println(ll);
        System.out.println(bb);
    }
}

 

리터럴은 기본이 int라서 뒤에 L 붙여주기~