[Java의 정석] Chapter3 연산자 - 1

WOOK JONG KIM·2022년 9월 15일

자바의 정석

목록 보기
2/25
post-thumbnail

자동 형변환

float f = 1234; 일 때 리터럴 앞에 (float)가 생략되어 있다

byte b = 1000; 일 때 byte타입(-128~127)의 범위를 벗어난 값 대입

그러나 프로그래머가 실수가 아닌 의도적으로 간주할 시 오류 X

byte b = (byte)1000;

산술 변환

  • 두 피연산자의 타입을 같게 일치시킴(보다 큰 타입으로)

long + int -> long + long -> long

float + int -> float + float -> float

double + float -> double + double -> double

  • 피연산자의 타입이 int보다 작은 타입이면 int로 변환

byte + short -> int + int -> int

char + short -> int + int -> int

public static void main(String[] args){
	byte a = 10;
    byte b = 30;
    byte c = (byte)(a*b);
    System.out.println(c);
}

44가 화면의 출력 
10*300 = 300 이지만 큰 자료형(int) -> 작은 자료형(byte) 변환은 데이터 손실
public static void main(String[] args){
	int a = 1_000_000;
    int b = 2_000_000;
    
    long c = a + b;
    
    System.out.println(c);
    
intint의 연산 결과는 int이기 때문에 long 형으로 자동 형변환 되어도 
값은 바뀌지 않는다!

Math.round() 반올림하기

소수점 첫째자리에서 반올림

다른 자리에서 반올림 하는 경우 곱하기 + 나누기 이용

문자열의 비교

== & equals()

== 는 두 문자열이 완전히 같은 것인지 비교할 뿐

equals()는 내용이 같으면 true 반환

String str = "abc" 처럼 문자열 선언 시에는 == 가 문제 발생 X

String str = new String("abc") 처럼 문자열 선언시에는 == 가 문제 발생

대소문자 구분 않고 비교 -> equalsIgnoreCase(): 메서드 사용

대부분 이항 연산자는 두 피연산자의 타입이 다른 경우, 변환이 일어난다는 것 인지!

profile
Journey for Backend Developer

0개의 댓글