Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

블로그 이름 뭐하지

[JAVA] 변수 본문

JAVA

[JAVA] 변수

가는말이고우면오는말은come 2024. 9. 19. 17:34

Java에서 저장하는 대부분의 값은 변하는 값, 즉 변수이다.

숫자 뿐 아니라 하나의 값을 저장하는 저장공간을 의미하는 것으로 문자나 문자열도 변수로 저장한다.

 

변수를 선언할 때는 값의 타입과 이름을 명시한다.

 

int number; // int는 타입, number는 변수이름 >> 정수타입의 number변수
String str; // String은 타입, str은 변수이름 >> 문자열타입의 str변수

 

이러한 변수에 값을 저장하는 방법은 두가지로,

선언과 동시에 저장하거나, 선언 후 저장하는 방법이 있다.

 

int number = 10; // 선언과 동시에 저장(초기화)
number = 20; // 선언 이후에 저장(덮어쓰기)

 

+) 변하지 않는 값, 상수

변수와 달리 변하지 않을 값을 저장할 때는 상수라고 표현한다.

변수 앞에 final을 붙이면 바꿀 수 없는 값이 된다.

final int number = 10;
number = 20; // 에러 발생 >> 상수이므로 값을 바꿀 수 없음

 

변수의 종류와 범위

 

1. 기본형 변수

 

▷ 비객체 타입이므로 null값을 가질 수 없다(기본값 지정)

▷ 변수의 선언과 동시에 메모리가 생성된다

▷ 모든 값은 스택(Stack) 메모리에 저장된다

▷ 메모리에 실제 자료 값을 가진다.

 

논리형 변수

boolean >> True / False의 두가지 값만 저장한다.

 

문자형 변수

char >> 문자 하나('A', '1')만 저장한다. char은 ' '(작은따옴표)를 사용해 묶는다

 

정수형 변수

0, 1, 33 등의 정수형 숫자값을 저장한다.

각 변수의 범위를 넘는 숫자를 넣게되면 오버플로우가 발생하여 입력값과 다른 값으로 표현된다.

 

byte >> 1byte의 수(-128~127)를 저장한다

short >> 2byte의 수(-32,768~32767)를 저장한다

int >> 4byte(약 -21억~21억)의 수를 저장한다

long >> 8byte(약 9백 경)의 수를 저장한다

 

byte byteNum = 127;
short shortNum = 32767;
int intNum = 214748367;
long longNum = 214748367L;
//long의 경우 숫자 뒤에 알파벳 L(접미사)을 붙여 표기한다.
//int와 Long의 데이터 값을 구분하기 위한 구분자이다.

 

실수형 변수

0.123, 0.99 같은 소수점 실수값을 저장한다.

각 변수의 범위를 넘는 숫자를 넣게되면 오버플로우가 발생하여 입력값과 다른 값으로 표현된다.

실수는 부동소수점 방식(기수와 지수를 구분하고 이 값을 곱한 값을 저장)으로 수를 저장하므로,

4byte의 float가 8byte의 long보다 넓은 범위를 표현할 수 있다.

 

float >> 4byte의 수(3.4 * -10^38 ~ 3.4 * 10^38)를 저장한다.

double >> 8byte의 수(1.7 * -10^308 ~ 1.7 * 10^308)를 저장한다.

 

float floatNum = 0.123f;
double doubleNum = 0.123123123;
//float도 long처럼 접미사 f를 붙여 double과 구분함

 

 

2. 참조형 변수

 

기본형을 제외한 모든 변수(래퍼 클래스 변수 포함)

▷ 스택(Stack)메모리에는 주소를, 힙(Heap)메모리에는 실제 값을 저장해, 주소를 참조하여 값을 가져온다.

null로 초기화 가능

 

String >> 문자열("Apple", "텍스트")저장 , " "(큰따옴표)를 사용해 값을 묶는다.

배열(Array, List...)

열거(Enum)

클래스(Class)

인터페이스(Interface) 등이 있다.

 

3. 래퍼 클래스 변수

 

▷ 기본형 변수를 클래스로 한번 랩핑하는 변수

▷ 기본형 변수에서 첫글자를 대문자로 바꾼다(ex. int > Integer, char > String)

▷ 래퍼클래스를 사용하면 객체지향의 많은 기능을 사용할 수 있게 된다.

 

기본타입 > 래퍼클래스: 박싱(Boxing)

래퍼클래스 > 기본타입: 언박싱(UnBoxing)

Integer num = new Integer(17); // 박싱 >> int형 숫자를 래퍼클래스 객체로 전환
int n = num.intValue(); // 언박싱 >> Interger 객체를 int형 숫자로 되돌림

 

형변환

자동형변환

작은 타입 > 큰 타입으로 형변환시 자동 형변환됨

값의 손실이 없음

 

강제형변환(캐스팅)

큰 타입 > 작은 타입으로 형변환시, 또는 문자 >< 숫자 형변환시, 개발자가 직접 형변환을 시킴

값의 손실이 생길 수 있음

 

1. 정수 실수 간의 형변환

 

괄호 안에 변경할 타입을 넣어 변환

int intNum;
double doubleNum;
float floatNum;

intNum = (int)doubleNum; // double > int
intNum = (int)floatNum; // float > int

double Num = (double)intNum; //int > double

 

2. 숫자 문자 간의 형변환

 

1. ~.parse~(a)

Integer.parseInt(a) 같이 사용한다.

static메서드이므로 객체를 생성하지 않고, 매개변수를 넣어주면 메서드를 수행할 수 있다.

내용물 > 내용물 형변환

반환되는 값은 기본 자료형.

 

2. ~.ValueOf(a) 

Integer.valueOf(a) 같이 사용한다.

정수형으로 변환후 Integer객체로 만들어 변환, 즉 래퍼클래스 객체를 반환

 

3.  ~.~Value()

a.intValue() 같이 사용한다.

static이 아니므로 객체에서 기본형의 값을 뽑아낸다.

객체에 있는 값을 정수로 변환한다

래퍼클래스 객체에 있는 값을 언박싱하여 기본 자료형으로 반환

객체 > 내용물 형변환

 

 

 

 

'JAVA' 카테고리의 다른 글

[JAVA] 객체 지향 프로그래밍의 이해  (1) 2024.09.20
[JAVA] 컬렉션  (0) 2024.09.20
[JAVA] 배열  (0) 2024.09.20
[JAVA] 조건문, 반복문  (0) 2024.09.20
[JAVA] 연산자  (2) 2024.09.19