2. 변수

변수 시작

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

패키지

  • 이번에는 처음으로 패키지를 만든다
  • 패키지는 지금단계에서는 자바파일을 구분하기 위한 폴더로 이해
  • variable 페키지를 만들었다면, 해당 패키지에 들어가는 자바 파일 첫줄에 package variable;와 같이 소속된 패키지를 선언해주어야 한다.
  • 자바 파일이 위치하는 패키지와 package variable 선언 위치가 같아야 한다.
package variable;
 
public class Var1 {
 
	public static void main(String[] args) {
			int a; // 변수 선언
			a = 20 // 10 -> 20으로 변경
			System.out.println(a);
			System.out.println(a);
			System.out.println(a);
		}
}

int a

  • 숫자 정수(integer)를 보관할 수 있는 이름이 a라는 데이터 저장소를 만든다. 이것을 변수라 한다.
  • 이를 변수 선언이라 한다.
  • 변수는 하나씩 선언할 수도 한번에 선언할 수도 있다.
int a;
int b;
 
int c, d;

초기화 하지 않은 변수 읽기

컴파일 에러가 발생한다.

java: variable a might not have been initialized

해석해보면 변수가 초기화되지 않았다는 오류이다.

변수를 선언하면 메모리상의 어떤 공간을 차지하고 사용한다. 그런데 그 공간에 기존에 어떤 값이 있었는지는 아무도 모른다. 따라서 초기화를 하지 않으면 이상한 값이 출력될 수 있다. 이런 문제를 예방하기 위해 자바는 변수를 초기화 하도록 강제한다.

🚨

참고

지금 학습하는 변수는 지역 변수인데, 지역변수는 개발자가 직접 초기화 해주어야 한다. 나중에 배울 클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화 해준다.

🚨

참고

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

기본형 타입

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

  • 모두 소문자로 시작한다.
  • 비겍체 타입이므로 null 값을 가질 수 없다. (기본값이 정해져 있음)
  • 변수의 선언과 동시에 메모리 생성
  • 모든 값 타입은 메모리의 스택에 저장됨
  • 저장공간에 실제 자료 값을 가진다.

리터럴

변수의 값은 변할 수 있지만 리터럴은 개발자가 직접 입력한 고정된 값이다. 따라서 리터럴 자체는 변하지 않는다.

🖋️

참고

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

🖋️

참고

실무에서 거의 사용하지 않는 타입으로는 byte short float char가 있다.

🚨

참고

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

참조형 타입

참조형 타입은 간단하게 말하자면, 위의 8가지 원시 자료형을 제외한 나머지를 말한다. 기본적으로 제공되는 클래스, 프로그래머가만든 커스텀 클래스, 배열, 열거등이 모두 참조형이다.

  • 기본형 과는 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장한다.
  • 즉, 실제 값은 다른 곳에 있으며 값이 있는 주소를 가지고 있어서 나중에 그 주소를 참조해 값을 가져온다.
  • 메모리의 힙에 실제 값을 저장하고, 그 참조값을 갖는 변수는 스택에 저장
  • 참조형 변수는 null로 초기화 시킬 수 있다.

변수 명명 규칙

규칙

  • 변수 이름은 숫자로 시작할 수 없다.
    • 그러나 숫자를 포함하는 이름은 가능하다.
  • 이름에는 공백이 들어갈 수 없다.
  • 자바의 예약어를 변수 이름으로 사용할 수 없다.
  • 변수 이름에는 영문자, 숫자, 달러, 밑줄만 사용 가능하다.

관례

  • 카멜표기법을 사용한다.
  • 클래스는 파스칼케이스, 나머지는 카멜을 사용한다.
    • 자바에서 클래스 이름의 첫 글자는 대문자로 시작한다. 그리고 나머지는 모두 첫 글자를 소문자로 시작한다. 여기에 카멜 표기법을 적용한다.
  • 상수는 모두 대문자로 사용하고 단어를 _로 구분한다.
  • 패키지는 모두 소문자를 사용한다. ex) org.spring.boot