1. 변수란? (variable)
- 값을 저장할 수 있는 공간
- 메모리에 값을 기록하기 위한 공간
- 변수명은, 각 저장공간의 구분을 위해 필요함
* 변수에 값을 기록하는 이유?
- 프로그램 실행 시 사용할 값(DATA)는 메모리에 기록되어야만 사용 가능함
2. 변수의 선언: 메모리에 데이터를 저장할 수 있는 공간을 할당하는 것
저장공간이 필요하다면 변수를 선언해야 함 (변수 선언 시, 저장공간 생성)
같은 데이터타입(자료형)의 변수는 동시 선언이 가능함
int coder;
// 변수타입
// (자료형) 변수명;
int java, html, css;
// 같은 타입(자료형) 변수는 동시선언 가능
3. 변수를 사용하는 이유
- 재사용성: 한번의 값 저장으로 필요시 재사용 가능
- 가독성: 값에 의미를 부여해줌
====> 유지보수 용이
4. 하나의 변수에는 하나의 값만 저장 가능
중복저장시 마지막 저장값을 저장
변수=저장공간을 의미하므로, 하나의 변수(저장공간)에는 하나의 값만 저장 가능함
5. 변수의 초기화
- 초기화(initialization):변수 선언 후 처음으로 해당 변수에 값을 저장하는 것
* 초기값: 초기화를 통해 변수에 넣어준 값
6. 변수의 데이터타입:
- 테이터의 타입에 따라 저장공간의 크기, 형식을 정의한 것
- 변수에 어떠한 값을 저장하느냐에 따라 달라짐
(저장값/리터럴 의 타입에 따라 변수타입 결정)
- 변수 선언 시에는 저장값의 특성을 고려하여 가장 알맞는 변수 타입을 선택하여야 함
- 변수와 리터럴의 타입은 기본적으로 일치해야함
- 그러나 변수의 저장범위가 리터럴보다 큰 경우, 타입이 일치하지 않아도 됨
7. 상수와 리터럴
1) 상수(constant): 변수와 마찬가지, 저장공간
-> 변수와 달리 한 번 저장시 값 변경 불가
-> 변수 앞 final 선언시 사용가능
-> 한 번 선언하면, 상수의 값 변경 불가
final 데이터타입 변수명; // 상수형 변수명은 대문자로 선언!
// 여러 문자의 경우 underbar 구분
final double LAST_ONE = 1.112
2) 리터럴(literal): 변수에 저장되는 값 (수학적 개념의 상수)
- 리터럴 타입과 접미사
: 리터럴에도 타입이 있으며, 변수의 타입은 리터럴의 타입에 의해 결정
종류 | 리터럴 | 접미사 | |
논리형 | false, true | 없음 | |
정수형 | 123, 0b0101, 100L | L - long 타입 ( 생략불가, ~L) 없을시 - int (default값) byte, short - 별도 접미사 없음 |
|
실수형 | 3.14, 3.0, 1.4f | f - float 타입 (생략불가, ~f) d - double 타입 (default 값, 생략가능) |
|
문자형 | 'a', '1', '\n' | 없음 | 한 개 문자 ' - ' 로 감싸기 빈 문자 비허용 ( '-' 내부 반드시 존재) |
문자열 |
"ABC", "123", "A", " ", "TRUE" | 없음 | 두 개 이상 문자 " -- " 로 감싸기 빈 문자열 허용 (empty string) |
* 자바 defalult 컴파일 값: 정수형 -> int, 실수형 ->double
3) 문자열 결합: 문자열 + 문자열
* "S"tring이 대문자인 이유가있어~
피연산자 중 한 쪽이 String일 시, 나머지 한 쪽을 String 변환 후 결합
어떤 타입도 String을 만나면 그 결과값이 문자열이 됨
문자열 + any type -> (문자열) + (문자열로 변환) -> 문자열 (결과)
8. 변수의 기본형과 참조형
1) 기본형(8개) : 실제 값(data)를 변수에 저장 (연산에 사용되는 변수는 모두 기본형)
<정수형>
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
byte | 1 byte | -128 ~ 127 |
short | 2 byte | -32,768 ~ 32,767 |
int | 4 byte | -2,147,483,648~2,147,483,647 |
long | 8 byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
* 정수형 리터럴 "," 역할 -> underbar
(예: 10000 -> 10_000)
<실수형>
float | 4byte | ±(1.40129846432481707e-45 ~ 3.40282346638528860e+38) |
double | 8byte | ±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d) |
<문자>
char | 2byte | 모든 유니코드 문자 |
String *참조형 |
크기 미정 (길이에 제한 없음) |
문자열 |
<논리형>
boolean | 1byte | true / false |
2) 참조형: 값이 저장되어 있는 메모리주소(memory address)를 저장 (참조형 변수간 연산 불가)
* 메모리 주소(객체주소): 메모리에 1byte단위로 붙어있는 일련번호
9. 오버플로우 : 연산과정에서 해당 타입이 표현가능한 최대 범위를 넘어서는 것
- 오버플로우가 되어도 에러는 발생하지 않지만, 예상 값을 얻을수 없음
1) 정수형의 오버플로우
최대값 + 1(오버플로우) => 최소값
최소값 - 1 (오버플로우) = 최대값
10. 결과값 타입 간 변환방법
1) 숫자->문자로 : 숫자 + '0'
2) 문자->숫자로: 문자-'0'
3) 숫자=>문자열로: 3 + " "
4) 문자열=>숫자로: Integer.parseInt() or Double.parseDouble()
5) 문자열=>문자로: charAt(3)
6) 문자=>문자열로: +" "
'Java' 카테고리의 다른 글
[JAVA / 자바] API - Math클래스 (0) | 2023.02.20 |
---|---|
Properties 객체 (0) | 2022.11.10 |
[JAVA / 자바] 조건문과 반복문 (1) | 2022.10.15 |
[JAVA / 자바] 연산자 (0) | 2022.10.15 |
[JAVA / 자바] 형변환 (0) | 2022.10.15 |