Kotlin

silvergun8291·2022년 11월 24일
0

Android

목록 보기
1/2

변수 선언

val 변수명:타입 =var 변수명:타입 =

var 키워드와 다르게 val 키워드로 선언한 변수는 값을 수정할 수 없습니다.



초기값 할당

val data1:Int	// Error
val data2 = 10
.
.
fun main() {
	...
}
class User {
	val data4: Int	// Error
    val data5: Int = 10

최상위에 선언한 변수나 클래스의 멤버 변수는 선언과 동시에 초기값을 할당해야 합니다.


초기화를 미룰려면 lateinit이나 lazy 키워드를 이용해야 합니다.

lateinit var data:String
val data:Int by lazy {
	println("in lazy...")
    10	// 10으로 값이 초기화 됨
}


데이터 타입

Int, Short, Long, Double, Float, Byte, Boolean, Char, String

val a1:Byte = 0b00001011
val a2:Int = 123
val a3:Short = 123
val a4:Long = 10L
val a5:Double = 10.0
val a6:Float = 10.0f
val a7:Boolean = true
val a8:Char = 'a'
val a9:String = "Hello"


출력

print("Hello")		// "Hello" 출력
println("Hello")	// "Hello\n" 출력

fun main() {
	var str = """
    Hello
    World!
    """
    
    println("$str")
}
    Hello
    World!

원래 문자열 안에서 줄 바꿈이나 들여쓰기를 하려면 \ 를 이용해야 하지만, """를 사용하면 문자열 안의 들여쓰기나 줄바꿈이 모두 반영됩니다.


fun main() {
	var a:Int = 5
    var b:Int = 10
    
    fun sum(a:Int, b:Int):Int {
		return a + b
	}
    
    println("$a + $b = ${sum(a, b)}, plus = ${a + b}")   
}
5 + 10 = 15, plus = 15

String 타입의 데이터에 변수값이나 어떤 연산식의 결과값을 포함해야 할때는 $기호를 이용할 수 있습니다.



Any - 모든 타입 가능

Any는 코틀린에서 최상위 클래스이기 때문에 모든 타입의 데이터를 할당할 수 있습니다.

val data1:Any = 10
val data2:Any = "Hello"


Uint - 리턴값 없는 함수

리턴값이 없는 함수를 선언할 경우 타입을 Uint로 지정하거나 타입을 생략할 수 있습니다.

fun hello:Uint {
	println("Hello")
}
fun world {
	println("world")
}


Nothing - null이나 예외를 반환하는 함수

val data:Nothing? = null

Nothing으로 선언한 변수에는 null만 대입할 수 있습니다. Nothing으로 선언한 변수는 데이터로서의 의미가 없습니다.


fun some1():Nothing? {
	return null
}
fun some2():Nothing {
	throw Exception()
}

Nothing은 주로 함수의 반환 타입에 사용합니다.
항상 null만 반환하는 함수나 예외를 던지는 함수의 반환 타입에 Nothing을 사용합니다.



널 허용과 불허용

코틀린의 모든 타입은 객체이기 때문에 변수에 null을 대입할 수 있습니다. 그래서 널 허용인지 불허용인지 명확히 구분 해야합니다.
타입 뒤에 ?를 붙이면 널 허용으로 선언할 수 있습니다.

var data1:Int = null	// Error
var data2:Int? = null	// Not Error


함수 선언

fun 함수명(매개 변수명:타입): 반환 타입 {
	...
}
 fun some(data1:Int): Int {
 	return data1 * 10
}

반환 타입을 생략하면 Uint가 됩니다.

fun some(data1:Int = 0, data2:Int = 0): Int {
	return data * data2
}

매개변수의 기본값을 설정할 수 있습니다.

some(data2 = 20, data1 = 10)

매개 변수명을 지정하여 호출을 할 수 있습니다.
이것을 명명된 매개변수라고 합니다.



컬렉션 타입

컬렉션이란 여러 개의 데이터를 표현하는 방법으로 Array, List, Set, Map이 있습니다.


Array - 배열

배열 선언

Array<Type> = Array(Size, value)

val data1:Array<Int> = Array(3, {1, 2, 3})

배열 데이터 접근

fun main() {
	val data: Array<Int> = Array(3, {0})
	data[0] = 10
	data[1] = 20
	data.set(2, 30)
    
    println(
    """
    array size : ${data.size}
    array data : ${data[0]}, ${data[1]}, ${data.get(2)}
    """
    )
}
array size : 3
array data : 10, 20, 30

배열의 데이터에 접근할 때는 []를 이용해도 되고 set()이나 get() 함수를 이용할 수 도 있습니다.


기초 타입의 배열

배열을 선언할 때 기초 타입의 배열을 나타내는 클래스를 이용할 수도 있습니다.

BooleanArray, ByteArray, CharArray, DoubleArray, FloatArray, IntArray, LongArray, ShortArray

val data1: IntArray = IntArray(3, {0})
val data2: BooleanArray = BooleanArray(3, {false})

val data1 = arrayOf<Int>(10, 20, 30)

arrayOf() 함수를 이용하여 배열을 선언할 때 값을 할당할 수 있습니다.


arrayOf() 함수도 기초 타입을 대상으로 하는 booleanArrayof(), byteArrayOf(), charArrayOf(), doubleArrayOf(), floatArrayOf(), intArrayOf(), longArrayOf(), shortArrayOf() 함수를 제공합니다.

val data1 = intArrayOf(10, 20, 30)
val data2 = booleanArrayOf(true, false, true)

0개의 댓글