변수 시작
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