본문 바로가기

문돌이 존버/앱 개발 스터디

코틀린(Kotlin) 기초 문법 배우기 (1)

반응형
본 글은 스파르타 코딩 클럽의 "안드로이드 앱개발 기초반" 강의를 듣고 작성한 개발일지입니다.

코틀린의 장점

코틀린은 무엇보다 구글에서 공식적으로 사용하길 추천하는 안드로이드 개발 언어입니다. 자바 대비 버그가 발생될 가능성도 낮고, 간결하며 생산성도 높아지는 장점이 있습니다. 구글의 여러 앱들뿐만 아니라 에어비엔비, 트위터, 넷플릭스, 슬랙, 위챗 , 에버노트 등 다양한 글로벌 앱들도 코틀린으로 안드로이드 앱을 구성하고 있다고 합니다.

코틀린을 온라인으로 간단히 구현하기 위해선 코틀린 플레이그라운드를 이용하시면 됩니다.

println(메시지)는 값을 확인하거나 에러를 찾을 때 자주 사용되는데, 출력해서 버그를 찾는(Debugging By Printing) 스킬이라고도 불립니다. 토스트 메시지와는 다르게 안드로이드 앱 화면에 표시되지 않는다는 것이 토스트 메시지와의 큰 차이점입니다. 대신 콘솔창이라는 화면에만 표시됩니다.

본격적으로 코틀린의 기본 문법을 살펴보도록 하겠습니다. 

변수와 기본연산

변수명
코틀린에서 변수명은 숫자로 시작되거나 일부 특수문자 또는 띄어쓰기로는 불가능합니다. 주로 camelCase를 사용하며 어느 언어와 마찬가지로 무슨 용도인지 파악하도록 설정하는 것이 중요합니다.

데이터 타입 기억
변수를 처음에 문자로 설정했다면 이후에도 계속 문자를 선언해야 합니다. 즉 var temp = 5 라고 하고 나서 temp = 'Jun' 을 하게 된다면 Type mismatch 라는 에러가 발생합니다.
// 변수
var temp1 = 20
var temp2 = "Bob"

// 기본연산
var a = 1
var b = 2
println(a + b)
println(a / b)

println(temp2 + a) // 문자 + 숫자를 하면, 숫자를 문자로 바꾼 후 연산 수행

컬렉션 1) 리스트

컬렉션
자료 구조를 한 곳에 모아 관리와 사용을 편하게 하기 위해 만든 것, 대표적으로 List, Map, Set이 있습니다.
// 리스트에는 같은 타입이 들어감
var numList = listOf(1, 2, 3)
var stringList = listOf("1", "2", "3")

println(numList[0])

// 리스트 길이 구하기
println(stringList.size)

컬렉션 2) 맵

맵은 파이썬의 딕셔너리와 같다고 생각하면 됩니다.
var myMap = mapOf("FirstName" to "Jun", "LastName" to "Hwang")
var asciiMap = mapOf(65 to "A", "0x30" to 0)

println(myMap["FirstName"])
println(asciiMap[65])
println(asciiMap["0x30"])

// 맵에 있는 key 수
myMap.size
// 맵의 key값 가져오기
myMap.keys
// 맵의 value값 가져오기
myMap.values

수정 가능한 리스트와 맵

listOf()mapOf() 는 읽기전용 모드로 생성되어 수정이 불가합니다. 수정 가능하게 하려면 mutableListOf()mutableMapOf() 를 사용해야 합니다.
var alphabetList = mutableListOf("a", "b", "c")

alphabetList.add("d") // 새로운 값 마지막에 추가
println(alphabetList) // [a, b, c, d]

alphabetList.add(2, "d") // n번째에 값 추가
println(alphabetList) // [a, b, d, c, d]

alphabetList[0] = "A"
println(alphabetList) // [A, b, d, c, d]
alpahbetList.set(1, "B")
println(alphabetList) // [A, B, d, c, d]

alphabetList.remove("d") // 해당하는 값이 있으면 가장 먼저 나오는 값을 제거
println(alphabetList) // [A, B, c, d]

alphabetList.removeAt(3) // n번째 값 제거
println(alphabetList) // [A, B, c]
var myMap = mutableMapOf("FirstName" to "Jun", "LastName" to "Hwang")

// 값 추가
myMap.put("language", "Korean")
println(myMap) // {FirstName=Jun, LastName=Hwang, language=Korean}

// 값 변경
myMap["FirstName"] = "Juni"
println(myMap) // {FirstName=Juni, LastName=Hwang, language=Korean}
myMap.put("language", "Kotlin") // 값을 추가할 때 기존에 있는 키라면 값을 변경
println(myMap) // {FirstName=Juni, LastName=Hwang, language=Kotlin}

// 값 제거
myMap.remove("LastName")
println(myMap) // {FirstName=Juni, language=Kotlin}

리스트와 맵의 조합

var students = mutableListOf(
    mapOf("name" to "bob", "age" to 20),
    mapOf("name" to "carry", "age" to 28)
)

println(stduents[0]["name"]) // bob 출력
println(students[1]["name"]) // carry 출력

students.add(mapOf("name" to "john", "age" to 17))
println(students) // [{name=bob, age=20}, {name=carry, age=28}, {name=john, age=17}]

이렇게 자료형이 필요한 이유는 순서를 표시할 수 있고, 정보를 묶을 수도 있기 때문입니다.

위에서 살펴본 사칙연산 이외에도 기본적으로 제공하는 여러 함수들이 존재합니다. 다른 언어와 마찬가지로 다 외우고 있을 수 없기 때문에 그때그때 구글링을 하며 익숙해져야 합니다.

// 모든 알파벳을 대문자화
var myname = "codingStudy"
// toUpperCase()도 존재하나 곧 없어질 것이라고 함
println(myname.uppercase()) // CODINGSTUDY
// 특정 문자로 문자열을 나눌 경우
var myemail = "coding@gmail.com"

var result = myemail.split("@") // [coding, gmail.com]
println(result[0]) // coding
println(result[1]) // gmail.com

var result2 = result[1].split(".") // [gmail, com]

println(result2[0]) // gmail
println(result2[1]) // com

myemail.split("@")[1].split(".")[0] // 간소화 버전

다음 시간에 이어 코틀린 기초 문법 배우기 2탄을 정리해보겠습니다^^

728x90
반응형