[JAVA] 변수(variable)

아임 레조·2022년 6월 21일
0

JAVA

목록 보기
5/21

변수와 데이터 타입

  • 변수 지정 시 데이터 타입을 먼저 선언
    (자바스크립트의 경우 데이터타입을 먼저 선언해주지 않고 let, const 등을 이용해 변수 선언을 했기 때문에 처음에 좀 헷갈렸다)
  • 수학에서 변수는 '수식에 따라 변하는 값'으로 숫자만 사용할 수 있는데 자바에서의 변수는 '데이터 저장과 참조를 위해 할당된 메모리 공간'으로 어떠한 value값을 저장하고 이를 나중에 사용하기 위해 이름을 부여하는 것과 비슷한 의미이다. 또한 정수, 실수, 문자열을 구분하며 문자(열)을 담을 수 있다.

  • 데이터 타입을 지정하는 이유:
    변수의 데이터 타입을 바로 판단할 수 있고 저장공간을 효율적으로 사용하기 위함이다.
    기가 막힌 비유로, 빈 물컵에 보라색 액체가 있을 때 물컵의 액체가 무엇인지를 알아보기 위해서는 향도 맡아보고 맛도 보는 여러 과정을 거쳐야하지만 라벨이 붙어있는 포도주스 병에 담긴 보라색 액체는 보기만 해도 바로 포도주스라는 것을 알아차릴 수 있다.

숫자(정수, 실수)와 문자열 변수 지정하기

  • 정수 데이터: Integer(int)
  • 실수 데이터: double
  • 문자열 데이터: String

숫자 데이터의 세부적인 분류

  • byte: 8-bit, 최소값 -128, 최대값 127 (0의 존재 때문에 -1이 됨), 큰 배열(array)에 사용한다면 메모리 절약에 유용

  • short: 16-bit, 최소값 -32,768, 최대값 32,767

  • int : 32-bit, 최소값 -(2^31), 최대값 (2^31)-1, -1을 해주는 이유는 '0'의 존재 때문

  • long: 64-bit, 최소값 -(2^63), 최대값 (2^63)-1, int의 범위를 넘어서는 큰 숫자들을 다룰 때 long을 쓴다.

  • float: 32-bit, 정수(int)에서 큰 배열에서 사용할 때, byte와 short를 쓰면 메모리 효율이 좋아지는 것처럼 실수에서는 아래의 double 대신에 float를 쓰면 메모리를 아낄 수 있음. 정교한 실수 값을 다룰 때는 float 타입을 추천하지 않는다. 대신에 java.math에 있는 'BigDecimal' class를 추천함.

  • double: 64-bit, 실수를 사용할 때 일반적으로 자주 사용하는 타입, float와 마찬가지로 정교한 실수 계산에서 사용하는건 절대(never) 사용하지 않는다.

추가자료
Primitive Data Types
Variables

변수의 효용

1. 변수의 재사용

  • 수백 번 이상 사용되는 데이터의 경우 변수로 만들어두면 편리하게 사용 가능
  • name이라는 변수를 지정하면, 자주 사용하는 데이터를 여러 번 재사용할 수 있고
  • name을 수정할 경우 변수의 값만 수정하면 하나하나 수정해주지 않아도 되기 때문에 효율적으로 처리 가능
    ex) 이름 부분만 바뀌는 뉴스레터

2. 코드의 가독성

  • 변수의 이름을 잘 지으면 코드 의미 파악에 도움
  • VAT(부가가치세)라는 이름을 붙이게 되면 단순히 실수 10.0이 아닌 '부가가치세'의 의미를 가지게 됨
  • 위의 name 변수도 마찬가지로 단순한 문자열 "Lezzo"가 아닌 '이름'이란 의미를 가진다는 것을 파악할 수 있게 됨
  • 미래의 나 혹은 프로젝트 동료에게도 코드가 쉽게 읽힐 수 있게 되는 장점

데이터 타입의 변환(Casting)

캐스팅(Casting)이란
자바에서는 변수의 데이터타입을 굉장히 엄격하게 통제하기 때문에 자바를 사용하다보면 어떠한 변수에 들어갈 값 또는 변수에 들어있는 값을 다른 데이터 타입으로 컨버팅(converting)해야하는 경우가 생긴다. 이때 사용하는 키워드가 '캐스팅(casting)'이다.

1. 정수를 실수로(Widening Casting, automatically)

  • 정수 1은 int형이라 실수형(double)로 바꾸어도 손실이 생기지 않기 때문에 자동으로 casting된 결과가 console에 나온다.
  • 정수를 실수로 바꾼 것이기 때문에 결과는 1이 아닌 1.0으로 나온다.
  • 자동 casting된 것이지만 실제로는 'double b2 = (double) 1;'의 과정을 거친 것이다.

2. 실수를 정수로(Narrowing Casting, manually)

  • 실수(double)은 정수(integer)로 바꾸게되면 소수점만큼 손실이 생긴다. 실수 1.1을 정수 integer 1로 바꾸게되면 0.1만큼을 잃게 되기 때문에 'int g = 1.1'을 하게 되면 에러가 발생한다.
  • 그래서 자동 casting이 아닌 수동 casting을 해주어야 한다.
  • 에러를 없앨 수 있는 2가지 방법은 int를 double로 바꾸어서 데이터 타입을 맞춰주거나, casting을 해주는 방법이 있다.

3. 숫자를 문자열로

'toString()'을 이용하며 숫자가 문자로 잘 바뀌었는지 확인하기 위해서 '.getClass()'를 쓴다.

추가자료
Java Type Casting

profile
어쩌다보니 백엔드 개발자/ 번아웃 없이 재밌게 개발하고 싶어요

0개의 댓글