프로그래머를 위한 코틀린 부트캠프: 2. 코틀린 기초

정상협·2021년 3월 26일
0

공부할 것

이번 포스팅의 목표는 다음과 같다.

  1. 코틀린 데이터 타입, 연산자 및 변수 사용하는 방법
  2. boolean과 조건을 다루는 방법
  3. nullable 변수와 non-nullable 변수의 차이
  4. 코틀린 에서 배열, 목록, 루프의 작동 방식

연산자 및 유형에 대해 알아보자

지난 시간에 배웠던 코틀린 RET를 열어보자. 그 후 원하는 코드를 입력하고 컨트롤 + 엔터를 누르면 실행이 된다.

기초적인 숫자 연산

기초적인 숫자 유형부터 살펴보겠다.

결과값의 리턴에 유형이 적혀있는 것이 보인다. 즉, 자동적으로 숫자를 인식해서 지정해준다.

Double * Int 시 더블로 지정되어진다.

이런 함수도 지원이 되지만 굳이 사용할 필요는 잘 없을 것 같다.

타입 사용하기

서로 다른 유형의 타입들은 에러가 표시가 된다.
Byte 를 Int, String, Double 로 변환을 하려면 오류가 표시된다.

다른 언어에도 있는 변환함수들이다. 같은 유형이 되어야지 지원이 된다.

그 외 숫자를 표현하기 위한 자리수 표현도 가능하다.

val 100Million = 1_000_000
val socialSecurityNumber = 999_99_99999L
val 16진수 = 0xFF_EC_DE_5E
val바이트 = 0b11010010_01101001_10010100_10010010010

_로 숫자 구분 가능

변수 유형의 값

코틀린은 자바와 같이 변경 가능한 변수와 불가능한 변수로 나눈다. 이것을 각각 val, var라고 한다.

문자열 모아보기

코틀린 문자열은 다른 프로그래밍 언어의 문자열과 비슷하게 작동한다.

문자열을 표현하는 "", 단일 문자를 표현하는 '' 과 연결을 하는 + 그리고
$ 같은 리터럴 문자도 지원한다.

조건문과 bool

if 문은 C 언어와 다를 것 없다. 다를건 코틀린에서는 조건도 범위를 사용가능하다.

1..100 같은 것도 조건문에 사용 가능하다.
코틀린에서 주목할만한건 when 문이 있다.

간단하게

   when(조건){
   	값 -> 출력
    in 값 가능하다
    else 로 예외 처리
   }

코틀린의 nullability

null은 여러 프로그래밍에서 버그를 일으키는 원인이 되었다. 코틀린은 nullable 변수를
도입하여 버그를 줄이려고한다.

1단계: nullability에 대해 알아보기


이런식으로 null을 할당 하려고 하면 에러가 표시된다. 그럼에도 불구하고 null을 하려면 다음과 같이 해야한다.

2단계: ? 및 ?: 연산자에 대해 알아보기


조건문에서 var가 null인지 알아보고 값을 할당하는 문이다.
코틀린에서는 이것을 ? 으로 대체가 가능하다.

물음표를 던져서 var에 값이 있는지 물어보는 것이다.


var의 변수값이 null 인지 물어보고 null이면 중지시키고 그 다음 메소드를 호출하지 않는다.

배열, 리스트 및 루프 탐색

다른 언어와 유사한 점이 많아서 간단히 넘어간다.

리스트

listof 로 선언한 것은 변경이 불가능하다.
mutableListOf 로 선언한 것은 변경이 가능하다.

배열

  1. 코틀린에서 자바 유틸을 사용 가능하다.

  2. 유형이 선언되지 않아서 모든 유형을 저장 가능하다.

  3. 특정 유형만을 가진 배열을 하는 것도 가능하다.

    배열의 합체가 가능하다.

이런식으로 배열의 요소도 리스트가 될 수 있고, 리스트의 요소가 배열일수도 있다!

이런식으로 초기값을 선언할 때 코드로 초기화 할 수도 있다.

반복문

다른 언어와 유사하여 빠르게 넘어간다. 다른 점이라면 .. 같은 범위를 지정가능한 것이다.

while 이나 do while의 사용법은 특이한게 없다.
repeat는 해당 갯수만큼 반복하는 반복문이다.

요약

코틀린의 기본적인 문법을 알아보았다. 다른 언어와 매우 유사하지만, 차이점도 존재했다.

  1. 코틀린의 타입은 암묵적으로 변환이 안되고 toInt(),toString() 같은 캐스팅이 필요
  2. val는 한번만 배정 가능하다.
  3. 코틀린은 기본적으로 null이 되지 않는다.
  4. 코틀린을 사용하면 배열의 인덱스와 요소를 동시에 루핑 가능하다.

문제

마지막에 문제가 있어서 잠시 풀어보겠다.

질문 1
다음 중 변경할 수 없는 문자열 목록을 선언하는 것은?

▢ val school = arrayOf("shark", "salmon", "minnow")

▢ var school = arrayOf("shark", "salmon", "minnow")

▢ val school = listOf("shark", "salmon", "minnow")

▢ val school = mutableListOf("shark", "salmon", "minnow")

질문 2
다음 코드의 출력은? for (i in 3..8 step 2) print(i)

▢ 345678

▢ 468

▢ 38

▢ 357

질문 3
이 코드에서 물음표의 목적은 무엇인가? var rocks: Int? = 3

∘변수의 종류 rocks 고정되어 있지 않다.

▢ 변수 rocks 무효로 설정될 수 있다.

▢ 변수 rocks null로 설정할 수 없다.

▢ 변수 rocks 즉시 초기화해서는 안 된다.

내가 생각해낸 답

질문1
var school = arrayOf("shark", "salmon", "minnow")
=> 선언 후 할당이 불가능한 var에 arrayof라는 재할당 불가능한 배열선언

질문2
357 => 3에서 스탭2만큼 증가

질문3
변수 rocks null로 설정할 수 없다.
=> rocks의 값이 Int인지 살펴보고 인트가 맞다면 3이 할당되는 nullable 선언이다.

다음은 코틀린의 함수에 대해 알아보자.

profile
프로그래밍 배우는 중이에요

0개의 댓글