nullable
Safe Call / Elvis Operator
fun main() {
var nullableName: String? = "sunghyeon"
// nullableName = null
var len2 = nullableName?.length
nullableName?.let { println(it.length) }
// nullableName이 null이 아닐 때, sunghyeon의 폰트 수를 출력
val name = nullableName ?: "Guest"
println("name is $name")
// null일 경우에 ?: 뒤의 값이 출력된다.
println(nullableName!!.toLowerCase())
// non-null타입. 변수에 값이 있다고 확신할 때 사용함
}
- safe call : '?.'은 호출하려는 값이 null이 아니면 그대로 메소드가 호출됨. 그 반대면 호출은 무시되고 null값을 반환
- 엘비스 연산자 : '?:' 변수가 null이 아니면 초기화 한 값이 입력되고, null인 상태이면 ?: 뒤의 값이 들어간다.
- non-null : '!!'을 사용하여 non-null 타입으로 변경시킨다. 절대 null일 수 없다고 확신할때 사용한다.
Class
클래스 생성의 예 (부 생성자 사용)
fun main() {
var sunghyeon = Person("sunghyeon", "Kim")
var gilDong = Person2() //기본값이 지정되었기에 gildong hong으로 출력됨
var baksa = Person2(firstName = "baksa") // 기본값 중 한가지만 바꿔도 홍박사가 출력된다.
}
class Person constructor(firstName: String, lastName: String) {
init { //이니셜라이저는 객체를 시작하기 위해 사용한다. 즉, 객체를 준비하기 위한 과정
println("Initialized a new Person object with firstName = ${firstName} and lastName = ${lastName}")
} // 위의 부 생성자를 사용할 때 변수를 만드는 것이라고 보면 됨
}
class Person2 constructor(firstName: String = "Gildong", lastName: String = "Hong") {
init { // 매개변수에 default 값을 줄 수 있다.
println("Initialized a new Person object with firstName = ${firstName} and lastName = ${lastName}")
}
}
- sunghyeon kim이라는 사람을 생성
- 매개변수에 default를 지정해 사람을 생성
- default 를 준 매개변수 중 한가지를 변경해서 사람을 생성
이번주는 확실히 망한 주다. 어제는 사실 딴짓하느라 공부한게 딱히 없어 TIL 작성을 할 게 없다.
새벽에 기초강의 반복문까지 복습.. 오늘은 null과 객체지향 기초를 복습하고 있다.
null은 객체지향 개념이 아직 이해되지 않아서 그런지 그렇구나 하는정도밖에 이해하지 못했다.
주말동안 객체지향 공부와 코딩테스트를 하며 객체지향 공부를 빠삭하게 해야겠다.
다음 주 스프링 강의 시작인데, 문법공부가 완전히 되지않아 걱정이다. 문법책을 계속 피게 될 것 같네...
평일에 망한 공부 주말에라도 좀 해서 수습을 해야겠다.
'Kotlin' 카테고리의 다른 글
내일배움캠프 12.19 TIL (1) | 2023.12.22 |
---|---|
내일배움캠프 12.18 TIL (1) | 2023.12.22 |
객체지향 프로그램 기초개념 5가지 (1) | 2023.12.22 |
내일배움캠프 12.13 TIL (2) | 2023.12.22 |
내일배움캠프 12.12 TIL (2) | 2023.12.22 |