zooooss

[Kotlin] 코틀린 기초 지식(1) 본문

STUDY/App

[Kotlin] 코틀린 기초 지식(1)

zooooss 2023. 8. 5. 23:11

- var과 val의 차이점

코틀린에서의 변수는 크게 var과 val로 나누어집니다.

val : 중복 변경 불가

var : 중복 변경 가능

val은 변하지 않는 값!이며 var은 변화하는 변수라고 생각하면 이해하기 쉽다.

 

- 타입추론

우리가 입력한 값에 따라 추론하여 자동으로 타입을 결정해주는 것이다. (*꼭 값을 넣어야만*)

ex) var Sunny = true 의 Sunny는 자동으로 boolean타입으로 설정됩니다.

 

- 스트링 템플릿 $

print구문에 마우스를 가져다대면 템플릿으로 변환하기 버튼이 나타나는데,

여러가지 스트링을 더하는 대신에 한 개의 스트링을 이용한 하나의 구문으로 바뀌게 됩니다.

방법 1. $변수명

방법 2. ${} 중괄호로 묶어주기 ex) ${MyStr.length} 하나의 구문으로 처리됩니다.

 

- toInt() 메소드

두 변수의 타입이 맞지않을 때, 타입을 통일시켜주는 메소드입니다.

ex)

var a = 5.0

var b = 7

result = (a + b).toInt()

 

- When 표현식

C, C++, C#, Java 등의 프로그래밍 언어에서 사용되는 switch문이 대체된 것입니다.

ex)

var season = 3

when(season){

     1 -> println("Spring")

     ...

     4 -> println("Winter")

     else -> println("Invalid Season")

     }

ex)

in 3..5 -> println("Spring")

12, 1, 2 -> println("Winter")

!in 0..20 -> println("...")

 

- for문

사용법1

for(num in 1..10){

     print("$num")

}

사용법2

for(i in 1 until 10){

     print("$i ")

}

사용법3

for(i in 10 downTo 1){

     print("$i ")

}

사용법4 (2간격으로)

for(i in 10 downTo 1 step 2){

     print("$i ")

}

 

- break

for 루프를 끝내거나 반복 실행을 더이상 하지 않겠다는 것을 의미합니다.

break가 실행되면 루프에서 빠져나오게 됩니다.

 

- continue

for 루프 안의 코드를 건너뛰고 다음 단계로 넘어가는 것을 의미합니다.

 

- 함수

fun addup(a: Int, b: Int) : Int{

     return타입도 정의가 가능함.

}

 

매개변수와 인수의 차이에 유의!해야합니다!

매개변수는 함수 정의에 이용 / 인수는 메인함수에서 해당함수를 사용할 때 이용합니다.

 

- Method와 함수의 차이

Method는 클래스 안의 함수입니다.

 

- Nullable(코틀린(자바) 단어!!)

null 타입이라는 것 ! 변수가 null을 값으로 갖게 해줍니다.

var name : String = "Mary"

// name = null -> Compilation ERROR

var nullableName : String? = "Mary" //여기에서 Mary대신 시작부터 null을 넣는 것도 가능

nullableName = null

물음표를 넣는 것이 nullableName의 관건 ! ! ! 입니다.

변수가 null이 아니라면 프린트하도록
println(nullableName?.toLowerCase())
안전한 호출 연산자 let으로 할 수 있음
nullableName?.Let { println(it.length) }
이 코드는 물음표, 점, let, 그리고 중괄호에 null이 아닌 경우에만 실행할 코드를 넣음!
값이 있을 때에만 실행!
결국 if else문을 빠르게 실행하는 방법이기도 함!

- 엘비스 연산자

엘비스 연산자를 사용해 nullableName의 값을 정해줍니다.

물음표, 콜론을 넣어 널러블이 빈칸이면 디폴트 값인 Guest를 넣는거고, 아니라면 원래 값을 넣습니다!

var nullableName : String? = "Denis"
val name = nullableName ?: "Guest"
println("name is $name")

이러면 Denis 값이 프린트 됩니다.

 

- Not-null 연산자

느낌표 두 개를 사용하여 nullable 타입을 Not-null 타입으로 변경합니다.

nullableName!!.toLowerCase()
//toLowerCase는 소문자로 바꿔주는 메소드
println(nullableName!!.toLowerCase())
denis가 출력됨

 

체인의 안전한 호출 연산자 사용 방법?

var wifesAge: String? = user?.wife?.age ?: 0
// 체인에 안전한 호출을 써서 user, wife, age가 비어있는 값인지 null인지 확인!
// null이면 값을 0으로 정함 !