프로그래밍 이야기/JAVA 공부

자바 정수연산 실수연산 자동타입변환

글쓰는 개발자 김뉴네 2023. 9. 18. 06:44
728x90
반응형

- 정수 타입 변수가 산술 연산식에서 피 연산자로 사용되면 int 타입보다 작은 byte , short 타입의 변수는 int 타압으로 자동 타입 변환되어 연산을 수행한다.

- 타입변환이 줄면 프로그램의 성능은 향상된다.

- 자바는 실행 성능을 향상시키기 위해 컴파일 단계에서 연산을 수행할 수 있다.

 

package exam06;

 

public class exam07 {

 

public static void main(String[] args) {

// TODO Auto-generated method stu

 

byte result1 = 10 + 20;

System.out.println(result1);

 

byte x = 10;

byte y = 20;

 

int result = x+ y;

 

System.out.println(result);

 

}

 

}


- 정수 연산식에서 모든 변수가 int 타입으로 변환되는것은 아니며 두 피연산자 중 허용 범위가 큰 타입으로 변환되어 연산을 수행한다.

package exam06;

 

public class exam08 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

byte value1 = 10;

int value2 = 100;

long value3 = 1000L;

long result = value1 + value2 + value3;

 

System.out.println(result);

 

}

 

}


- 실수타입 변수가 산술 연산식에서 피 연산자로 사용될 경우 두 피연산자가 동일한 타입이라면 해당 타입으로 연산되지만 피 연산자중 하나가 double 타입이라면 다른 피 연산자도 double 타입으로 자동 타입 변환되어 연산을 수행한다. int 타입도 마찬가지의 과정을 거치며 꼭 int 타입으로 연산을 해야한다면 double 타입을 int 타입으로 강제 변환후에 연산을 수행하면 된다.

 

- 자바에서는 소문자 f 또는 대문자 F가 없는 실수 리터럴을  double 타입으로 해석하며 그렇기 때문에 연산 결과는 double  타입 변수에 저장해야한다 float 타입에 꼭 저장하고 싶다면 실수 리터럴 뒤에 소문자  f나 대문자  f를 붙여 컴파일러가  float 타입임을 알도록 해야한다.

 

package exam06;

 

public class exam09 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

byte byteValue1 = 10;

byte byteValue2 = 20;

 

int intValue1 = byteValue1 + byteValue2;

System.out.println(intValue1);

 

char charValue1 = 'A';

char charValue2 = 1;

 

int intValue2 = charValue1 + charValue2 ;

System.out.println("유니코드="+intValue2);

System.out.println("출력문자="+(char)intValue2);

 

 

int intValue3 = 10;

int intValue4 = intValue3/4;

System.out.println(intValue4);

 

int intValue5 = 10;

double doubleValue = intValue5 / 4.0;

System.out.println(doubleValue);

 

int x = 1;

int y = 2;

double result = (double) x/y;

System.out.println(result);

 

}

 

}

728x90
반응형