Kotlin 기본 문법

Seok·2022년 2월 8일
0

Android 공부

목록 보기
2/2
post-thumbnail

코틀린은 Google I/O 2017에서 안드로이드의 공식 언어로 채택되었다. 그리고 이번에 다양한 회사에서 이제 코틀린으로 어플리케이션을 개발하고 있다. 필자는 Java를 통해 Android 개발을 하고 있었지만, 코틀린으로 개발하는 방향으로 코틀린 공부를 시작하였다.

  • 표현력이 높고 간결함: 적은 노력으로 많은 작업을 할 수 있습니다. 상용구 코드를 적게 사용하면서도 아이디어를 풍부하게 표현할 수 있습니다.
    Kotlin을 사용하는 전문 개발자 중 67%가 Kotlin을 통해 생산성이 높아졌다고 말합니다.
  • 더 안전한 코드: Kotlin에는 null 포인터 예외와 같은 일반적인 프로그래밍 실수를 방지하는 데 도움이 되는 여러 언어 기능이 있다. Kotlin 코드가 포함된 Android 앱은 다운될 가능성이 20% 낮다.
  • 호환성: Kotlin에서 자바 기반 코드를 호출하거나 자바 기반 코드에서 Kotlin을 호출한다. Kotlin은 자바 프로그래밍 언어와 100% 호환되므로 프로젝트에서 Kotlin을 원하는 만큼 사용할 수 있다.
  • 구조화된 동시 실행: Kotlin 코루틴을 사용하면 비동기 코드를 차단 코드처럼 쉽게 사용할 수 있다. 코루틴은 네트워크 호출부터 로컬 데이터 액세스에 이르기까지 백그라운드 작업 관리를 크게 단순화한다.

👉 기본 문법

  • 코틀린은 ;을 사용하지 않고, 아래와 같이 변수 타입이 뒤에 붙는 형태이다.
  • 변수 타입을 지정하지 않을 수 도 있다.
//java
int x = 10;
//kotlin
val x: Int = 10
var x = 15

👉 기본 문법1 : var, val

코틀린에는 2가지 변수 선언 방식이 존재한다.

  • var : 일반적인 변수(값이 변경 가능하다.)
  • val : 변할 수 없는 상수(자바에서 final과 같다.)

val는 변할 수 없는 상수로 로컬 변수이다. 즉, 초기화 이후에는 값을 변경할 수 없다. 그리고 val는 꼭 초기화를 해주어야 한다.

//int 타입으로 x변수를 10으로 초기화
val x: Int = 10

//val 타입은 변수의 값 변경이 불가하여 오류가 발생
x = 15

//val 타입은 초기화 해주지 않으면 오류가 발생
val x: Int

var는 일반적인 변수로 변수의 값을 변경할 수 있다.

//int 타입으로 x 변수를 10으로 초기화
var x : Int = 10

//var 타입은 변수의 값을 변경 가능
x = 15

👉 기본 문법2 : 함수 생성

자바의 경우 아래와 같이 함수를 생성한다.

public int sum(int a, int b){
	return a+b;
}

코틀린의 경우 아래와 같이 함수를 생성한다.

fun sum(a: Int, b: Int): Int{
	return a+b
}

좀 더 단순하게 생성할 수도 있다.

fun sum(a: Int, b: Int) = a+b // 타입을 생략하여 바로 return 할 수도 있다.

함수에 조건식을 추가하면 아래와 같이 표현이 가능하다.

fun min(a: Int, b: Int) = if(a > b) b else a

👉 기본 문법3 : 코틀린에서 null 값

코틀린의 기본 변수는 null을 가질 수 없다. 따라서 null 값을 사용하기 위해 추가적인 작업이 필요하다.

아래와 같이 x에 null 값을 넣어주면 오류가 발생하지만, y와 같이 ?를 추가해주면 null이 가능한 변수임을 명시해줄 수 있다.

var x: Int = 10
x= null // 오류 발생

var y: Int? = 10
y = null // 정상 수행

코틀린은 null을 안전하게 사용하기 위해 ?.연산자를 사용한다.
자바에서 if(str != null) return str.toUpperCase() else return null 과 같은 것이다.

val str = "abc"

// ?.앞의 변수가 null이 아닐 때만 함수가 실행되고 앞의 변수가 null이면 null을 반환
println(str?.toUpperCase()) 

nullable로 !!도 존재하는데, !!는 강제로 null이 아님을 선언하는 것이다. 즉, !!를 사용하면 x는 이후부터 not null로 인식한다. 하지만 그 값이 null이면 Null Point Exception이 발생한다.

val s: String? = null
val x: String = s!!

👉 기본 문법4 : loop 반복문

코틀린에서 for 반복문은 자바와 비슷하다.

//java
ArrayList<String> arrayList = new ArrayList<>();
for(Stirng str: arrList){
	System.out.println(str);
}
//kotlin
var arrayList: ArrayList<String> = ArrayList<>()
for(str in arrayList){
	println(str)
}
  • range for 문
//java
for(int i=0; i<5; i++){
	System.out.println(i);
}
//kotlin

// 1에서 5까지 출력
for(i in 1..5){
	println(i)
}

// 역순으로 5부터 1까지 출력
for(i in 5 downTo 1){
	println(i)
}

// 일정 간격으로 출력
for(i in 1..5 step 2){
	println(i)
}

// 끝 번호 제외하고 출력
for(i in 1 until 5){
	println(i)
}

👉 기본 문법5 : if, when 조건문

코틀린에서 if문은 자바와 거의 동일하다.

val x = 10
val y = 15

if(x < y) println(true)

코틀린에서 when은 자바의 switch문과 동일하다.

//java
int x = 5;

switch(x){
	case 1:
    	System.out.println("1");
        break;
    case 5:
    	System.out.println("5");
        break;
    default:
    	break;
}
//kotlin
val x = 5

when(x){
	1 -> println("1")
    5 -> println("5")
    else -> println("10")
}

정리

코틀린의 기본 문법에 대해 공부해보고 자바랑 어떻게 다른지에 대해 알게 되었다. 확실히 자바를 사용할 때보다 코드의 수가 많이 줄 것 같다는 것을 체감할 수 있었다.

profile
네이티브 앱개발에 관심많은 주니어 개발자

0개의 댓글