java 변수

김소희·2023년 2월 18일
1

변수란

데이터를 저정할 수 있는 메모리 공간을 확보하고
그 메모리 공간에 사람이 식별할 수 있는 이름을 붙인 것이다.
이름처럼 여러 가지 값으로 변할 수 있다.

변수를 선언할 땐
데이터 타입을 지정해 주어야 하고 (얼만큼의 메모리 공간을 확보해야할 지 알려주기 위해)
특징을 고려한 이름을(어떤 정보를 담았는지 알아보기 쉽게) 지어주면 된다.
이름은 카멜케이스 언어를 사용하고, 숫자로 시작하지 못하고, 예약어는 쓸 수 없다.

할당은 할당연산자(=)를 사용하면 된다.

String name = "Sohee";

상수는

값이 변하지 않고 항상 동일해야 할 데이터를 저장할 때 쓴다.
앞에 final 을 붙이면 된다.

final double vatRate = 0.1;

데이터 타입

타입은 실제로 값을 할당받는 기본 타입
객체의 메모리의 주소값을 저장하는 참조 타입으로 나뉜다.

기본 데이터 타입은 선언된 변수에 실제 값을 할당한다.

데이터자료형크기표현가능범위
기본형void--
문자형char2 byte모든 유니코드 문자
정수형byte1 byte-128 ~ 127
short2 byte-32768~32767
int4 byte-2147483648~2147483647
long8 byte-9223372036854775808~923372036854775807
실수형float4 byte-3.4 x 10^-37 ~ 3.4 x 10^38
double8 byte-1.7910^308 ~ 1.7910^308
논리형boolean1 bytetrue, false

표에는 없지만 문자열을 담당하는 String 도 있다.
String은 String 클래스를 이용해서 사용 되는데 String 타입의 변수를 참조하면 toString()메소드가 자동으로 호출되어 변수가 저장하고 있는 주소값에 위치한 인스턴스 내용을 String으로 변환시켜 준다.

실수형의 경우 소수 부분이 정확하게 떨어지지 않을 경우 유효 숫자 뒷부분이 잘리게 되어 오차가 발생한다.(입실론 오차) 그래서 이론상 저장 가능한 범위보다 실제로 사용한 값의 범위가 적을 수 있다.

float 타입의 변수에 할당할 때에는 리터럴 뒤에 f를 붙이고,
long 타입의 변수에 할당할 때에는 리터럴 뒤에 L을 붙여 주어야 한다.

float weight = 58.6f;
final long stillion = 10482959603L;

계산중에 표현 가능한 범위를 넘어서면
언더플로우나 오버플로우가 발생해 최소값이나 최대값으로 값이 순환되고, 그렇다고 너무 큰 범위를 사용하는 것은 데이터 낭비가 될 것이다.

서로 다른 데이터타입들을 사용하다보면 타입을 변환하여 통일해야 하는 경우가 많다.
바이트 크기가 작은 것에서 큰 것으로 변환하거나,
덜 정밀한 타입에서 더 정밀한 타입으로 변환될때는 자동으로 변환되지만
큰 타입에서 작은 타입으로 변환할때는 캐스팅연산자'()'로 손수 변환 해주어야 한다.

int big = 200;
byte small = (byte)big;
System.out.println(small);
// 결과값 -56

int to String 처럼 다른 데이터타입으로 변환이 가능한 경수도 있다.

자주 쓰는 String도 기본 변수인 줄 알았는데 String은 특이한 케이스 라는 것을 새롭게 알게 되었다. 실무에서는 String메소드를 사용하는 일이 많다고 하니 추가로 더 공부해야겠다.

profile
백엔드 개발자 소희의 모험

0개의 댓글