경주란 빨리 달리는 사람들의 것이 아니라
       계속 뛰어가는 사람들의 것이다.
LinkTree🌲

Development/Java

[Java, 개념] 자료형

컴공희 2022. 7. 20. 01:36

자바에서 기본 자료형은 다양하다 

  • 부울대수 boolean
  • 정수 byte , short, int , long
  • 실수 float, double 
  • 문자 char 

등이 있다. 


우리가 자료형을 통해서 변수를 선언할 때  = 을 기준으로 왼쪽 오른쪽 값에 자료형이 일치해야하는 것이 기본인데,

자바에서는 자동 형변환을 통해서 양쪽을 서로 같도록 맞춰준다. 하지만 여기서 예외가 있으므로 이를 숙지하고 조심해야한다. 

 

1. Byte 선언, 범위를 넘는 숫자를 할당할 때 

이는 숫자의 값이 자동으로 Int로 된다. 따라서 Byte != int 가 되므로 오류가 발생한다. 

 

2. float 선언, 실수를 할당할 때

이도 비슷하게 실수는 Double 형식으로 자동 형변환 된다. 따라서 값 뒤에 F를 붙혀 Float를 맞춰주던, Double를 선언하여 오류를 해결할 수 있다. 

 

그 외로 값 앞에 (자료형)을 붙혀서 강제(수동으)로 형변환을 하여 오류를 방지할 수도 있다. 

 


자료형 간의 연산 

 

기본적으로 같은 자료형끼리 연산을 진행하면 해당 자료형의 결과값이 출력된다. 

하지만 예외가 있다. 

  • Byte + Byte = Int 
  • Short + Short = Int 

그렇다면 다른 연산자끼리 연산을 진행하면 어떻게 될까? 

이들은 자동으로 큰 쪽으로 담게 된다. 데이터의 손실을 막기 위해서이다. 

이를 업캐스팅이라고 하는데 업캐스팅의 개념은 밑에서 서술하겠다.


 

업캐스팅 VS 다운캐스팅

여기서 형 변환을 할때 작은 자료형을 큰 자료형에 담으면 개발자가 타입 변환 코드를 넣지 않더라도 컴파일러가 자동으로 타입 변환을 실행하는데, 이를 '업캐스팅'이라고 한다. 

쉽게 말하면 엄청 큰 통에 반찬을 조금 담으면 비효율적이기 때문에 자동으로 통을 적당하게 맞춰주는 것이다.

 

이 반대는 '다운 캐스팅'이라고 하는데 이는 데이터 손실이 발생할 수 있기 때문에 자동으로 진행되진 않는다. 개발자가 명시적으로 타입 변환을 수행해야하는데 자료형의 크기에 맞게 원하는 값을 얻을 수 있도록 잘 파악해야한다. 

 

위 예시 처럼 분명 1.3의 결과를 담아서 출력을 했는데 1이 출력되었다. 통이 작아서 반찬이 넘쳐흘러 버려진 것이다. 

이를 다운캐스팅이라고 한다. 이 결과들은 컴파일로 오류가 출력되지 않기 때문에 개발자는 원하는 결과를 얻을 수 있도록 파악하고 조심해야한다. 

 

 

 

'Development > Java' 카테고리의 다른 글

[Java, 개념] 제어문 Switch문과 Break  (0) 2022.07.20
[Java, 개념] 연산자  (0) 2022.07.20
[Java, 개념] 변수  (0) 2022.07.20
[Java, 개념] 문자열 + 연산  (0) 2022.07.19
[Java, 개념 ] 자바 기본 구조  (1) 2022.07.16