코틀린 기초 - 1
차례 :
- a. 변수 상수 타입
- b. 조건문과 조건식
- c. functoin (함수)
a. 변수 상수 타입
1 변수 선언 방법
var experiencePoint : Int = 5 |
2 코틀린 내장 타입 : String, Char, Boolean, Int, Double, List, Set, Map
3 읽기 전용 변수 : val(value) vs var(variable)
4. 타입추론 (type inference)
초기값을 지정하는 경우에 해당 변수의 타입을 생략할 수 있게 해주는 기능 var experiencePoint = 5 |
5 const : val 앞에 추가하면 이 변수의 값이 절대 변경되지 않는다는것
ex) const val MAX_EXPERIENCE
b. 조건문과 조건식
< <= > >= == != 생략
=== !== 자바에서는 string 같은 것을 비교할때는 == (주소값을 비교함) String a = "hi" // 주소값 : 1번지 String b = "hi" // 주소값 : 2번지 System.out.println(a==b) // false equal (자바에서는 두 객체(참조 타입)의 동등성을 알기 위해서 equals를 호출해야 한다.) kotlin 에서는 == 에 equal 개념이 들어가있음 (String 비교에서 조차) 대신 === 이 자바에서의 == 역할을 한다. === !=== (왼쪽 오른쪽 두개의 인스턴스가 같은 객체인지 아닌지 검사한다) |
2 kotlin 에서의 범위 표현 (ex in 1..10 1<=x <=10)
val healthStatus = if (healthPoints == 100) { "Best" } else if (healthPoints in 11..99) { "Best and Worst" } else { "worst" } |
3. when 표현식
3개이상의 조건분기에 적합함. if else의 간결한 버전이랄까?
val healthStatus = when(healthPoints){ 100 -> "Best" in 90..99 -> "good" in 20..89 -> if(isBlessed){ "중간 그리고 치유중" } else { "중간 그리고 안치유중" } in 10..19 -> "bad" else -> "worst" } |
4 문자열 템플릿
문자열 템플릿을 사용하면 문자열 값 안에 변수의 값을 포함시킬수 있다.
$기호가 문자열 템플릿을 나타냄. 그리고 ${} 괄호안에 표현식도 가능
println("이름 $name 건강상태 $healthStatus ${if (isBlessed) "blessed" else "no-blesssed"}")
functoin (함수)
fun formatHealthStatus(healthPoints: Int, isBlessed: Boolean): String {
return healthStatus
}
미리 default 값을 넣어줄수도 있음.
fun formatHealthStatus(healthPoints: Int = 3): String {
return healthStatus
}
함수 이름은 카멜 표기법을 사용하는게 좋다네.
local variable : 함수 내부에서만 존재하는 변수, 함수 실행이 끝나면 소멸
Unit 함수 : void 함수 개념같음.
Nothing 타입:
- 함수의 실행이 끝나더라도 호출 코드로 제어가 복귀 되지 않는다
- exception을 발생시킬때 사용가능(TODO 함수랑)
fun shouldReturnAString(): String { TODO("문자열을 변환하는 코드를 여기에 구현해야 함") } |
- 아직 다른게 완성 안되서 만들지 못할 경우 씀
파일수준함수 : 자바 vs 코틀린
-> 자바에서는 클래스 내부에서만 함수와 변수를 정의할수 있었다
-> but 코틀린에서는 클래스에 얽매이지 않고 외부에도 함수와 변수 정의 가능!!!
함수 오버로딩(function overloading): 자바랑 똑같음
ex) fun performcombat() {}, fun performcombat(enemyName: String){}
단일 표현식 함수 : 중괄호와 몸체를 return 생략 가능
fun chapter4(a:Int, b: Boolean) = when (healthPoints) { 100 -> "good" in 10..99 -> "soos" else -> "bad" } |