안드로이드 스튜디오 저장경로오류로 어제 만든 계산기 통째로 사라졌다....깃헙에 업로드 안해놨으면 어쩔뻔
접근제한자
AccessTestClass 클래스 안에 여러 접근제한자를 적용한 변수를 만들어 놓음
이 클래스를 같은 패키지안의 Test.kr 파일에서 호출할 때
변수 a, b, d 만 호출가능한 것을 확인할 수 있다. public인 a, b 는 당연히 가능하고
internal 로 제한된 변수 d 는
app 이라는 모듈 안에 같이 포함되어있기 때문에 호출가능한 것
AccessTestClass 클래스를 상속받은 AccessTestChildClass 클래스 에서 불러올 수 있는 변수는?
private 인 c를 제외하고는 호출이 가능하다.
protected인 e 는 부모 클래스를 상속받았기 때문에 Test.kr 의 경우와 달리 호출이 가능한 것
예외처리의 활용
과제로 만든 계산기 기능에서
숫자를 입력받는 과정에 숫자가 아닌 문자를 입력받으면 어떻게 뜰까?
java.long.NumberFormatException 오류가 뜬다.
그러면 이 경우는 예외처리를 통해 문자의 입력을 막을 수 있다.
연산자를 입력하는 부분에서는 ?
입력받은 숫자를 문자열로 처리할 수 있기때문인지 when조건식의 else 로 넘어가서 나머지를 구한다.
지연초기화
Kotlin 에서는 항상 생성자에서 null 이 아닌 속성을 초기화시켜주어야 한다.
""와 같이 공백으로 처리하는 것은 가독성에 좋지 X
이 때 초기의 값을 나중에 대입하기 위한 문법이 지연초기화, 늦은 초기화라고 한다.
변수var : lateinit / 상수 val : lazy
Int 타입의 변수 age 와 nullable 에 lateinit 선언을 해줬더니 위와 같은 오류가 뜬다.
'lateinit' modifier is not allowed on properties of primitive types/nullable types in Kotlin
isInitialized 를 활용해서 값이 초기화되었는지 확인할 수 있다.
상수의 지연초기화 lazy
상수를 사용하는 시점에 값을 대입하고 초기화 수행
처음 : address 초기화 / seoul
이후 : seoul
lateinit 참고
: Why Kotlin lateinit Can’t Be Used With Primitive Types
https://www.baeldung.com/kotlin/lateinit-primitive-types
Kotlin 의 primitive types
- Boolean
- Byte
- Char
- Double
- Float
- Int
- Long
- Short
널 세이프티
널이란???
널이면 호출이 안된다.
readline()!! : null 허용
readln() : null 허용X
https://kotlinlang.org/docs/whatsnew16.html#new-readline-functions
'왕초보일지' 카테고리의 다른 글
231208 TIL (1) | 2023.12.08 |
---|---|
231207 TIL (0) | 2023.12.07 |
231205 TIL (0) | 2023.12.05 |
231204 TIL (0) | 2023.12.04 |
231201 TIL (0) | 2023.12.01 |