Kotlin 언어에 대해서 문서를 만들고 있습니다.
무슨 언어 정리 문서냐. 시간 낭비다. 라는 의견이 들 수 있는 사항이지만, 누구나 접근 가능한 개발 문서를 만들어 보자 합니다. 저의 개발 인생에 있어서 큰 첫 걸음이 되지 않을까
첫 수업으로 Kotlin 변수 선언 방법입니다.
var
은 Mutable Variable의 약어. 값 변경이 가능한 변수를 선언할 때 사용합니다.
var 변수명 = 값
var 변수명 : 자료형 = 값
가변성을 필요한 지역 변수에 많이 사용합니다.
var 변수명 = "first"
println("결과값 : $변수명") // 결과값 : first
변수명 = "second"
println("결과값 : $변수명") // 결과값 : second
val
은 Immutable Variable의 약어. 값 변경이 불가능한 변수를 선언할 때 사용합니다.
val 변수명 : 자료형 = 값
val 변수명 = 값
val
의 목적은 변수의 값이 초기 할당 이후 변경되지 않는 불변성을 제공하는 것입니다.
선언과 동시에 초기화가 되어야 합니다.
val 변수명 = "first"
println("결과값 : $변수명") // 결과값 : first
변수명 = "second" // 불가능
참조는 변경이 불가능하지만 참조된 객체가 가변적인 경우에는 객체의 상태를 변경할 수 있습니다
val 변수명 : MutableList<String> = mutableListOf("1")
println("결과값 : $변수명") // 결과값 : ["1"]
변수명.add("2")
println("결과값 : $변수명") // 결과값 : ["1", "2"]
가능한 val
을 통해서 값 불변성을 유지하는 것이 좋습니다. 불변성은 코드의 안정성과 가독성을 높이는데 도움이 됩니다.
const val
은 Constant Value의 약어. 상수 값을 변수로 선언할 때 사용합니다.
실행 중 계산되는 방식이 아닌 프로그램이 실행되기 전 메모리에 직접 저장되는 방식입니다.
const val 변수명 = 상수 값
자주 변경되지 않는 설정 값이나 API Key, URL, 전역 상수 값을 저장합니다.
기본 자료형과 String 자료형의 값만 할당이 가능하며, String 외 참조 자료형은 불가합니다.
프로그램이 실행되기 전에 저장되는 방식으로 선언 위치도 중요합니다.
파일 최상위 레벨에 선언되어야 합니다. 클래스 인스턴스와 무관하게 선언됩니다.
```
const val 변수명 = "HERE"
class MyClass() {
println(변수명) // HERE
}
fun myFun() {
println(변수명) // HERE
}
```
object는 인스턴스를 생성하지 않고도 전역적으로 접근할 수 있는 유일한 객체이며 정적입니다. 그래서 object 안에 const val을 선언할 수 있습니다.
```
object myObject {
const val 변수명 = "HERE"
}
class MyClass() {
println(myObject.변수명) // HERE
}
fun myFun() {
println(myObject.변수명) // HERE
}
```
Class 내 const val을 선언할 수 있는 방법이 있습니다. Companion Object를 활용하는 방법입니다. 구체적인 설명은 아래 내용을 참고해주세요. 클래스의 인스턴스와 상관없이 Companion Object에 접근이 가능합니다.
```
class MyClass() {
companion object {
const val 변수명 = "HERE"
fun coFun() {
println(변수명)
}
}
}
fun myFun() {
MyClass.coFun() // "HERE"
println(MyClass.변수명) // "HERE"
}
```
오류나 수정 사항 말씀해주시면 감사하겠습니다.
천천히 github에 개발 인생 레파지토리에 올릴 예정입니다.
너무 졸려서 대충 끄적이고 사라지겠습니다.
오올~ 수업해주시는 건가요?