본문 바로가기

Java

[JAVA / 자바] 변수

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