Kotlin

[Kotlin] 코틀린 기초 1 - 변수, 자료형, in/when 키워드

도우 2024. 3. 22. 13:03
728x90

코틀린 기초 1

 

Gradle : 새프로젝트를 생성하거나 어플리케이션을 실행할때마다 매번 실행됨

앱을 사용할 수 있는 환경을 만들어준다.

onCreate 의 기본적인 역할 : 해당 액티비티를 먼저 실행하도록 하는 것 : super.onCreat()

Surface : 어플리케이션의 배경을 위해 사용하는 것 / MainActivity의 Surface(표면)

Greeting : Composable (컴포저블) / 단순히 화면에 보이는 요소

PreView : 앱을 실행하지 않고도 애플리케이션의 시각적인 표현을 보여줌

변수를 인코딩 한다는 것 ⇒ 나중에 프로그램에서 사용할 수 있는 컨테이너나 보관함에 데이터를 저장하는 개념

 

변수를 생성하는 2가지 방법

  1. val : 불변하는 값에 사용 ⇒ 재할당 불가능 (불변성 / 읽기 전용 / 상수형 변수)
  2. var : 변동될 수 있는 값

다른 프로그래밍 언어에서는 변수에 사용하고 싶은 데이터 종류를 꼭 정의해야 하지만 하지만 kotlin에서는 필요 없다 그저 변수에 값을 할당하기만 하면 된다. ⇒ 알아서 데이터 종류를 추론하여 변수에 데이터 종류를 할당함

코틀린에서는 변수는 사용하기전에 반드시 초기화가 되어야 한다. 코틀린은 명시적으로 타입을 지정하거나 초기 값을 제공하여 변수를 선언할 수 있다. 타입을 명시적으로 지정하는 경우 초기화를 나중에 할 수 있지만, 그 전에 해당 변수를 사용하려고 하면 컴파일 에러가 발생한다.

// val myNumber = 10; (초기 값을 제공하여 변수 선언)
val myNumber: Int // 초기화하지 않고 선언 (명시적)
myNumber = 10 // 사용하기 전에 초기화
println(myNumber) // 이제 myNumber를 사용할 수 있습니다.

=> 초기화 하지 않고 선언할 수는 있지만, 사용하기전에 반드시 초기화를 하여야 한다.

※ 아무리 정수의 값을 사용한다고 해도 이를 위해 여러 데이터 종류가 있다. 하지만 기본적으로 int로 설정이되고 다른 범위를 지정하고 싶다면 데이터 종류를 직접 정의해야 한다. ( byte, short, long…)

구체적으로 type을 지정하고 싶다면 val oneByte : Byte = 1 이런식으로 명시해줘야한다

 

 

Float 및 Double

Floating point에 따라 Float를 쓸지 double을 쓸지 다르다 ⇒ 하지만 기본적으로 Double 사용한다

val eFloat = 2.7182818284f  // 길이 자체는 Double이지만 끝에 f가 있기 때문에 Float로 저장된다.

⇒ Float 길이에 맞춰서 잘림 2.1782817

float = 8자리 / double = 16자리

 

부호가 없는 정수 (Unsigned Integer)

부호가 없다는 것 : 정수가 가진 숫자를 범위로 사용한다는 뜻 (음수를 다 잘라냄)

점점 범위가 양수 방향으로 커진다.

즉, 큰 범위를 사용하고 싶지만 음수가 필요없고 작은 데이터들을 저장하고 싶을 때 사용한다

 

Boolean

True, False, Null(Boolean이 비어있다는 뜻) 3가지 상태가 있다.
null을 할당 가능하지만 기본적으로는 False 이다.

추가적으로 코틀린에서는 모든 변수가 기본적으로 null을 할당받을 수 없다. 하지만, 변수 타입 뒤에 ‘?’을 붙여 ‘null’을 할당할 수 있는 “nullable” 타입으로 선언할 수 있다.

이 경우 ‘Boolean?’ 타입의 변수는 true, false, null 총 3가지 상태를 가질 수 있다.

null은 변수가 “값 없음””을 의미한다.

