범위 지정 메소드 범위 연산자 (..) rangeTo 메소드 위 연산자와 메소드는 같은 역할을 한다. 두 수, 두 문자, 두 문자열 사이를 지정해 두 항목을 포함한 범위 객체를 생성한다. 정방향 범위를 생성한다. fun main(){ val range1 = 1..10 val range2 = 1.rangeTo(10) println(range1 == range2) // true println(range1.first) // 1 println(range1.last) // 10 } until 메소드 rangeTo 메소드와 같은 역할을 하나 마지막 항목을 포함하지 않는다. fun main(){ val range2 = 1.rangeTo(10) val range3 = 1.until(10) println(range2 =..
Programming/Kotlin
변수 코틀린에서의 변수는 기본적으로 null이 불가능한 타입이다. null이 가능한 변수를 만들 때는 ? 키워드를 이용한다. val(var) 변수명: 타입? = 값 아래 예시와 같이 ?를 사용하지 않은 변수에는 null 할당 시 컴파일 시점 오류가 발생한다. nullable한 변수에 메소드를 호출하면 아래와 같이 오류가 발생한다. null인 경우 메소드 호출이 불가능하기 때문에 런타임 시점 오류를 방지한다. nullable 연산 ?. (안전 호출 연산자) nullable 변수 뒤에 ?.을 붙여 변수가 null이 아닌 경우에만 실행되게 한다. 아래 예시처럼 null인 경우 메소드를 호출하면 오류가 아닌 결과값으로 null을 반환한다. ?: (엘비스 연산자) 안전 호출 연산자의 경우 변수가 null 이면 반..
포함 연산자 in 특정 범위에 속하는지 여부를 확인할 때 사용한다. val num = 15 println(num in 10..20)// true all, none, any 모든 것이 참인지 확인하는 경우: all 모든 것이 거짓인지 확인하는 경우: none 하나라도 참인지 확인하는 경우: any val list = listOf(1, 2, null, 4) println(list.all({it == null})) // false println(list.none({it == null})) // false println(list.any({it == null})) // true 동등성 동등성에는 구조적 동등성과 참조적 동등성이 있다. == 연산자와 equals로 동일한 값을 비교한다. === 연산자로 객체 참조를..
변수 코틀린에서 변수는 가변변수와 불변변수 두 가지가 존재한다. var 예약어로 가변변변수를 나타내고, val 예약어로 불변변수를 나타낸다. 변수에 자료형을 지정할 때는 변수명 다음에 콜론을 이용하여 자료형을 지정한다. 또한, 자바에서의 모든 값은 객체다. // 예약어 변수명: 자료형 = 값 var variable: Int = 3 val pi: Double = 3.14 코틀린에서는 암묵적 형 변환을 제공하지 않는다. 따라서 to변수() 함수를 이용한다. (아래 입력 예제에서 이용된다.) 입력 코틀린의 표준 입력은 readLine이다. readLine 함수는 실행 시 반드시 값이 들어오므로 !! 키워드를 사용해 null이 아님을 표현한다. var variable: Int = readLine()!!.toIn..
특징 데이터를 다루는데 최적화된 클래스다. 다양한 메소드를 자동으로 생성한다. toString() copy() hashCode() equals() componentN() 다른 클래스를 상속받을 수 없다. 메소드 toString() 객체가 가지는 프로퍼티의 값들이 출력된다. 기존 자바에서는 toString 메소드를 오버라이딩해야한다. data class User( val id: String, var name: String? ) fun main(){ var user = User("1", "abbiddo") print(user) // User(id=1, name=abbiddo) } copy() 객체 복사 시 특정 필드의 값만 바꿔 복사할 수 있다. data class User( val id: String, v..
코틀린의 장점 언어의 생산성, 간결성 코틀린은 자바에 비해 간결하고 직관적이어서 가독성이 좋다. 생성자, getter, setter 등 자바의 여러 준비 코드들을 묵시적으로 제공하기에 깔끔하다. 다양한 표준 라이브러리를 제공해 반복되는 코드를 줄일 수 있다. 타입 추론 var / val 키워드를 이용해 타입 추론이 가능하다. var: 초기화 후 값 변경이 가능한 변수 val: 초기에 값을 할당하면 나중에는 변경할 수 없는 변수 (상수) s라는 변수가 String임을 명시하지 않았으나 할당된 값에 따라 타입 추론으로 타입을 정한다. s에 할당된 값으로 String 변수로 인식되고, String의 메소드를 사용할 수 있다. fun main() { val s = "hello ~" println(s.substr..