Lesson 1: Kotlin basics
💡 Teach Android Development
구글에서 제공하는 교육자료를 정리하기 위한 포스트입니다.
Operators
수학 연산자
+ - * / %
증가 및 감소 연산자
++ --
비교 연산자
< <= > >=
할당 연산자
=
등호 연산자
== !=
Data types
Integer types
정수형 타입의 경우 Int
의 범위를 넘어서지 않으면 Int
로 초기화되고 넘어설 경우 Long
으로 초기화 됩니다.
val one = 1 // Int
val threeBillion = 3000000000 // Long
val oneLong = 1L // Long
val oneByte: Byte = 1
Floating-point types
소수 부분이 있는 숫자로 초기화할 수 있으며, 마침표로 구분됩니다. 소수로 초기화된 경우 Double
로 판단합니다.
val pi = 3.14 // Double
// val one: Double = 1 // Error: type mismatch
val oneDouble = 1.0 // Double
val e = 2.7182818284 // Double
val eFloat = 2.7182818284f // Float, actual value is 2.7182817
Characters and Boolean
Characters
- 16bits
- 16-bit Unicode character
- 작은 따옴표로 묶습니다.
'1'
- 특수문자는 escaping backslash로 시작합니다.
\
val aChar: Char = 'a'
println(aChar) // a
println('\n') // prints an extra newline character
println('\uFF00') //
Boolean
- 8bits
- True or false 두가지 값을 가질 수 있습니다.
- 연산 작업에 활용
- ||– disjunction (logical OR)
- &&– conjunction (logical AND)
- !- negation (logical NOT)
val myTrue: Boolean = true
val myFalse: Boolean = false
val boolNull: Boolean? = null
println(myTrue || myFalse) // true
println(myTrue && myFalse) // false
println(!myTrue) // false
Type casting
- toByte(): Byte
- toShort(): Short
- toInt(): Int
- toLong(): Long
- toFloat(): Float
- toDouble(): Double
- toChar(): Char
val b: Byte = 1 // OK, literals are checked statically
// val i: Int = b // ERROR
val i1: Int = b.toInt()
note: 긴 숫자의 경우 Underscores를 활용할 수 있습니다.
val oneMillion = 1_000_000
val idNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010
String
일반적으로 큰따옴표("
)로 묶인 문자열이며 escaped 문자를 표함할 수 있습니다.
val s = "Hello, world!\n"
원시 문자열은 삼중따옴표 (""")
를 사용해 escaped 문자를 포함하지 않으며 줄 바꿈 및 기타 문자를 포함할 수 있습니다.
val s = """
Hello, world!
"""
String templates
템플릿 표현식은 달러 기호($)
로 표시되며 간단한 값을 사용할 수 있습니다.
val i = 10
println("i = $i") // prints "i = 10"
표현식의 경우 중괄호로 묶어 사용합니다.
val s = "abc"
println("$s.length is ${s.length}") // prints "abc.length is 3"
원시 문자열과 escaped 문자열에 모두 사용할 수 있으며 일반적인 $
를 사용할 때 아래와 같이 표현합니다.
val price = """
${'$'}_9.99
"""
val price = "\$_9.99"
val price = "${'$'}_9.99"
Variables
변수 선언 시 컴파일러가 유형을 추론하며, 필요한 경우 명시 할 수 있습니다.
var width = 12 // Int
var widthInt: Int = 12 // Int
가변, 불변 변수를 선언할 수 있습니다. ( 불변 변수를 강제하지 않지만 추천됩니다. )
- Mutable (가변)
var count = 1
count = 2
- Immutable (불변)
val size = 1
size = 2 // Error: val cannot be reassigned
Conditionals
if/else statements
// multiple cases
val guests = 30
if (guests == 0) {
println("No guests")
} else if (guests < 20) {
println("Small group of people")
} else {
println("Large group of people!")
}
// Range
val numberOfStudents = 50
if (numberOfStudents in 1..100) {
println(numberOfStudents)
}
// As expression
val max = if (a > b) a else b
When statement
개발을 진행할 때 자주 쓰이므로, 다양한 예시를 익혀두면 좋을 것 같습니다.
when (results) {
0 -> println("No results")
in 1..39 -> println("Got results!")
40, 41 -> println("Results 40, 41!")
!in 42..45 -> print("results is outside the range")
else -> println("That's a lot of results!")
}
For loops
// Using element
for (item in collection) print(item)
// Using index
for (i in array.indices)
println(array[i])
}
// Using both
for ((index, value) in array.withIndex()) {
println("the element at $index is $value")
}
// Range
for (i in 1..3) {
println(i)
}
// Down and step
for (i in 6 downTo 0 step 2) {
println(i)
}
While loops
while
과 do-while
루프는 조건이 만족되는 동안 계속해서 구문을 실행합니다.
while
은 조건을 확인한 뒤, 만족되면 구문을 실행합니다.do-while
은 구문이 실행된 다음 조건을 확인한다. 조건에 관계없이 한 번 이상 실행됩니다.
var bicycles = 0
while (bicycles < 50) {
bicycles++
}
do {
bicycles--
} while (bicycles > 50)
Repeat loops
repeat(2) {
print("Hello!")
}
Lists and arrays
Lists
- 정렬된
elements
의 모음입니다. elements
는 인덱스를 통해 접근할 수 있습니다.elemesnts
는 중복이 가능하며 순서가 중요합니다.
Immutable list
listOf()
를 사용해 불변 리스트를 선언할 수 있습니다.
val instruments = listOf("trumpet", "piano", "violin")
myList.remove("violin") // Error
Mutable list
mutableListOf()
를 사용해 가변 리스트를 선언할 수 있습니다.
val myList = mutableListOf("trumpet", "piano", "violin")
myList.remove("violin")
note:
val
로 선언된 경우list
자체를 변경할 순 없지만,list
안의 속성은 변경할 수 있습니다.
Arrays
- 여러 항목을 저장할 수 있습니다.
elements
는 인덱스를 통해 접근할 수 있습니다.elements
는 변경 가능합니다.- 크기가 고정되어 있습니다.
arrayOf()
를 통해 생성할 수 있습니다.
val pets = arrayOf("dog", "cat", "canary")
Arrays with mixed or single types
val mix = arrayOf("hats", 2)
val numbers = intArrayOf(1, 2, 3)
Combining arrays
+
연산자를 사용해 결합할 수 있습니다.
val numbers = intArrayOf(1,2,3)
val numbers2 = intArrayOf(4,5,6)
val combined = numbers2 + numbers
println(Arrays.toString(combined)) // [4, 5, 6, 1, 2, 3]
Null safety
Kotlin은 null 참조 위험을 제거하는 것을 목표로 합니다.
Variables cannot be null
기본적으로 variables
에서 null은 허용되지 않습니다.
var numberOfBooks: Int = null
// error: null can not be a value of a non-null type Int
Safe call operator
safe call operator(?)
를 통해 variable
에 null을 명시 할 수 있습니다.
var numberOfBooks: Int? = null
Testing for null
numberOfBooks
이 null이 아닌지 확인한 뒤 값을 줄입니다.
var numberOfBooks = 6
if (numberOfBooks != null) {
numberOfBooks = numberOfBooks.dec()
}
safe call operator를 사용한 방식입니다.
var numberOfBooks = 6
numberOfBooks = numberOfBooks?.dec()
The !! operator
variable
가 null이 아닌 것이 확실한 경우 사용할 수 있습니다. 만약 variable
이 null일 경우 NullPointerException
이 발생하니 주의해야합니다. (특별한 상황을 제외하고는 사용하지 않는 것을 추천합니다.)
val len = s!!.length
// s 값이 널일 경우 NullPointerException 발생
Elvis operator
(?:)
operator를 사용하여 null인 경우를 처리할 수 있습니다
val l = b?.length ?: -1
참조
Author And Source
이 문제에 관하여(Lesson 1: Kotlin basics), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haanbink/Lesson-1-Kotlin-basics저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)