코틀린( Kotlin )은 2011년 7월 JetBrains사가 공개한 JVM에서 동작하는 프로그래밍 언어로서, 간결하고 실용적이며 **자바코드와의 상호운용성( interoperability )**를 중시한 언어
대상 플랫폼
코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
- 서버상의 코드 ( 특히 웹 애플리케이션의 백엔드 ( backend ) )
- 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
변수
package com.sophie.myapplication.Kotlin
//Variable
//var, var name = data
//var == varible - 내 맘대로 원하는 것을 넣을 수 있음
//value == value - 한번 넣으면 바꿀 수 없는 상자 -> Value
var num = 10
var hello = "hello"
var point = 3.4
val fix = 20
fun main(args: Array<String>) {
println(num)
println(hello)
println(point)
println(fix)
num = 100
hello = "Good Bye"
point = 10.4
println(num)
println(hello)
println(point)
println(fix)
}
자료형
코틀린의 자료형은 자바와 동일 코틀린의 자료형은 기본적으로 레퍼런스 자료형이지만 기본적으로 NULL을 가질 수 없다. NULL 값을 갖게 하기위해서는 자료형 이름 뒤에 ?를 붙여줘야 한다.
package com.sophie.myapplication.Kotlin
val str:String = null // 컴파일 에러
val str:String? = null // ?를 붙여줘서 NULL 대입
// Type
// long int short byte
// double float
// char string
// boolean(true, false)
var number = 10
var number1: Int = 20
var hello1: String = "Hello"
var point1: Double = 3.4
fun main(array: Array<String>) {
number = 20
}
배열
코틀린에서 배열은 Array클래스에 제네릭타입을 넣어 표현
package com.sophie.myapplication.Kotlin
// 빈 배열 객체 생성
var emptyArr = emptyArray<Int>()
// 기본값이 들어있는 배열 생성
var arr:Array<Int> = arrayOf(1,2,3)
// 배열의 사이즈를 정하고 값들을 null로 초기화
var nullArr = arrayOfNulls<Int>(5)
println(nullArr.size) //5
fun main(args: Array<String>) {
//타입 명시 (변수 선언처럼 해당 타입의 원소만 포함 가능)
var group1 = arrayOf<Int>(1,2,3,4,5)
println(group1 is Array)
println(group1.get(1)) //2
println(group1.get(4)) //5
println(group1[2]) //3
println(group1[3]) //4
//타입 비명시 (여러 타입의 원소 포함 가능)
var group2 = arrayOf(1,2,3.5,"Hello")
}
조건문
if문
코틀린의 if문은 자바와 동일 대신 코틀린은 삼항연산자가 없기 때문에 if문을 삼항연산자처럼 값을 할당하는데에 사용할 수 있다.
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>) {
var a = 10;
var b = 20;
var c = if (a != b) {
println("a와 b의 값이 다르다.")
a + b // c = a+b
} else {
println("a와 b의 값이 같다.")
1020 // c = 1020
}
println(c) // 30
}
When
자바의 switch-case와 유사 콜론(:) 대신 ->를 사용 또한 default 대신 else 사용
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
var num:Int = 10
when(num){
0 -> println("숫자는 0")
5 -> println("숫자는 5")
10 -> println("숫자는 10")
else -> {
println("숫자는 0,5,10도 아닌 다른 수")
println("{}도 활용가능")
}
}
}
//결과 : 숫자는 10
여러 값 비교, 범위 또는 배열에 속하는지도 when에서 사용가능
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
var num:Int = 10
var arr:IntArray = intArrayOf(1,2,3,4,10)
when(num){
0,1 -> println("숫자는 0과 1")
in 2..5 -> println("2와 5사이의 수")
in arr -> println("arr 배열에 속함")
!in arr -> println("arr 배열에 속하지 않음")
}
}
//결과 : arr 배열에 속함
인자의 타입을 모르는 경우에, 코틀린의 when 문법에서는 타입 검사에 자동 형변환도 지원해준다.
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
var unknownObject:Any = "ABCDEFG"
when(unknownObject){
is TestClass -> println(unknownObject.print())
is String -> println(unknownObject.length)
is Int -> println(unknownObject.minus(10))
}
}
class TestClass{
fun print(){
println("TestClass 실행 print() 실행")
}
}
//결과 : 7
when은 그 자체로도 함수가 될 수 있다.
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
val num:Int = 50
val digitStr = digit(num)
println(digitStr)
}
// when을 통해 값을 return
fun digit(num: Int) = when(num) {
in 0..9 -> "한자리 수"
in 10..99 -> "두자리 수"
in 100..999 -> "세자리 수"
else -> "out of Range"
}
// 결과 : 두자리 수
반복문
for 문
코틀린의 for문은 기본적으로 for-each문 자바처럼 조건식, 증감식을 사용하는 것이 아닌, 데이터의 묶음에서 요소를 하나씩 가져와 사용하는 구조이다.
fun main(args :Array<String>){
var arr = arrayOf("A","B","C","D","E")
// 기본적인 for문
for(item in arr){
print(item + " ")
}
// 배열, 자료구조에서 indices를 사용하여 인덱스를 가져올 수 있음.
for(idx in arr.indices){
print(arr[idx] + " ")
}
// range 문법을 이용하여 index값을 가져올 수 있음.
for(idx in 0..arr.size-1){
print(arr[idx] + " ")
}
결과 : A B C D E
}
fun main(args :Array<String>){
var arr = arrayOf("A","B","C","D","E")
// index와 값을 둘다 뽑아올때는 withIndex() 활용
for((idx, value) in arr.withIndex()){
println("$idx 번째 값은 $value")
}
}
결과 : 0 번째 값은 A
1 번째 값은 B
2 번째 값은 C
3 번째 값은 D
4 번째 값은 E
while / do-while
while 문은 자바의 while문과 100% 동일
코틀린( Kotlin )은 2011년 7월 JetBrains사가 공개한 JVM에서 동작하는 프로그래밍 언어로서, 간결하고 실용적이며 **자바코드와의 상호운용성( interoperability )**를 중시한 언어
대상 플랫폼
코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
- 서버상의 코드 ( 특히 웹 애플리케이션의 백엔드 ( backend ) )
- 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
변수
package com.sophie.myapplication.Kotlin
//Variable
//var, var name = data
//var == varible - 내 맘대로 원하는 것을 넣을 수 있음
//value == value - 한번 넣으면 바꿀 수 없는 상자 -> Value
var num = 10
var hello = "hello"
var point = 3.4
val fix = 20
fun main(args: Array<String>) {
println(num)
println(hello)
println(point)
println(fix)
num = 100
hello = "Good Bye"
point = 10.4
println(num)
println(hello)
println(point)
println(fix)
}
자료형
코틀린의 자료형은 자바와 동일 코틀린의 자료형은 기본적으로 레퍼런스 자료형이지만 기본적으로 NULL을 가질 수 없다. NULL 값을 갖게 하기위해서는 자료형 이름 뒤에 ?를 붙여줘야 한다.
package com.sophie.myapplication.Kotlin
val str:String = null // 컴파일 에러
val str:String? = null // ?를 붙여줘서 NULL 대입
// Type
// long int short byte
// double float
// char string
// boolean(true, false)
var number = 10
var number1: Int = 20
var hello1: String = "Hello"
var point1: Double = 3.4
fun main(array: Array<String>) {
number = 20
}
배열
코틀린에서 배열은 Array클래스에 제네릭타입을 넣어 표현
package com.sophie.myapplication.Kotlin
// 빈 배열 객체 생성
var emptyArr = emptyArray<Int>()
// 기본값이 들어있는 배열 생성
var arr:Array<Int> = arrayOf(1,2,3)
// 배열의 사이즈를 정하고 값들을 null로 초기화
var nullArr = arrayOfNulls<Int>(5)
println(nullArr.size) //5
fun main(args: Array<String>) {
//타입 명시 (변수 선언처럼 해당 타입의 원소만 포함 가능)
var group1 = arrayOf<Int>(1,2,3,4,5)
println(group1 is Array)
println(group1.get(1)) //2
println(group1.get(4)) //5
println(group1[2]) //3
println(group1[3]) //4
//타입 비명시 (여러 타입의 원소 포함 가능)
var group2 = arrayOf(1,2,3.5,"Hello")
}
조건문
if문
코틀린의 if문은 자바와 동일 대신 코틀린은 삼항연산자가 없기 때문에 if문을 삼항연산자처럼 값을 할당하는데에 사용할 수 있다.
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>) {
var a = 10;
var b = 20;
var c = if (a != b) {
println("a와 b의 값이 다르다.")
a + b // c = a+b
} else {
println("a와 b의 값이 같다.")
1020 // c = 1020
}
println(c) // 30
}
When
자바의 switch-case와 유사 콜론(:) 대신 ->를 사용 또한 default 대신 else 사용
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
var num:Int = 10
when(num){
0 -> println("숫자는 0")
5 -> println("숫자는 5")
10 -> println("숫자는 10")
else -> {
println("숫자는 0,5,10도 아닌 다른 수")
println("{}도 활용가능")
}
}
}
//결과 : 숫자는 10
여러 값 비교, 범위 또는 배열에 속하는지도 when에서 사용가능
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
var num:Int = 10
var arr:IntArray = intArrayOf(1,2,3,4,10)
when(num){
0,1 -> println("숫자는 0과 1")
in 2..5 -> println("2와 5사이의 수")
in arr -> println("arr 배열에 속함")
!in arr -> println("arr 배열에 속하지 않음")
}
}
//결과 : arr 배열에 속함
인자의 타입을 모르는 경우에, 코틀린의 when 문법에서는 타입 검사에 자동 형변환도 지원해준다.
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
var unknownObject:Any = "ABCDEFG"
when(unknownObject){
is TestClass -> println(unknownObject.print())
is String -> println(unknownObject.length)
is Int -> println(unknownObject.minus(10))
}
}
class TestClass{
fun print(){
println("TestClass 실행 print() 실행")
}
}
//결과 : 7
when은 그 자체로도 함수가 될 수 있다.
package com.sophie.myapplication.Kotlin
fun main(args: Array<String>){
val num:Int = 50
val digitStr = digit(num)
println(digitStr)
}
// when을 통해 값을 return
fun digit(num: Int) = when(num) {
in 0..9 -> "한자리 수"
in 10..99 -> "두자리 수"
in 100..999 -> "세자리 수"
else -> "out of Range"
}
// 결과 : 두자리 수
반복문
for 문
코틀린의 for문은 기본적으로 for-each문 자바처럼 조건식, 증감식을 사용하는 것이 아닌, 데이터의 묶음에서 요소를 하나씩 가져와 사용하는 구조이다.
fun main(args :Array<String>){
var arr = arrayOf("A","B","C","D","E")
// 기본적인 for문
for(item in arr){
print(item + " ")
}
// 배열, 자료구조에서 indices를 사용하여 인덱스를 가져올 수 있음.
for(idx in arr.indices){
print(arr[idx] + " ")
}
// range 문법을 이용하여 index값을 가져올 수 있음.
for(idx in 0..arr.size-1){
print(arr[idx] + " ")
}
결과 : A B C D E
}
fun main(args :Array<String>){
var arr = arrayOf("A","B","C","D","E")
// index와 값을 둘다 뽑아올때는 withIndex() 활용
for((idx, value) in arr.withIndex()){
println("$idx 번째 값은 $value")
}
}
결과 : 0 번째 값은 A
1 번째 값은 B
2 번째 값은 C
3 번째 값은 D
4 번째 값은 E
while / do-while
while 문은 자바의 while문과 100% 동일
아직 미완성.. 나혼자 볼것 ,,,
'Back-end Skill > Kotlin' 카테고리의 다른 글
[Kotlin]코틀린1.8.0에서 새롭게 업데이트 된 기능 (0) | 2023.01.25 |
---|---|
[Kotlin] 스마트캐스트(smart cast) : 코틀린에서는 프로그래머 대신 컴파일러가 캐스팅한다 (0) | 2023.01.09 |