본문 바로가기
Android(Kotlin)

[Kotlin Android] 변수와 함수

by 클리마 2022. 5. 23.
728x90


Android 개발에 앞서서 Kotlin언어의 기본 문법을 정리해보고자 합니다.

변수와 상수

Kotlin은 컴파일 시에 JAVA언어로 변환되게 되는데 JAVA와 다르게 Kotlin은 자료형을 명시하지 않아도 컴파일러가 추론하여 자료형을 지정해줄 수 있습니다. 그래서 변수와 상수를 선언할 때 아주 간단하게 선언할 수 있지요.

- 상수: val(value)
- 변수: var(variable)

먼저 자료형을 명시해줄 경우의 코드를 보면 아래와 같습니다.

val a: Int = 10             	//정수형 상수 선언 및 초기화
var b: Int = 9              	//정수형 변수 선언 및 초기화

var name: String = "Clima"	//문자열 변수 선언 및 초기화

자료형을 명시하지 않을 경우의 코드는 아래와 같습니다.

val a = 10	//정수형 상수
var b = 9	// 정수형 변수

a = 100		//Compile Error
b = 100

var name = "Clima"

Kotlin은 변수를 문자열 안에서 편하게 사용할 수 있습니다. 문자열에서 변수를 사용할 때는 `${변수}`와 같이 넣어주면 됩니다.

val name = "JK"
val lastName = "Seon"

//문자열 안에서 $표시만 해주면 변수로 인식한다.
println("my name is $name I'm a Developer.")
//여러 변수를 조합하거나 문자열출력시 문자를 변수에 붙여야할 때 {}로 구분하여 사용한다.
println("my name is ${name + lastName}. I'm a Developer.")

println("is it true? ${1==0}") //false

 

>Nullable

이전 글에서 Kotlin 언어의 특징 중 NullPointerException이 없다는 특징이 있었습니다. 그래서 기본적으로 Kotlin에서는 Null값을 가지지 못하도록 프로그래밍하게 유도합니다. 하지만 프로그래밍을 하다보면 null값이 필요하기 때문에 Nullable을 지정하여 Null값을 처리할 수 있습니다. Nullable 변수는 정말 신중하게 처리해야 합니다.

Nullable 변수는 다음과 같이 자료형에 ?을 붙여서 선언할 수 있습니다.

val nullName: String? = null				//Nullable, 타입 생략불가
val nullNameInUpperCase = nullName?.uppercase()		//null이면 null반환, 아니면 uppercase() 실행

@앨비스 연산자 -> ?:

앨비스 연산자는 값이 Null일 경우 반환할 값을 지정해주기 위한 연산자입니다. 왜 앨비스 연산자이냐면 연산자를 고개를 왼쪽으로 꺾어서 수평으로 보면 앨비스 얼굴처럼 생겨서 앨비스...(내가 지은거 아님 진짜 아님)

앨비스 연산자의 예시는 다음과 같습니다.

val lastName: String? = null

//lastName이  null일 경우 "No lastName"출력, null이 아니면 lastName값을 출력
val fullName = name+" "+(lastName?: "No lastName")

@ !!

!!는 null이 들어가지 않음을 컴퓨터에게 명시해주는 연산자입니다. 예시는 다음과 같습니다.

val str = "Clima"
val mNotNull: String = str!!		//타입 명시는 자유
val upper = mNotNull.uppercase()
println(upper)				// Clima

//email 변수가 null일 경우 let함수 안은 수행X,
//null이 아닐경우 "my email is tjswhdrbs14@naver.com" 출력
val email: String? = null
email?.let{
    println("my email is ${email})
}

 


함수

Kotlin에서 함수는 다음과 같이 정의할 수 있습니다. 굉장히 간단한 형식입니다.

fun helloWorld(): Unit { //Unit == void
    //Unit은 생략가능
}

fun add(a: Int, b: Int): Int {
    //자료형은 Capital로 시작
    return a+b
}
728x90