Kotlin

변수와 상수 / 기본 자료형 / 형변환 / 배열

김한토 2024. 4. 1. 19:58
반응형

1) var과 val은 무엇이고 어떤 차이가 있을까?

 

var로 선언하면 값을 다시 바꿀 수 있지만 (변수)

val은 선언하면 값을 다시 바꿀 수 없다. => 그래서 기준이 되는 값을 선언할 때 사용한다. (상수)

ex) 파이 3.14 val pi = 3.14

 

변수와 상수를 구분하기 위해서 상수는 대문자로 선언한다.  

 

var a : Int? = null

자료형 뒤에 ?을 붙이면 null을 허용하는 nullable 변수로 선언해 줄 수 있다.

값이 null인 상태로 연산할시 오류가 날 수 있으므로 주의해야한다.

 

lateinit

: lateinit은 코틀린에서 나중에 초기화할 변수를 선언하는데 사용하는 키워드이다. 주로 var과 함께 사용되며, 초기화가 지연되는 것을 나타낸다. 이 키워드는 nullable 타입과는 다르게, 초기화가 이루어지지 않으면 접근할 때 UninitializedPropertyAcessException이 발생한다. 변수를 선언할 때 즉시 초기화할 수 없는 경우에 유용하다. 예를 들어, 객체가 생성된 후, 특정 조건이나 상황에 따라 변수를 초기화해야 할 때 사용한다. 또한, 클래스 멤버 변수를 클래스의 생성장에서 초기화 할 수 없는 경우, 예를 들어, 뷰나 다른 외부 리소스를 초기화해야 할 때 lateinit을 사용하여 나중에 초기화 할 수 있다. 

 

2) 형변환이란 무엇이고 명시적 형변환과 암시적 형변화은 각각 어떤 의미일까?

 

형변환 : 하나의 변수에 지정된 자료형 호환되는 다른 자료형으로 변경하는 기능

 

 

명시적 형변환 : 변환될 자료형을 개발자가 직접 지정함

암시적 형변환 : 변수를 할당할 시 자료형을 지정하지 않아도 자동으로 형변환 

 

코틀린은 형변환시 발생할 수 있는 오류를 막기 위해 암시적 형변환은 지원하지 않는다.

 

 

3) 배열의 특징은 무엇이고 어떻게 사용할까?

 

배열 Array<T>

var intArr = arryOf(1,2,3,4,5)

배열 변수를 만들어주고 arrayOf 함수를 통해 배열에 저장할 값들을 나열하면 된다. 

 

특정한 크기를 갖고 있는 빈 배열을 만들고 싶을때는

var nullArr = arrayOfNulls<Int>(5) 요롷게 선언한다. 

꺾쇠안에는 배열에 할당할 자료형을 넣어주면 된다.

이 자료형을 generic이라고 한당.

 

배열은 처음 선언했을 때의 전체 크기를 변경할 수 없다는 단점이 있지만

한번 선언을 해두면 다른 자료구조보 빠른 입출력이 가능하다는 장점이 있다. 

 

코틀린에서는 읽기 전용 변수(val)과 수정할 수 있는 변수 var 처럼

리스트도 읽기 전용 리스트(list), 수정할 수 없는 리스트(mutable)이 있다.

 

읽기 전용 리스트는 말그대로 리스트 선언할 때 넣은 데이터들을 수정 삭제 변경할 수 없다는 뜻

따라서 데이터를 읽을 수는 있지만 add, remove함수를 사용 못함

 

mutableListOf를 사용하면 add, remove 사용이 가능하며

또한 List를 MutableList로 변경, MutableList를 List로 변경할 수 있다.

 

관련 문제

https://www.acmicpc.net/problem/5597

 

5597번: 과제 안 내신 분..?

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,

www.acmicpc.net

 

var arrMutable = mutableListOf<Int>() 
arrMutable.add(1)
arrMutable.add(2)

var arrNotMutable = arrMutable.toList() //mutable -> list 변경
println(arrNotMutable)

var arrReMutable = arrNotMutable.toMutableList() list -> mutable 변경
arrReMutable.add(22)
println(arrReMutable)

 

 

Extra tip

 

코틀린 input 받기

 

readLine()

readLine()!!.split(" ").map {it.toInt()}

 

반응형

'Kotlin' 카테고리의 다른 글

Collection 함수  (2) 2024.09.18
코틀린 코테  (0) 2024.04.28
함수 / 타입 추론 / 조건문 / 반복문  (0) 2024.04.08