< ch2_1~11 >
ctrl+shift+L 단축키 전체 목록 보기
ctrl+ +,- 폰트 크기 증가/감소
ctrl+D 한줄 삭제
ctrl+alt+shift+down 행단위 복사
alt+shift+A 멀티컬럼 편집
alt+up/down 행단위 이동
ctrl+i 자동 들여쓰기
ctrl+space 자동 완성 (sysout...)
ctrl+/주석
변수 (Variable) : 하나의 값을 저장할 수 있는 메모리 공간 (변경 O)
변수의 선언 이유 : 값을 저장할 공간을 마련하기 위해
- 클래스 변수
- 인스턴스 변수
- 지역 변수 - 읽기 전에 꼭! 초기화 해야 함
< 값의 타입 >
1. 기본형 (Primitive type) - 실제 값을 저장
문자 = char : 변수당 하나의 문자 (여러문자-String)
숫자 (정수) = int(디폴트), long, byte(이진 데이터, -128~127), short
숫자 (실수) = float, double(디폴트)
논리형 = boolean : true/false 둘중 하나의 값
종류 \ 크기 | 1 byte (8bit) | 2 byte | 4 byte | 8 byte |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
* 1 bit = 2진수 1자리
* 1 byte = 8 bit
S (부호) 1bit | M (가수) |
n 비트로 표현할 수 있는 값의 개수 : 2^n
n 비트로 표현할 수 있는 부호없는 정수(양수 1부터 2^n) 의 범위 : 0 ~ (2^n)-1
n 비트로 표현할 수 있는 부호있는 정수(양수, 음수) 의 범위 : -2^(n-1) ~ (2^(n-1))-1
S (부호) 1bit | E 지수 (8) | M 가수 (23) |
- float : 1+8+23 = 32bit = 4byte (정밀도 7자리)
- double : 1+11+52 = 64bit = 8byte (정밀도 15자리)
Ex)
> Byte의 경우 : -2^7 ~ (2^7)-1 : -128~127
0 (양수) |
0 ~ 127 (128개)
1 (음수) |
-1 ~ -128 (128개)
> short의 경우 : -2^15 ~ (2^15)-1 → 부호있는 범위
> char의 경우 :0 ~ (2^16)-1 → 부호없는 범위
2. 참조형 (Reference type) - 객체의 주소를 저장 (4byte or 8byte)
기본형 8가지를 제외한 나머지 (String, System 등)
Date today; // 참조형 변수 today 선언
today = new Date(); // today에 객체의 주소 저장
상수 (Constant) : 값을 한번만 저장 가능한 변수 (변경 X)
" final " 붙이면 상수 처리되어 값 변경 불가능
리터럴 (Literal) : 그 자체로 값을 의미하는 것
종류 | 리터럴 | 접미사 |
논리형 | false, true | 없음 |
정수형 | 123, ob0101(2진 접두사), 100L | L |
실수형 | 3.14, 1.4f, 0x1.0p-1 | f, d |
문자형 | 'A', '1', '\n (줄바꿈)' | 없음 |
문자열 | "ABC", "123", "A", "true" | 없음 |
EX)
boolean power = true;
char ch = 'A';
String str = "ABC";
byte b = 127;
byte b = 128; // 에러 (byte는 -128~127)
int i = 100; // 10진수
int oct = 0100; // 8진수
int hex = 0x100; // 16진수
long I = 10_000_000_000L; // (100억) int 최대가 약 20억이기 때문에 long 타입 값으로 작성
long I = 100(L 생략 가능); // long 타입 값 or int 타입 값 둘다 가능
float f = 3.14f; // f 생략하면 double 타입 값이 됨. 근데 float 타입 변수에 double 타입 값을 못 넣음
double d = 3.14(d 생략 가능);
실수형 리터럴
10. → 10.0
.10 → 0.10
10f → 10.0f
1e3 → 1000.0 ( e = 10의 n승)
< 변수와 리터럴 타입 불일치 >
1. 범위가 변수 > 리터럴 인 경우 OK
int i = 'A'; // int > char
long I = 123; // long > int
double d = 3.14f; // double > float
2. 범위가 변수 < 리터럴 인 경우 ERROR
int i = 30_0000_0000; // int의 범위(+-20억) 벗어남
long I = 3.14f; // long < float
float f = 3.14; // float < double
3. byte, short 변수에 int 리터럴 저장 가능
byte b = 100; // byte 범위(-128~127)에 속함
byte b = 128; // byte 범위를 벗어남
문자와 문자열
String s = ""; // 빈 문자열
String s = ''; // 에러
String s1 = "A" + "B"; // "AB"
숫자를 문자열로 변환하는 방법 (왼쪽에서 오른쪽으로 결합)
문자열 + any type → 문자열
any type + 문자열 → 문자열
"" + 7 → "" + "7" → "7"
"" + 7 + 7 → "7" + 7 → "7" + "7" → "77"
7 + 7 + "" → 14 + "" → "14"
'JAVA > 자바의 정석' 카테고리의 다른 글
[자바의 정석 - 기초편] 3. (1) 연산자 (종류 / 우선 순위 / 결합 규칙 / 형변환 / 산술 변환) (0) | 2023.11.24 |
---|---|
[자바의 정석 - 기초편] 2. (4) 타입간 변환 방법 (문자 / 숫자 / 문자열) (0) | 2023.11.24 |
[자바의 정석 - 기초편] 2. (3) 화면 입력 Scanner (0) | 2023.11.24 |
[자바의 정석 - 기초편] 2. (2) 형식화된 출력 printf() (0) | 2023.11.24 |
[자바의 정석 - 기초편] 1. 설치 / 메모장, 이클립스 프로그램 실행 (0) | 2023.11.23 |