서노썬
sun noes sun
서노썬
전체 방문자
오늘
어제
  • 카테고리 (142)
    • Java (89)
      • Day1 (20)
      • Day2 (16)
      • Day3 (4)
      • Day4 (5)
      • Day5 (2)
      • Day6 (2)
      • Day7 (4)
      • Day8 (6)
      • Day9 (3)
      • Day10 (0)
      • Day11 (0)
      • Day12 (0)
      • Day13 (3)
      • Day14 (0)
      • Day15 (0)
      • Day16 (0)
      • Day19 (0)
      • Day20 (0)
      • Day21 (2)
      • Day22 (4)
      • Day23 (2)
      • Day24 (5)
      • Day25 (4)
      • Day27 (2)
      • Day28 (3)
      • Day29 (1)
      • Day30 (1)
      • Day31 (0)
      • Day32 (0)
      • Dat33 (0)
      • Day34 (0)
      • Day35 (0)
      • Day36 (0)
    • HTML (37)
      • Day36 (20)
      • Day37 (3)
      • Day38 (2)
      • Day39 (8)
      • Day40 (3)
    • SQL (4)
      • Day40 (4)
      • Day41 (0)
      • Day42 (0)
      • Day43 (0)
      • Day44 (0)
      • Day45 (0)
    • JSP (0)
      • Day46 (0)
      • Day75 (0)
    • PYTHON (0)
      • Day75 (0)
      • Day76 (0)
    • Photo (12)

블로그 메뉴

  • 홈
  • 방명록

인기 글

최근 글

태그

  • 자바연산자
  • java데이터타입
  • 자바
  • 자바continue
  • java자료형
  • 논리연산자
  • 자바자료형
  • java메뉴입력
  • 자바break
  • Java

티스토리

hELLO · Designed By 정상우.
서노썬

sun noes sun

Java/Day4

[Java] 데이터 타입. 자료형에 따른 연산

2021. 11. 4. 11:05

1.  데이터 타입. 자료형에 따른 연산

 

(1)

 

1
2
3
4
5
6
7
8
9
10
11
12
class DataTypeTest
{
    public static void main(String[] args)
    {
        short num1 = 10;
        short num2 = 20;
        short result = num1 + num2;
 
        // ↑ short result = (short)(num1+num2) 아니면
        // ↑ int result = num1+num2 라고 해준다.
    }
}
Colored by Color Scripter
cs

 

- short는 2바이트

- 큰 자료형에서 작은 자료형으로 자동 형변환이 일어나지는 않는다. 그렇기 때문에 int보다 자료형이 작은 short형으로 자동 형변환이 일어나지 않기 때문에 (short)(num1+num2)를 해주거나 short result가 아닌 int result 로 줘야 한다. (그니까 그냥 처음부터 정수 자료형을 short가 아닌 int로 주는 것이 낫다.)

 

 

(2)

 

1
2
3
4
5
6
7
8
9
10
class DataTypeTest
{
    public static void main(String[] args)
    {
        int num1 = 3;
        short num2 = 5;
        int result = num1 + num2;
        result = num1 + (int)num2;
    }
}
Colored by Color Scripter
cs

 

- int num1은    0 ~~~~~~~~~~~~ 0 0 0 0 0 1 1 1 
 short num2는               0 ~~~~~ 0 0 0 0 0 1 0 1

자료형을 맞춰주어야 연산이 가능하다.

 

이 때에 자료형의 손실 즉, 데이터의 손실 가능성이 있기 때문에 자료형이 큰 것을 작은 것으로 바꾸기 보다는 자료형이 작은 것을 큰 것으로 바꿔주는 것이 좋다.

- 큰 자료형에서 작은 자료형으로는 자동 형변환이 일어나기 때문에 int result = num1 + num2;에서 short num2는 자동으로 자료형이 int가 되었지만 작은 자료형에서 큰 자료형으로 자동 형변환이 일어나지 않기 때문에 result = num1 + (int)num2; 에서 num2의 자료형을 강제로 int로 준 것이다.

 

 

2. 자료형의 크기 비교

byte > short > int > long > float > double
          char

- boolean은 자동 형변환 일어나지 않는다.

 

- long은 8바이트 float은 4바이트지만 실수의 범위 안에 정수가 있기 때문에 float 안에 long이 포함되어 float의 자료형의 크기가 더 크다.

 

1
2
3
4
5
6
7
8
9
10
class DataTypeTest
{
    public satic void main(String[] args)
    {
        int num = (int)4.5;
        long num2 = 10000000000L;
 
        float num3 = 4.5F;
    }
}
Colored by Color Scripter
cs

 

- int num = (int)4.5;
4.5는 실수형 상수이기 때문에 정수형 자료형인 int를 바로 사용할 수 없다. 그렇기 때문에 int num = 4.5; 가 아닌 int num = (int)4.5; 으로 준다.


- long num2 = 10000000000L;
기본적으로 정수형 상수는 int로 처리하기 때문에 long num2라고 자료형을 long으로 주었다고 해도 int에 10000000000 을 저장한 다음 long으로 형변환을 해주어야 하는데 int의 범위를 넘어가는 값이기 때문에 그냥 10000000000 으로 적으면 에러가 난다.

그렇기 때문에 10000000000가 아닌 10000000000L로 적어준다. (소문자보다 대문자가 가독성이 좋아서 대문자를 쓴다고 함)

- float num3 = 4.5;
기본적으로 실수형 상수는 double로 처리하기 때문에 double보다 더 작은 자료형인 float은 에러가 발생한다. 그렇기 때문에 float num3 = 4.5; 가 아닌 float num3 = 4.5F; 로 준다.

- 정수형 상수는 int로 처리
- 실수형 상수는 double로 처리

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

[Java] 사용자 정의 메소드 & 예문  (0) 2021.11.04
[Java] 삼항 연산자 & short circuit evaluation  (0) 2021.11.04
[Java] 비트 연산자  (0) 2021.11.04
[Java] switch case 구문  (0) 2021.11.03
    'Java/Day4' 카테고리의 다른 글
    • [Java] 사용자 정의 메소드 & 예문
    • [Java] 삼항 연산자 & short circuit evaluation
    • [Java] 비트 연산자
    • [Java] switch case 구문

    티스토리툴바