1. if문

java와 문법은 동일하다.

  1. Expression과 Statement

포함관계

expression : 하나의 값으로 도출되는 문장

statement : 프로그램의 문장, 하나의 값으로 도출되지 않는다.

int score = 30 + 40
// 30+40은 expression 이면서 statement

String grade = if (score >= 50) {
	return "P";
} // 자바에서 이런건 안된다. statement다.

String grade = score >= 50 ? "P" : "F"; // 3항연산자는 하나의 값으로 취급하므로 expression이면서 statement

java에서 if-else는 statement이지만,

kotlin에서는 expression이다.

따라서 아래 코드가 가능하다. 그리고 3항 연산자가 없다!!

fun getPassOrFail(score: Int): Strin {
	return if (scores >= 50) {
		"P"
	} else {
		"F"
	} // 이 부분이 expression
}
  1. switch와 when

자바의 switch 가 코틀린에선 더 강력한 when으로 대체되었다.

when (val) {
  "a" -> println("a")
  "b" -> println("b")
  else -> println("null")
}
fun compareNum2(x: Int, y: Int) = if (x>y) x else y

// 두개 동일한 함수
fun strNum(x: Int?): String {
	when (x) {
		1 -> return "One"
		2 -> return "Two"
		3 -> return "Three"
		else -> return "???"
	}
}

fun strNum2(x: Int?) =
	when (x) {
		1 -> "One"
		2 -> "Two"
		3 -> "Three"
		else -> "???"
	}
}

// when 내부 조건절 여러 형식으로 응용
fun strNum3(x: Int?) =
	when (x) {
		in 0..3 -> println("숫자")
		4,5 -> println("사오")
		is String -> println("문자열")
		else -> println("흐음")
	}
}

// when에 조건이 없으면 내부에 조건으로 가능..
fun strNum4(x: Int?) =
	when {
		x % 11 == 0 -> println("11의 배수")
	}
}

Enum class. Sealed Class와 함께 사용하면 더욱더 좋다.(나중에)