Kotlin 기본 형, loop ,if
1. 변수 and …
▷ var 일반적인 변수 언제든지 읽기 쓰기가 가능함 à variable
▷ val 선언 시 초기화 가능, 중간에 값을 변경할 수 없음 à value
▷ 이 외의 Scope 내에 선언된 변수 Local Variable(로컬 변수)
▷ kotlin의 모든 함수는 expression 임 return 값이 있음 : void == Unit
2. 자료형
▷ 정수 : Byte, Short, Int, Long (8,16,32,64 bits)
· Long은 숫자뒤에 L 16진수는 0x1af 2진수는 0b10011101
· 실수 : Double(기본), Float(16비트) à 123.5 123.5f 123.5e10
▷ 문자 : 16비트 작은 따음표로 ‘a’
▷ boolean
▷ 문자열 : “”로 표시
▷ array vs list
· array( arrayOf ) : 크기 변경은 안되도 내용 변경은 가능
· list(listOf) : 내용, 크기 변경이 안됨(읽기 전용)
· arrayListOf 나 mutableListOf는 추가, 변경,삭제가능 à 같은 것임
3. 형 변환
▷ toByte(), toShort(), toInt(), toString(), toDouble 등
▷ 배열
fun typEx(){
var intArr = arrayOf(1,3,4,5,6)
var nullArr = arrayOfNulls<Int>(5)
intArr[2]= 8
println(intArr[2])
println(nullArr[2])
var numOfArr = intArr.count() // array의 개수 확인
var ml = mutableListOf(“abc”, “sort”, “book”, “biil1”, “book2”, “Roll”)
val c2 = ml.count { it.startsWith("b") }
val c3 = ml.count { it.last().isDigit() }
val sm = mutableSetOf(4, 3, 2, 1, 5, 6, 7)
val rs = sm.count { it >= 5 }
}
4. 타입추론(type inference)
▷ 자료형이 자동으로 지정됨
var a = 1234
var b = 1234L
▷ 함수
fun add (a: Int, b:Int, c:Int): Int {
return a + b + c
}
▷ 단일표현식(single expression)
fun add(a: Int, b:Int, c:Int) = a + b + c
5. 조건문(if, when)
fun main() {
var a : Int = 2
if (a >10) {
println("10보다 큼")
} else {
println("10보다 작음")
}
if (a > 10) println(“333”) else println(“23”)
}
a is Int // 형 비교 a가 Int 인가?
fun main() {
doWhen("나나")
doWhen(393L)
doWhen(33)
doWhen(394.22)
doWhen("아무거나")
}
fun doWhen(a: Any) {
var result = when(a) {
1 -> println("정수1임")
"나나" -> println("이름이 뭐니")
is Long -> println("Long 타입")
is Int -> println("정수입니다")
!is String -> println("String 타입 아님")
else -> println("어떤 것도 아님")
}
println(result)
}
fun main() {
whenEx(40)
whenEx(101)
}
fun whenEx(i : Int){
var result = when (i){
in 1..30 -> println("failed")
in 31..60 -> println("try again")
in 61..100 -> println("passed")
else -> println("not score")
}
println(result)
}
6. 반복문과 증감연산자
조건형 반복문
▷ while은 조건을 확인하고 수행
▷ do while 문은 조건 없이 한번은 do를 실행하고 조건에 따라 수행
fun afterWhile(){
var a = 0
while(a < 5){ print(a++) }
}
fun preAdd(){
var b = 0
while (b < 5){ print(++b) }
}
fun exDoWhile(){
var c = 0
do{ print("${c++} @") } while (c < 4)
}
범위형 반복문(for)
fun exFor(){
for(i in 0..9 step 2){
print("$i / ")
}
for(j in 'a'..'f' step 2){
print("$j char. ")
}
}
fun exForDown(){
for(i in 6 downTo -3 step 3){
print("$i downTo |")
}
}
7. 흐름제어와 논리연산자(return, break, continue, loop)
return
▷ 완전히 밖으로 나옴
fun reEx(){
for (i in 1..5) {
if(i==3) {
return println(i)
} else {
print("$i, ")
}
}
println("완전히 나가서 프린트 안됨")
}
beak
▷ 반복문이 실행되는 중간에 즉시 ‘종료’하고 다음 구문으로 넘어감
fun breakEx(){
for(i in 1..7){
if (i == 5) break
print("$i . ")
}
println(“..”) // 프린트 안됨
}
continue
▷ 다음 반복조건으로 즉시 넘어가는 역할을 수행, 뒤에 것 실행하지 않고 맨 위로 가서 수행
fun continueEx(){
for(i in 1..8){
if (i == 4 ) continue
print("$i . ")
}
println(" //") //이건 프린트됨
}
rootine(@loop)
fun loopBreak(){
for (i in 1..4){
for (j in 1..4){
if (i==1 && j==2) break
// 1,2 만 안나오고 다나옴, 이 for 문에서만 나감, 어디 까지 나갈지 지정해야함
println("i : $i, j: $j")
}
}
}
fun loopTo(){
loop@for (i in 1..4){
for (j in 1..4){
if (i==1 && j==2) break@loop
println("i : $i, j: $j")
}
}
}
논리 연산자(&&, ||, !)
▷ &&(and), ||(or) , !(not)
-------------------------------------------------
fun main() {
println(true && true)
println(true && false)
println(true || false)
println(!true)
}