2. 변수, 변수의 Type
* 변수란?
- 변수는 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름이며, 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다.
* 변수 명명규칙
- 변수 이름은 첫번째 글자가 문자여야 하며, 중간부터는 문자, 숫자, $, _를 포함할 수 있다.
- 첫번째 문자를 소문자로 시작하되 캐멀 스타일로 작성하는 것이 관례이다.
* Camel스타일
- 코드를 작성할 때 여러단어를 혼합하여 명명하는 경우, 낙타의 등 처럼 대소문자가 섞여있도록 작성하는 스타일
- 자바 소스 파일명(클래스명)은 대문자로 시작하는 것이 관례
- 변수명은 소문자로 시작하는 것이 관례
* 변수의 선언
- 변수의 선언은 저장되는 값의 타입과 이름만 결정한 것 -> 메모리에 할당 된 것은 아니다.
- 변수에 값이 최초로 대입될 때 메모리에 할당되고, 해당 메모리 값에 저장이 된다.
- 초기화되지 않은 변수는 메모리에 할당되지 않기 때문에 변수를 통해 메모리 값을 읽을 수 없다.
- 초기화 되지 않은 변수를 연산식에 사용할 경우 컴파일에러(The local variable value may not have been initialized)가 발생한다.
* 정수Type
값의 분류 | 기본타입 |
정수 | byte, char, short, int, long |
실수 | float, double |
논리(true/false) | boolean |
Type | 메모리크기 | 저장되는 값의 허용 범위 | ||
byte | 1byte | 8bit | -128~127 | |
short | 2byte | 16bit | -32,768~32,767 | |
char | 2byte | 16bit | 0~65535 | |
int | 4byte | 32bit | -2,147,483,648~2,147,483,647 | |
long | 8byte | 64bit | -9,223,372,036,854~-9,223,372,036,854 |
* 실수 Type
Type | 메모리 크기 | 유효 소수 이하 자리 |
float | 4byte(32bit) | 7자리 |
double | 8byte(68bit) | 15자리 |
* 자동 타입 변환(promotion)
- 자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입 될때 발생한다.
- 기본 타입을 허용 범위 순으로 나열하면 다음과 같다.
byte < short, char < int < long < float < double
* 강제 타입변환(Casting)
- 큰 허용 범위 타입을 작은 허용 타입으로 쪼개어서 저장하는 것을 강제 형변환이라고 한다.
* 문자열을 기본 타입으로 변환
Type | 예시 |
String -> byte | Byte.parseByte(); |
String -> short | Short.parseShort(); |
String -> int | Integer.parseInt(); |
String -> long | Long.parseLong(); |
String -> float | Float.parseFloat(); |
String -> double | Double.parseDouble(); |
String -> boolean | Boolean.parseBoolean(); |
* 기본 타입을 문자열로 변환할 경우
- String.valueOf(기본타입값);
* printf() 형식의 문자열 포맷
- printf("형식문자열", 값1, 값2,...)
- 형식 문자열에서 %는 형식 문자열의 시작을 뜻한다.
- 변환 문자의 type에 따라서 d(정수), f(실수), s(문자)가 온다.
- 형식 문자열에 값이 두개 이상일 경우에는 순번을 포함 시켜야 한다.
System.out.printf("이름 : %1$s, 나이 : %2$d", "김나나", 23);
- 값에 공백을 만들어주고 싶을 경우, %-2d(두자리 정수 오른쪽 빈자리 공백) / %2d(두자리 정수 왼쪽 빈자리 공백)으로 표현된다.
* 키보드 입력 데이터를 변수에 저장하기
- Scanner객체를 사용하여 키보드 입력 값을 받을 수 있다.
- scanner.nextLine()은 enter키가 입력되기 전까지 블로킹(대기) 상태가 되며, enter키가 입력 되면 지금까지 입력된 모든 내용을 문자열로 읽는다.
'내일배움캠프 > Today I Learned' 카테고리의 다른 글
[내배캠] 나의 스물네번째 회고록 (0) | 2022.12.08 |
---|---|
[내배캠] 나의 스물세번째 회고록 (0) | 2022.12.07 |
[내배캠] 나의 스물한번째 회고록 (0) | 2022.12.05 |
[내배캠] 나의 스무번째 회고록 (0) | 2022.12.01 |
[내배캠] 열아홉번째 회고록 (0) | 2022.11.30 |