Frog is cry
비트반전 연산자, 이항 연산자(Day05) 본문
package day06;
public class Day06_01 {
// 비트반전 연산자~ : 연산의 결과로 산출되는 산출 타입은 int타입이 된다.
public static void main(String[] args) {
byte v1 = 10; // 바이트 타입의 v1 변수에 10을 할당
// byte v2 = v1; // v1을 v2에 할당
// byte v2 = ~v1;
int v2 = ~v1; // v1을 비트 반전하여 v2에 할당함. v1을 비트 반전하는 순간 정수화됨
// 그래서 바이트 타입의 v2에 할당하는 것이 에러가됨.
/*
* int num = 10;
* int num2 = -num;
*
*/
byte v3 = 10;
int v4 = ~v3 + 1; // -10이 v2에 저장됨
// 이 개념은 1의 보수와 2의 보수를 구하는 개념을
// 자바 코드로 응용한 것으로 이해.
System.out.println("v3 : " + ~v3);
System.out.println("v4 : " + v4);
}
}
package day06;
/*
이항 연산자 : 피연산자가 두개인 식에 연산자 이외의 항목이 두 개인 식에서 사용하는 연산자를
이항연산자라고 합니다.
*/
public class Day06_02 {
public static void main(String[] args) {
byte byte1 = 1;
byte byte2 = 1;
// byte byte3 = byte1 + byte2; // byte타입의 변수끼리 연산할 때는 정수형으로 변환되어 연산함
// long 타입을 제외한 정수의 산술 연산은 무조건 int타입으로 변환 후 연산을 수행함
int result1 = byte1 + byte2; // 이와같이 수정해야함
// 다음 코드에서 최종적으로 변수에 저장되는 값이 무엇인지 생각하세요.
int int1 = 10;
int int2 = 4;
int result2 = int1 / int2; // result2에는 무슨값? -> 2
// int1과 int2를 나눗셈하면 2.5가 나오지만 연산 결과는 소수점 이하 부분을 버리고 2만 산출된다.
// result2에는 2가 저장된다.
// double result3 = int1 / int2; // result3에는 무슨값? -> 2.0
/*
* 연산 후의 결과가 2이므로 2를 실수화해서 2.0이 저장된다
* 만약 2.5를 산출결과로 얻고싶다면 피연산자중 최소한 하나는 실수타입이어야한다.
* 따라서 다음과 같이 1.0을 곱하여 실수 타입으로 만든 후 산술 연산을 하거나
* int 1과 int2중 하나를 double 타입으로 강제 타입 변환 (캐스팅) 한 후 산술 연산을 하면 된다.
*/
// double result3 = (int1 * 1.0) / int2; // 1.0을 곱하여 실수 타입으로 만든 후 산술 연산
// double result3 = (double) int1 / int2; // double 타입으로 강제 타입변환(캐스팅)한 후 산술 연산
double result3 = int1 / (double) int2; // double 타입으로 강제 타입변환(캐스팅)한 후 산술 연산
System.out.println(result2);
System.out.println(result3);
}
}
'JAVA > 국비수업' 카테고리의 다른 글
변수의 오버플로우(Day06) (0) | 2020.07.14 |
---|---|
타입별 연산(Day06) (0) | 2020.07.14 |
산술 연산자, 단항 연산자, 논리 부정 연산자(Day04) (0) | 2020.07.14 |
전위형, 후위형(Day04) (0) | 2020.07.14 |
실습문제(Day03) (0) | 2020.07.14 |
Comments