코틀린 이란?
- Jetbrains 사에서 개발 하였다 (Android Studio를 다운받을때 사용한 곳)
- 2017년에 안드로이드 공식지원언어로 채택되었다 (원래 Java밖에 없었는데 Kotlin이 추가됨)
코틀린이 좋은 이유
- 문법이 간결하며, 표현력이 좋다
- Null safe 언어이다
- 기존 라이브러리와 상호운용성이 좋다 (자바와 100% 호환이 된다)
코틀린에서 변수 선언하는 방법
1. var/val 변수명 = 값
var은 variable의 축약어, val은 valuable의 축약어
둘 중에 아무거나 고르는 것이 아니라 서로 차이가 있다.
var은 마음대로 원하는 것을 넣을 수 있다.
val은 한 번 넣으면 바꿀 수 없는 변수 선언명.
var num = 10
val hello = "안녕하세요"
2. var/val 변수 : 자료형 = 값
var number1 : Int = 20
var hello1 : String = "Hello"
var point1 : Double = 3.4
2가지 변수 선언법에서 알 수 있는것은 코틀린은 2번과 같이 자료형을 적어주지 않을경우 알아서 자료형을 정한다.
코틀린에서 프로그램이 작동하는 곳
: 실행되는 부분의 코드는 다음과 같다.
fun main(args:Array<String>){
}
여기 안에 코드를 입력하면 된다.
Run을 실행하고 싶은데 안보이는 경우가 있을 수 있다. 이럴때는 [File]->[Settings]에서 Deployment를 검색해서 둘 다 체크해주면 된다.
변수 활용
var a = 1+2+3+4+5
var b = "1"
var c = b.toInt()//b를 int로 바꾼값이 저장됨
var d = b.toFloat()//d에는 1.0이 있음
var e = "John"
var i = "My name is $e Nice to meet you"
fun main(array:Array<String>){
println(a)
println(b)
println(c)
println(d)
println(e)
println(i)
}
3번째 줄에서 toInt()와 4번째 줄의 toFloat()는 각각 int와 float로 바꾸어주는 것이다.
그리고 변수 e는 John으로 들어가있고 i 문자열에서 $e를 써서 대입할 수 있다.
//var abc : Int = null
var abc1 : Int? = null
자료형 뒤에 ?를 붙이면 null을 가질 수 있는 자료형이 된다.
함수
함수
-어떤 input을 넣어주면 어떤 output 나오는 것
함수를 선언하는 방법
fun 함수명 (변수명: 타입, 변수명: 타입....) : 반환형{
함수내용
return 반환값
}
fun plus(first:Int,second:Int):Int{
val result : Int = first+second
return result
}
fun main(array:Array<String>){
val result = plus(5,10)
println(result)
val result2 = plus(first=20,second=30)
println(result2)
}
디폴트 값을 갖는 함수 만들기
fun plusFive(first:Int,second:Int=5):Int{
val result:Int = first+second
return result
}
main에서 plusFive함수를 실행하면 된다. second인수를 주지않으면 자동으로 디폴트 값인 5가 들어가서 계산된다.
반환값이 없는 함수 만들기
fun printPlus(first:Int,second:Int):Unit{
val result:Int =first+second
println(result)
}
반환값 입력받는 공간에 Unit으로 두면 반환값 없이도 함수를 만들 수 있다. Unit은 생략이 가능하다.
위와 같은 사실에서 우리는 main함수에 대해서 유추해 볼 수 있다.
fun main(array:Array<String>){
여기서 array변수는 Array<String> 타입의 변수라는 것을 알 수 있다. 그리고 이 함수에는 반환값이 없다는 것도 알 수 있다.
간단하게 함수를 선언하는 방법
fun plusShort(first:Int, second:Int) = first+second
가변인자를 갖는 함수 선언하는 방법
fun plusMany(vararg numbers: Int) {
for (number in numbers){
println(number)
}
}
fun main(array: Array<String>) {
plusMany(1,2,3)
}
내부 함수 : 함수 안에 함수가 있다.
fun showMyPlus(first:Int,second:Int):Int{
fun plus(first:Int,second:Int):Int{
return first+second
}
return plus(first,second)
}