본문 바로가기
  • hazard_dev@__
  • hazard_dev@__
Kotlin

[Kotlin#2] Kotlin(코틀린) 데이터 타입 및 배열

by Hazard3_o00sung 2020. 12. 6.
728x90

무었이든 가능한 강력한 언어, Kotlin입니다

Kotlin is Simple and Powerful Language

저번 글로 아마 많은 분들이 코틀린 설치는 끝마치셨을 거라 생각하고, 오늘은 변수의 타입과 리스트 등 알아야 할 기본적인 문법에 대해서 알아보도록 하겠습니다.

 

정수형 타입

  우선 정수형 타입에 대해서 알아보도록 하겠습니다. 코틀린에는 총 6가지의 정수형 타입이 존재합니다. 아래의 표와  같이 있으며, 타입별 사이즈도 표기했습니다.

Type Size
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

이렇게 보면, 사실 이해가 잘 가지 않습니다. 이유로는 실제로 개발을 진행해봐야 저 위의 사이즈를 고려할 일이 생기기 때문이죠... 하지만, 짚고 넘어가야 할 점은 외워두시면 좋다는 건 확실합니다. C언어를 주로 개발해오신 분이라면 위의 사이즈에 익숙하실 테지만, 아닌 분들은 눈으로 훑기보단 좀 더 집중해서 보시는 편을 추천드립니다. 아래는 사용 예제입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
fun int(n:Int){
    println("N is Int, Value : "  + n);
}
 
fun double(n:Double){
    println("N is Int, Value : "  + n);
}
 
fun short(n:Short){
    println("N is Int, Value : "  + n);
}
 
fun main(){
    val n1: Int = 10;
    val n2:Double = 10.01;
    val n3:Short = 10;
 
    int(n1);
    double(n2);
    short(n3);
}
 
RESULT > 
N is Int, Value : 10
N is Int, Value : 10.01
N is Int, Value : 10
cs

아래의 결괏값과 같이 출력됨을 알 수 있습니다. 현재는 그냥 사이즈에 구애받지 마시고, 그냥 문법을 익히는데만 집중하면 됩니다!

캐릭터 타입

  코틀린은 Char를 사용해서 문자를 나타냅니다!! 문자는 ''와 같이 작은 따옴표로 선언해야 합니다!. 이때 주의해야 할 점은 여러분들이 눈치채셨을지 모르겠지만, val과 var의 차이를 확실하게 아셔야 합니다! 아래 코드 예제와 함께 캐릭터 타입 또한 함께 배워보도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
fun char(n:Char){
    println("$n");
}
 
fun main(){
    var a:Char = 'A';
    val b:Char = 'B';
 
    a = 'C'// possible to assigning
    b = 'C'// impossible to assigning because
    // val is like the final keyword in java
    char(a);
}
cs

위 예제와 같이 a에는 새로운 값이 할당이 가능하나, b에는 새로운 값이 할당되지 않습니다. val은 자바의 final과 같은 의미이기 때문에 읽기만 가능한 변수라는 뜻으로 컴파일러에게는 전달됩니다. 이점은 무조건 유의해서 외워두시기 바랍니다!

컬렉션 타입

  컬렉션 타입은 코틀린의 데이터 구조에서 매우 중요한 부분으로 이용되며, 프로그램의 다수의 부분을 차지하기 때문에 반드시 외워두셔야 합니다. 코틀린에는 두 가지 유형의 컬렉션이 있는데 이때, 수정이 불가능한 컬렉션과 수정이 가능한 컬렉션으로 나뉩니다. 우선 뭐 객체의 보호에 따라 수정이 불가능한 컬렉션을 따로 만든 것 같은데, 이는 사실 프로그래머의 의지대로 상황 따라 개발에 이용하는 것이 중요하다고 보입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
fun mutableCollections(n:MutableList<Int>){
    println("Mutable List : " + n);
    n.add(10);
    println("ADD 10 List : " + n);
    immutableCollections(n);
 
}
 
fun immutableCollections(n:MutableList<Int>){
    val read:List<Int> = n;
 
    println(read);
    read.add(11);
}
 
fun main(){
    val n:MutableList<Int> = mutableListOf(1,2,3);
    mutableCollections(n);
}
cs

우선 코드를 실행하기 전에, mutableCollections함수에서 맨 아래에 있는 immutableCollection() 호출 부분을 삭제하고 컴파일하게 되면, 정상적으로 결괏값이 출력됩니다. 하지만 추가한 후 컴파일하면 해결할 수 없는 구문이라고 오류가 뜨며, 제대로 동작하지 않습니다. 그럴 수밖에요, 읽기만 가능한 상태로 변경되었기 때문에 컬렉션에 새로운 데이터를 추가하는 것은 불가능 할 수 밖에 없습니다. 이외에 내장 메서드들 또한 많습니다. first(), last()등.. c++의 벡터와 비슷하게 사용된다고 보시면 됩니다!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fun mutableCollections(n:MutableList<Int>){
    println("Mutable List : " + n);
    n.add(10);
    println("ADD 10 List : " + n);
    println("First Value : "+n.first());
    println("Last Value : "+ n.last());
 
    println("2 % == 0 Value ? :"+n.filter{ it % 2 == 0});
 
}
 
fun immutableCollections(n:MutableList<Int>){
    val read:List<Int> = n;
 
    println(read);
}
 
fun main(){
    val n:MutableList<Int> = mutableListOf(1,2,3);
    mutableCollections(n);
}
cs

이외에도 많은 내장 함수들이 있으나, 본 글은 코틀린을 빠르게 훑고 지나가는 것이기 때문에, 이 정도만 설명을 드립니다!! 어차피 나중에 중급 설명글도 올릴 예정이니 좀 기다려주시면,,

배열

배열은 뭐 너무 많이 사용되는 구조니까 대부분 아실 거라 생각하지만, 한번 코드를 통해 한번 보도록 하겠습니다.

1
2
3
4
5
6
fun main(){
    val n:IntArray = intArrayOf(1,2,3,4,5);
    val n1:Array<String> = arrayOf("A""B","C");
    println("n[0] : " + n[0]);
    println("n1[0] : " + n1[0]);
}
cs

인덱스  또한, 다른 언어의 문법과 별반 다를 바 없이 사용될 수 있기 때문에 이점은 간편하게 사용할 수 있습니다. 그리고 배열은 동일한 타입의 데이터만 담을 수 있다는 점은 유의하시면 되고요!

범위

다른 언어들과 유사하게 사용되지만, 범위 표현자는 '..' 내부적으로는 x rangeTo y로 구현됩니다. 아래 코드 예제를 보시면 한 번에 이해가 가니까요~ 한번 보시고 실습해보시면 될 것 같습니다.

1
2
3
4
5
6
fun main(){
    val foo:Int = 2;
    for (bar in 1..10){
        println("counting num : " + bar);
    }
}
cs

 

이상 오늘 코틀린의 기본적인 타입에 대해서 알아보았습니다. 내장 함수들은 소개가 빠졌는데요, 내장 함수들을 포함하게 되면 사실 엄청나게 많은 양을 작성해야 하기도 하고 한 번에 이해하기도 어렵기 때문에 현재 시점에서는 고려하지 않았습니다.

 

댓글로 피드백, 문의, 질문 환영합니다!!!

 

감사합니다.

 

 

hazarddev.tistory.com/49

 

[Kotlin#3] Kotlin(코틀린) 제어 및 반복문(if, for, while)

Useful Control flow and Loop flow in Kotlin 저번 시간까지는 변수의 타입을 포함해, 기본적인 코틀린의 기능에 대해서 배워보았습니다. 이번 시간에는 코틀린에서의 제어문과 반복문에 대해서 알아볼 예

hazarddev.tistory.com

 

728x90

댓글