kotlin

코틀린 : 연산자의 개념

ChloeLee 2020. 10. 14. 20:39

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 와 같은 메소드를 이용!