이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.
작성자 : 김은비
개발환경은 Windows, Android Studio입니다.
섹션3 : 코틀린 기초 QUIZ
1. 퀴즈 1
- 다음 데이터 유형 중 숫자로 사용할 수 있는 것은?
- String, Int, Double
- Double, Int, Boolean
- Double, Int, Float
- String : 문자열
Boolean : 참(true)과 거짓(false)
Int : 정수형 (4Byte)
Float : 실수형 (4Byte)
Double : 실수형 (8Byte)
Short, Long, Byte 등
- String : 문자열
- 이 변수는 어떤 데이터 유형인가요?
val pi = 3.14159
- Int
- Float
- Double
-
형식 자료형 크기 값의 범위 실수형 Double 8bytes
(64bits)1.79E-308 ~ 1.79E+308 Float 4bytes
(32bits)3.4E-38 ~ 3.4E+38
-
- Long
- 코틀린에서 텍스트 변수를 생성하는 방법은?
- var text = Hello World
- var text = “Hello World”
- var 변수명 = “원하는문구”
-> 문자 하나만 표현할 때는 ‘ ‘ 사용 (ex, ‘a’)
하지만 특수문자를 포함한 문자열을 한 번에 표현할 때는 “ “ 사용
- var 변수명 = “원하는문구”
- var text = ‘Hello World’
- 코틀린에서 텍스트 변수를 생성하는 방법은?
val age = 30
age = 31
- there is nothing wrong with the code.
- val indicates that is a immutable, which means it cannot change its value after initialization.
- val = 불변
-> 초기화 후 값을 변경할 수 없음
따라서 값을 변경하고 싶으면
초기화 시, var을 사용해야함
- val = 불변
- 데이터 유형이 중요한 이유는 무엇입니까?
- 사용하는 데이터 유형에 따라 변수에는 서로 다른 양의 “space/storage”가 필요하기 때문입니다.
- 변수가 특정 데이터 유형이면(최소한 다른 작업 없이는) 다른 유형의 데이터를 할당할 수 없기 때문입니다.
- 위 두 보기가 모두 정답입니다.
- 코틀린에서 모든 타입은 객체 !
-> 각각의 데이터는 자신만의 특성이 있음
-> 특성에 맞춰 그 데이터의 크기에 맞는 작업 공간(메모리 공간)을 준비해야 함
- 코틀린에서 모든 타입은 객체 !
- 밑의 예제에서 “name” 변수의 값은 무엇인가요?
val name : String = “denis”
name = “Panjuta”
- Denis
- Panjuta
- 컴파일 에러
- 안드로이드 개발환경에서는 “val” 덮어쓰기를 지원하지 않아 컴파일타임 에러가 발생
- 런타임 에러
2. 퀴즈 2
- 이 코드는 무엇을 출력하나요?
fun main() {
var age = 25
if (age > 17){
println("you may vote")
}else if(age > 20){
println("you may drink")
}else{
println("don't drink and vote ;)")
}
}- you may vote
- 첫 번째 조건이 충족되면 코드가 전체 블록에서 빠져나오기 때문에 오직 “you may vote”만 출력되고, else if(age > 20)는 작동하지 않습니다
- 첫 번째 조건이 충족되면 코드가 전체 블록에서 빠져나오기 때문에 오직 “you may vote”만 출력되고, else if(age > 20)는 작동하지 않습니다
- you may drink
- you may vote
you may drink - don’t drink and vote ;)
- you may vote
- x의 값은 무엇인가요?
val value = 1;
var x = "aah"
if(value > 5) {
if(value <2) {
x = "oh"
}
}- “oh”
- “aah”
- value 값이 if문 조건에 충족하지 않았기 때문에 변하지 않음
- value 값이 if문 조건에 충족하지 않았기 때문에 변하지 않음
- 이 “when 식”에서 빠진 것은 무엇인가요?
fun main() {
var age = 25
when (age){
in 21..100 -> println("Swiftey")
in 15..20 -> println("just do it")
}
}- 아무것도 빠지지 않았습니다
- 0과 15 사이의 나이
- 100 이상의 나이
- “else” 로 얻어낸 디폴트 값
- when에서 else는 switch문에서 default: 와 동일한 역할을 하기 때문에 else 필요
- when에서 else는 switch문에서 default: 와 동일한 역할을 하기 때문에 else 필요
- 다음 중 코드 블록이 올바르지 않은 경우에 사용하는 코드는 무엇입니까?
- in 21..100 -> println(“swifty swiftkey”)
- else -> perintln(“poodle doodle”)
- in 13,14 -> println(“the teen of ages have begunnnn”)
- in start .. end -> ~~~
- 13,14 -> println(“the teen of ages have begunnnn”)
3. 퀴즈 3
- 이 루프는 무엇을 출력합니까?
for(i in 1 until 10 step 2) {
print("$i ")
}- 13579
- 1 3 5 7 9
- 1부터 시작 (10까지)
-> 2씩 증가
-> “&i “ 출력
- 1부터 시작 (10까지)
- 246810
- 2 4 6 8
- 이 루프는 무엇을 출력합니까?
var x = 1
while(x <= 10) {
print("$x")
if (x == 4){
x = 10
}
x++
}- 1 2 3 4 5 6 7 8 9 10
- 12345678910
- 1234
- 1부터 시작 (10까지)
-> “&x“ 출력
-> x == 4 이면 x = 10
-> 1씩 증가
- 1부터 시작 (10까지)
- 이 루프의 문제점은 무엇입니까?
var z = 12
do {
print("$z ")
} while(z <= 10)- z는 절대 10보다 낮지 않음으로 루프가 작동되지 않습니다
- z는 반복 가능한 수의 잘못된 명칭입니다
- 조건이 맞지 않을 때의 환경설정을 하지 않아 루프는 절대 멈추지 않습니다
- z = 12
-> but, z 가 10보다 작거나 같을 때 까지 반복
-> z의 값은 변경되지 않으므로 무한 루프
- z = 12
- 아래 코드에서 printIn 식은 몇 번 수행됩니까?
for (x in 0..9) {
for (y in 0..9) {
println("Result = ${x * y}")
}
}
- 100
- 0 ~ 9 까지 10번 반복 * 2
-> 10 X 10 = 100
- 0 ~ 9 까지 10번 반복 * 2
- 81
- 45
- 9
- 100
- 아래의 예제에서 x의 값은 무엇입니까?
var x = 0
for (y in 0..9) {
x += y
}
println("$x")- 0
- 45
- 0 ~ 9 까지 모두 더함
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
= 45
- 0 ~ 9 까지 모두 더함
- 36
- 54
4. 퀴즈 4
- 이 함수에 “Denis”와 “30”의 인수를 사용하면 무엇이 출력되나요?
fun sayHello(name: String, age: Int){
println("Hi $name, I heard you are $age years old, is that right?")
}
- Hi $name, I heard you are $age years old, is that right?
- Hi name, I heard you are age years old, is that right?
- Hi Denis, I heard you are 30 years old, is that right?
- $ {변수} : 코틀린에서 특정 변수값을 삽입할때 사용
문자열에서 $ {변수} 를 삽입해서 특정 형식으로 데이터를 포맷해서 출력할 수 있음
- $ {변수} : 코틀린에서 특정 변수값을 삽입할때 사용
- 이 코드는 :
fun main() {
var moduloVar = moduloFun(5,3)
}
fun moduloFun(num1: Int, num2: Int): Int{
return num1%num2
}- 2를 출력할 것입니다
- 2로 moduloVar을 초기화 합니다
- moduloFun함수를 호출하여 return 값을 moduloVar 변수에 저장하기 때문
- “num1%num2”를 출력할 것입니다
- 이 코드는 무엇을 출력합니까?
fun main() {
var isConnected = connect(5)
print(isConnected)
}
fun connect(num1: Int): Boolean{
var result = false
if(num1 > 0){
result = true
}
return result
}- true
- connect함수를 호출하여 5를 전달하는데, 이 인자는 if문에 충족하기 때문에 return 값을으로 true를 반환하여 isConnected 변수에 저장하기 때문
- false
- result
- true
- 왜 널러블들이 코틀린에 도입되었습니까?
- null인 코드는 무시될 수 있기 때문입니다
- null은 0이고 언제나 필요하지 않기 때문입니다
- NullPointExceptions를 방지하거나 최소화하여 코드를 쓸 수 있기 때문입니다
- 널러블을 통해 런타임 시 발생할 수 있는 NullPointerExeption을 런타임이 아닌 컴파일 시점에서 방지 가능
- 널러블을 통해 런타임 시 발생할 수 있는 NullPointerExeption을 런타임이 아닌 컴파일 시점에서 방지 가능
- 이 코틀린 코드의 문제점은 무엇입니까?
val name: String = null- 문제가 없습니다
- “name”값이 “null”값에 대응하려면 널러블이어야하기 때문에, 컴파일되지 않을 것입니다
- 널러블 타입을 사용하고 싶으면, 모든 타입 이름 끝에 ? 를
붙이면 됨
ex) val a : int? = n
- 널러블 타입을 사용하고 싶으면, 모든 타입 이름 끝에 ? 를
- 코틀린에서는 null 값을 변수에 대응시킬 수 없기 때문입니다.
'GDSC HUFS 4기 > Kotlin Team #3' 카테고리의 다른 글
[3팀] Android-12-kotlin Interface and Abstract class (1) | 2022.10.07 |
---|---|
[3팀] Android-12-Kotlin: Conditions and Loops (0) | 2022.10.03 |
[3팀] Android-12-Kotlin: 변수설정과 데이터 유형 (0) | 2022.10.03 |
[3팀] Android-12-Kotlin: Nullable (0) | 2022.10.02 |
[3팀] Android-12-Kotlin: 산술 연산자와 유형의 중요성 ~ When 식 (0) | 2022.10.02 |