var booleanValue: Boolean? = null // null을 할당할 수 있음

 

Characters

한 글자만 저장하기 위해 사용되는 자료형, ‘’ 작은 따옴표를 이용해 선언할 수 있다.

( 반드시 하나의 유니코드 문자만 사용가능)

키보드에 없는 문자를 사용하고 싶을 경우 char에 유니코드를 선언하면 출력 가능함 유니코드 문자를 사용하려면 ‘\u’ 뒤에 해당 문자의 유니코드 값을 작성하면 된다.

val charA = 'A' // 일반 문자
val unicodeChar = '\u0041' // 'A'의 유니코드

 

String

Char의 모음으로 이루어진 자료형이다. 문자열은 고정된 길이의 문자 배열과 같으며, 각 문자에는 인덱스를 통해 접근할 수 있다.

코틀린의 문자열은 불변이며(immutable), 문자열 내용을 직접 변경할 수 없다.

val str = "abcd 123"

 

사용자에게 입력받기

readln() 또는 readLine() 함수 사용하여 사용자로부터 입력을 받는다.
두 메소드 모두 줄 단위로 입력을 받으며 사용자의 입력을 문자열로 반환한다

readLine() => null 값을 허용 / String? 타입, 즉 nullable string으로 반환됨
readln() => non-null 타입

readLine()의 경우 사용자가 입력을 제공하지 않고 엔터를 치거나 입력을 받지 못하는 경우 null 값을 반환할 수 있다.
같은 경우 readln()의 경우 빈문자열을 반환하지 않고, 예외를 발생시킨다.

즉, readLine()을 사용할 때는 반환된 값이 null인지 확인하는 과정이 반드시 필요하며
반면 readln()인 경우 항상 nun-null 'String'이기 때문에 입력이 전혀 없는 경우만 예외 처리가 필요하다.

toInt() : String을 int로 변경

println("나이를 입력하세요:")
val age = readln().toInt() // 사용자의 입력을 정수로 변환

 

in 키워드

‘in’ 키워드는 값이 특정 범위에 속하는지를 검사하는데 사용된다.
아래 코드는 18이상 39이하인지 간단하게 표현한 것이다.

if (age in 18..39) {
    println("18세 이상 39세 이하입니다.")
}

---

age >=18 && age <= 40 // 아래와 동일한 코드
age in 18..39

 

when 키워드

    if (randomNumber == 1){
        computerChoice = "Rock"
    } else if (randomNumber == 2){
        computerChoice = "Pager"
    } else if (randomNumber == 3){
        computerChoice = "Scissors"
    }

흔히 우리가 작성하는 조건문을 아래와 같이 깔끔하게 정리할 수 있다.

    when (randomNumber) {
        1 -> {
            computerChoice = "Rock"
        }
        2 -> {
            computerChoice = "Pager"
        }
        3 -> {
            computerChoice = "Scissors"
        }
    }

when 키워드를 넣고 괄호 안에 비교 혹은 확인을 할 변수를 넣는다 이후 아래 선언한 조건에 맞춰서 코드를 실행한다.
When의 장점은 그 결과를 바로 변수에 할당할 수 있다는 것이다. 아래 코드를 참고하자

    val winner = when {
        playerChoice == computerChoice -> "Tie"
        playerChoice == "Rock" && computerChoice == "Scissors" -> "player"
        playerChoice == "Paper" && computerChoice == "Rock" -> "player"
        playerChoice == "Scissors" && computerChoice == "Paper" -> "player"
        else -> "Computer"
    }

 

문자열 템플릿 사용

코틀린은 문자열 내에 변수 값을 직접 삽입할 수 있는 문자열 템플릿 기능을 지원한다. 기호 ‘$’를 사용하여 변수의 값을 문자열에 포함시키도록 하자

val name = "James"
val greeting = "Hello, $name!" // "Hello, James!"

 


 

코틀린 공식문서 
https://kotlinlang.org/docs/basic-syntax.html

 

Basic syntax | Kotlin

 

kotlinlang.org

 

728x90