JAVA에서의 연산자 종류 및 사용 규칙은 해당 문서에서의 자바스크립트의 사용법과 비교 해볼때 타입 선언 및 연산 과정에서의 타입 간 일치 여부를 제외하고 다음의 몇 가지 차이점을 보인다는 점을 빼면 동일하다고 보시면 되겠습니다.
자바스크립트는 동등 연산자(느슨한 비교 연산자)
와 일치 연산자(엄격한 비교 연산자)
를 따로 나눠 상황 간 비교 연산을 수행하는대에 반해, 자바에서는 '==' 연산자
하나만으로 값과 타입 모두 비교 연산을 수행합니다.
- 자바스크립트의 비교 연산자
let a = 5; let b = '5'; console.log(a == b) // 타입 변환 후 같은 값으로 취급, true를 반환 console.log(a === b) // 타입 변환 없이 타입까지 비교 후 false를 반환
- 자바의 비교 연산자
int a = 5; int b = 5; char c = '5'; console.log(a == b) // 타입이 같으므로 true를 반환 console.log(a == c) // 타입 변환 없이 타입까지 비교 후 false를 반환
자바스크립트에서의 논리 연산자는 단락 평가시 truthy
와 falsy
로 취급되는 값들을 이용하여 논리식의 일종으로 사용이 가능하나, 자바에서는 truthy와 falsy의 개념이 존재하지 않으므로 반환 값이 항상 true 혹은 false가 됩니다.
- 자바스크립트의 단락 평가
let a = false || 'hello'; // 앞 값이 거짓이나 뒤의 값이 참이므로 'hello'를 반환 let b = true && 'hello'; // 앞 뒤의 값이 모두 차밍므로 뒤의 값인 'hello'를 반환
- 자바의 단락 평가
let a = false || true; // 앞 값이 거짓이나 뒤의 값이 참이므로 true를 반환 let b = true && false; // 앞 값은 참이나 뒤의 값이 거짓이므로 false를 반환
자바스크립트에서는 ES11부터 도입된 null 병합 연산자
로 선행 값이 null
이거나 undefined
일 때 후행의 값을 반환하는 연산자가 존재하지만, 자바에서는 삼항 연산자나 optional, 조건문을 이용해 해당 값에 대한 null
의 상태 체킹을 구현할 수 있습니다. 참고로 자바에서는 undefined
키워드가 없으므로 null
키워드만 보시면 되겠습니다.
- 자바스크립트의 null 병합 연산자
let a = null ?? 'default'; // 선행 값이 null이므로 후행의 값 "default"을 반환 let b = undefined ?? 'default'; // 선행 값이 undefined이므로 후행의 값 "default"을 반환 let c = 0 ?? 'default'; // 선행 값이 falsy 값이나, null이나 undefined로 취급되지 않으므로 선행 값 0을 출력
- 자바의 null 병합 연산자 구현
String a = null; String b = (a != null) ? a : "default"; // 삼항 연산자를 이용하여 해당 값이 null일 경우 선행 값을, 아닐 경우 후행 값을 출력 Optional<String> optional = Optional.ofNullable(a); // Optional 클래스를 이용해 null값을 포함하는 클래스 객체를 생성 후 String c = optional.orElse("default"); // 해당 optional객체의 값이 null일 경우 orElse 메서드를 이용해"default" 를 반환하게 합니다.