이 개념부터 확실하게 알아야 코틀린을 이해할수 있다.프로퍼티 = 필드 + 접근자var(Variable) : 가변 변수, getter & setter 선언 가능val(Value): 불변 변수, getter만 선언가능(read-only)address와 price를 갖고 있
기존 클래스 내용을 수정하지 않고도 추가 기능을 사용하기 위함이다.상속 받거나 기존 클래스에 메소드 및 프로퍼티를 구현해도 될텐데 왜 확장을 사용하는 걸까? 수정할 수 없는 라이브러리를 만들때 유용하게 사용된다.코드의 가독성 향상, 유연성, 재사용성이 좋다는 장점이 있
동등성: 참조가 가르키는 객체의 정체성(identity)이 같다. ==를 사용시 내부적으로 .equals()를 호출한다.동일성: 두 객체가 참조하고 있는 주소값이 같다. ===로 주소값을 비교한다.→ 자바에선 == 사용시 주소값을 비교(동일성)을 하지만 코틀린은 동등성
코틀린 표준 라이브러리는 객체의 컨텍스트 내에서 코드를 실행할 수 있는 함수들을 제공한다. 람다 표현식과 함께 호출되면 일시적인 Scope가 형성된다. 객체의 이름없이 접근 할 수 있으며 대표적으로 let, run, with, apply, also가 있다.let: no

멀티스레드 환경에서 여러 스레드가 자원에 접근할 때, 올바르게 동작하도록 보장한다는 것을 의미.Mutual Exclusion, Atomicity, Visibility, Sequential Consistency를 만족해야 한다.Blocking vs Non-Blocking