자바의 프리미티브 타입, 변수, 배열을 사용하는 방법을 익힌다.
Variable 변수 : 하나의 값을 저장할 수 있는 메모리 공간
변수 명명 규칙 :
1) 첫번째 글자는 문자이거나 '$', '_' 이어야하고 숫자로 시작할 수 없다.
2) 영어 대소문자가 구분된다(필수)
3) 첫 문자는 영어 소문자로 시작하되 다른 단어가 붙을 경우 첫 문자를 대문자로 한다(관례)
4) 문자 길이의 제한은 없다
5) 자바 예약어는 사용할 수 없다(필수)
** 예약어 : 이미 자바에 등록되어 의미가 약속되어 있는 단어
변수의 사용
변수에 값을 저장할 때는 대입 연산자 =를 사용한다.
우측 값을 좌측 변수에 저장한다는 의미
// 변수선언
int number;
// 값 저장
number = 7;
변수의 초기화
1) 변수를 선언하고 처음 값을 저장할 경우 이를 초기값이라고 한다.
2) 변수에 초기값을 주는 행위를 변수의 초기화라고 한다.
3) 변수는 초기화 되어야 읽을 수 있고 초기화되지 않은 변수는 읽을 수 없다.
선언 위치에 따른 변수의 종류
1) 인스턴스변수
ㅡ 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다.
ㅡ 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우 인스턴스변수로 선언한다.
2) 클래스 변수
ㅡ 인스턴스 변수 앞에 static을 붙이면 클래스 변수가 선언된다.
ㅡ 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성의 경우 클래스 변수로 선언해야한다.
ㅡ 클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고도 언제라도 바로 사용가능하며 '클래스이름.클래스변수'와 같은 형식으로 사용된다.
3) 지역변수
ㅡ 메서드 내에 선언되어 메서드 내에서만 사용 가능하다.
ㅡ 메서드가 종료되면 소멸되어 사용할 수 없다.
라이프타임
ㅡ 변수가 메모리에서 살아있는 기간을 의미
ㅡ 변수가 선언된 블록 내부에서 프로그램이 도는 동안을 의미.
1) 자동 타입 변환 Promotion
ㅡ 프로그램 실행 도중 자동적으로 타입 변환이 일어나는 것을 말한다.
ㅡ 작은 크기의 타입이 큰 크기의 타입에 저장될 때 발생한다.
(float은 4byte지만 표현할 수 있는 값의 범위가 더 큼)
** 예외) char는 2byte크기를 가지지만 0~65535의 범위로 음수가 저장될 수 없다. 따라서 음수 저장이 가능한 byte 타임을 char 타입으로 자동변환 시킬 수 없다
2) 강제 타입 변환 Casting
ㅡ 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어 저장하는 것.
ㅡ int 타입 변수는 4byte 이므로 1byte 크기를 가지는 byte타입 변수에 저장할 수 없다. 그래서 강제적으로 캐스팅 연산자를 사용해 1byte씩 쪼개어 끝에 있는 1byte만 byte타입 변수에 저장한다.
** 변환 시 값의 손실을 방지하기 위해 강제 타입 변환 전 값이 안전하게 보존될 수 있는지 검사하는 것이 좋다.
1) 배열 : 동일 타입의 값을 여러개 취급할 수 있는 기능
2) 1차 배열
3) 2차 배열
1) 타입 추론 (Type Inference):
정적 타이핑을 지원하는 언어에서 타입이 정해지지 않은 변수에 대해 컴파일러가 변수의 타입을 스스로 찾아낼 수 있도록 하는 기능.
타입 추론이 가능하다는 얘기는 타입을 명시하지 않아도 된다는 뜻.
-> 코드량을 줄이고 코드의 가독성을 높일 수 있음
2) Var :
java 10에서는 var라는 Local Variable Type Inference가 추가되었다. 기존의 자바에서는 일반 변수에 대해 타입 추론이 지원되지 않고 generics와 lambda 식에 대해서만 타입 추론을 지원하고 있었다.