코틀린 : 연산자의 개념
Kotlin 의 연산자
=> 연산자: 연산을 수행해주는 기호나 명령어
1. = : 할당 연산자
=> 오른쪽의 데이터를 왼쪽의 변수에 대입하는 연산자
2. 산술 연산자
=> +, -, *, /, %
3. * 배열
=> 배열의 데이터를 전개하는 연산자
import java.util.*
fun main(args:Array<String>) {
// 배열을 생성
var ar = arrayOf("Seoul", "Deagu")
//배열을 가지고 List를 생성
// * ar 하면 "Seoul", "Deagu"
var list = Arrays.asList(*ar, "Pusan")
println(list)
}
4. 증감 연산자
++
--
=> 변수의 값을 1증감하는 연산자
=> 변수의 앞과 뒤에 사용될 수 있는 연산자
=> 앞에 붙으면 증감을 먼저하고 명형에 사용하는 것이고 뒤에 붙으면 명령에 데이터를 사용하고 증감을 하는 것.
5. 논리 연산자
&& : and - 둘다 true 인 경우만 true 그 이외의 경우는 false
|| : or - 둘 다 false인 경우만 false 그 이외의 경우 true
! : not - false -> true, true -> false
=> and는 앞쪽의 결과가 false 이면 뒤의 결과를 확인 하지 않는다!
or 는 앞쪽의 결과가 true이면 뒤의 결과를 확인 하지 않는다!
=> && 나 ||를 반복문 안에서 사용할 때는 조건의 순서를 한 번 쯤은 고민을 해봐야 한다.
1부터 100까지 3의 배수이고 4의 배수인 데이터를 조회
su % 3 == 0 && su % 4 == 0 나누기 연산을 133 번 수행
su % 4 == 0 && su % 3 == 0 나누기 연산을 125번 수행
6. 비교 연산자
>, >=, <, <=
7. 항등 연산자
==, != : 2개의 값이 같은지 비교
===, !== : 2개의 인스턴스가 같은지 비교
=> 기초 데이터 타입(숫자, Boolean, Char)는 2가지 연산자의 결과가 동일
=> 그 이외의 타입은 결과가 다르게 나올 수 있다
=> 정수의 경우 -128 ~ 127 까지는 결과가 다르게 나올 수 있다.
var box1:Int = 254 => Integer box1 = new Integer(254)
var box2:Int = 254 => Integer box2 = new Integer(254)
box1 과 box2는 값은 같지만 참조는 다르게 된다.
box1 == box2 : true
bax1 === box2 : false
여기서 -128 ~127 까지의 숫자는 위와 다르게 적용
이 경우는 동일한 객체의 참조를 넘겨주는 방식을 이용
-128 ~ 127 까지는 자주 사용하기 때문에 상수 영역에 만들어 두고 이 상수 영역의 참조를 이용!
var box1:Int = 120=> Integer box1 = 120에 대한 참조
var box2:Int = 120=> Integer box2 = 120에 대한 참조
box1 == box2 : true
bax1 === box2 : true
8. 범위 연산자
숫자1.. 숫자2: 숫자 1부터 숫자 2까지를 묶은 것
9. null 연산자
=> kotlin이나 swift 에서는 if (객체 == null) 이런 표현을 거의 하지 않음
A?:B -> A가 null 이 아니면 A null 이면 B
A?.B -> A가 null 이면 null 아니면 B
A!!B -> A가 null 이면 예외를 발생 시키고 그렇지 않으면 B
=> kotiln 이나 swift에서는 NullPointerException 이 발생하는 것을 최소로 줄이려고 하는 문법을 추가!!
10. Kotlin 에는 비트 연산자가 없고 메소드로 제공
Int 클래스 내의 shl 이나 shr, and, or, xor, inv 와 같은 메소드를 이용!