[Kotlin] 변수 및 기본 개념

이상목·2024년 4월 17일
0

Kotlin

목록 보기
1/20
post-thumbnail

코틀린 기본 개념 정리

변수

1. 변수 선언 방법

 var : 일반적으로 통용되는 변수로 언제든지 읽기 쓰기가 가능하다.
 
 val : 선언시에만 초기화가 가능하며, 중간에 값을 변경할 수 없다. 불변성을 가짐
 	ex) java는 final 함수를 통하여 불변 객체를 선언한다.
    ex) javascript는 const를 통하여 불변 객체를 선언한다.

2. 변수 scope

  • 변수는 선언 위치에 따라 두 가지 이름으로 나눈다.
Class에 선언된 변수 :  Property(속성)

이 외 Scope 내에 선언된 변수 : Local Variable(로컬변수)

3. 변수 null 처리

  • 보통의 언어들은 변수가 선언된 후 초기화 하지 않으면 default 값으로 초기화되거나 값이 할당되지 않는 null을 가지게 된다.
  • 코틀린은 기본 변수에서 null을 허용하지 않고, 변수에 값을 할당하지 않은 채로 사용하게 되면 문법 에러를 표시하고
    컴파일을 막아주므로 의도치 않는 동작이나 null pointer exception 등을 원척적으로 차단해준다는 장점을 가진다.
fun main() {
	var a: Int = 123 // 값 초기화 필수 !
    println(a)
}
  • 변수에 값을 할당하는 것은 반드시 선언시에 할 필요는 없으며, 변수를 참조하여 사용하기 전까지만 하면 된다.
fun main() {
	var a: Int
    a = 123 // 이렇게도 가능하다.
    println(a)
}
  • 기존 Java에서는 변수 선언 시 무조건 값을 할당해주어야 했다.
    ex) Java에서의 예시
function main() {
	Int a = 0;
    a = 123
}
  • 간혹 프로그램에 따라 변수에 값이 할당되지 않았다는 것을 하나의 정보로 사용하는 경우도 있다.
    그런 경우 null을 허용하는 nullable 변수로 선언해줄 수 있다.
fun main() {
	var a: Int? = null
}

자료형

기본 자료형

  • Java와 거의 동일하며 Typescript처럼 Type을 지정해줄 수 있다.
fun main() {
	var int:Int = 1234
    var long:Long = 1234L
    var boolean:Boolean = true
}
  • 내부적으로 문자열을 UTF-16 BE 방식을 사용한다. 따라서 글자 하나당 2byte를 차지한다.
fun main() {
	var charVlaue:Char = 'a'
    var stringValue: "나는 이상목"
}

형변환

  • 코틀린은 형변환 시 발생할 수 있는 오류를 막기위해 다른 언어들이 지원하는 '암시적 형변환'은 지원하지 않는다.
    즉, 변환될 자료형을 직접 명시적으로 지정해주어야 한다.
fun main() {
	var a: Int = 54321
    var b: Long = a.toLong() // int를 Long으로 변환.
}

형 변환 함수

toByte()

toShort()

toInt()

toLong()

toFloat()

toDouble()

toChar()

배열

  • 배열은 처음 선언했을 때 전체 크기를 변경할 수 없다는 단점이 있다.
    하지만, 다른 자료구조보다 빠른 입출력이 가능한 장점이 있다.
fun main() {
	var intArr = arrayOf(1, 2, 3, 4, 5) // int배열
    var nullArr = arrayOfNulls<Int>(5)  // 비어있는 5개 크기의 Int형 배열
    
    int Arr[2] = 8 // index2에 8값 할당
}

조건문/반복문/흐름제어

  • Java와 완전 동일하다...
    다만 for 구문에서 차이점만 있다.
Kotlin
fun main() {
	for (i in 1..10) {
    	if (i==3) break
        print(i)
    }
}

Java
function main() {

	for (int i = 0; i <= 10; i++) {
    	if (i==3) break;
        prinfln(i);
    }
}
profile
기록은 기억을 지배한다.

0개의 댓글