소개
코 틀린은 개체가 두 가지로 구분 될 수 있고, 비 - 널 객체 될 수있다 빈 목적
기본값은 널 빈 객체를 부여하지 발견되면, 오류가 빨간색으로 표시됩니다 감지 null 이외의 오브젝트 코드입니다.
객체는 메소드를 호출하는 경우, 오류 코드 탐지는 빨간색으로 표시되고, 비어있을 수 있습니다
var s: String = "hello" //不可为空
s = null//标红报错
var s: String? = "hello"
s=null //代码检测通过
println(s.length)//标红报错
전화는 빈 객체의 속성 또는 메서드를 할 수있다
이점은 우리가 객체가 비어 있지해야합니다 경우, 우리가 널 포인터 오류없이 메서드를 호출 할 수 있다는 것입니다.
우리는 개체의 빈 속성을 호출해야하는 경우에, 그것을 어떻게 할까?
우리는 null 객체가있는 방법, 코드 오류 감지 모노그램 레드, 그래서, 코 틀린를 호출하는 경우 우리가 속성을 호출하거나 방법은 빈 객체가 될 수있는 몇 가지 방법을 제공 것을 알고 위
1. 빈 판단 조건의 경우 (XX! = NULL)
var s: String? = "hello"
if(s!=null){
println(s.length)
}
2. 안전 호출?
사용 ?.
목적이 비어있는 경우, 당신은 null을 얻을 것이다, 그러나이 프로그램은 멈추지 않을 것입니다
어딘가에 개체가 비어 체인 통화 지원, null가 돌려 주어집니다
var s: String? = "hello"
println(s?.length) //s为空,则返回null,否则返回s.length
println(s?.length+1) //这里代码检测会报错
println(s?.length?.plus(1)) //修改之后的,通过代码检测
3. 엘비스 연산자?
브로 일 = 1 식 2 식 :?
식 (1)가 null의 경우, 표현은 반환이 내용을 반환
val l: Int = if (b != null) b.length else -1
//相当于上面的代码
//如果b为空,则返回l=-1,b不为空,l=b.length
val l = b?.length ?: -1
4. !!
개체, 컴파일 (오류 코드 힌트) 비어 있지만, 실행 시간은 널 포인터 예외가 발생합니다
var s: String = null
pritnln(s!!.length) //运行时候回报错