본문 바로가기

전체 글

(53)
코틀린 : 2장 테스트에 도전해 보세요 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2장 연산자와 흐름 제어를 완전히 이해했나요? 다음 문제를 풀어 보세요.문제 1 아래 연산 결과는 어떤 값이 나올까요? 그 이유도 설명하세요.fun main() { println(inStringRange("Kotlin")) println(inStringRange("kotlin"))}fun inStringRange(s: String): Boolean { return (s in "Java".."Scalar")} 문제 2 (프로그래밍)String 클래스의 확장 함수로 해당 문자열의 마지막 문자를 가져오는 lastChar()를 정의하세요. 단, String 타입 객체가 널(null)일 수도 있음을 고려해야 합니다. 아래 2개를 테스트 변수로 사용하세요...
코틀린: 연산자 오버로딩(3) - compareTo() 연산자 오버로딩(operator overloading)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.2 연산자 오버로딩을 참고하기 바랍니다. 연산자 오버로딩에서 무심코 지나치면 안되는 내용 중 복합 대입연산자와 equals()에 대해 알아보았습니다. 마지막으로 compareTo()에 대해 알아보겠습니다. ■ Comparable 인터페이스 에서 선언한 추상 메소드 compareTo() compareTo()는 Comparable 인터페이스에서 선언한 추상 메소드입니다.  compareTo() 앞에 키워드 operator가 붙었습니다. 즉, compareTo()는 연산자 오버로딩을 위한 추상 메소드입니다. compareTo()는 Int 타입을 반환 합니다.  publ..
코틀린: 연산자 오버로딩(2) - equals() 연산자 오버로딩(operator overloading)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.2 연산자 오버로딩을 참고하기 바랍니다. 연산자 오버로딩에서 무심코 지나치면 안되는 내용 중 복합 대입연산자부터 먼저 알아보았습니다. 이번에는 equals()에 대해 알아보겠습니다. equals()는 연산자 "==" 또는 "!="를 사용했을 때 호출되는 함수입니다. 연산자 오버로딩의 일반적 구문은 "operator fun plusAssign() ..." 이지만, equals()는 특이하게 "override fun equals() ..." 를 사용합니다. 다음에 설명할 compareTo()도 "override fun compareTo() ... "를 사용합니다. ■ ..
코틀린: 연산자 오버로딩(1) - 복합 대입 연산자 이 글은 "Kotlin in Action by Dmitry Jemerov and Svetlana Isakova, Manning(2017)" 중 7.1.2 Overloading compound assignment opertators를 참조해 작성했습니다.연산자 오버로딩(operator overloading)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.2 연산자 오버로딩을 참고하기 바랍니다. 오버로딩과 비슷한 용어로 오버라이딩(overriding)이 있습니다. 오버라이딩은 부모 클래스를 상속받은 자식 클래스에서 부모 클래스의 속성이나 메소드를 재정의하는 것을 말합니다. 오버로딩은 2.plus(3) 과 같이 메소드 plus()를 호출하는 대신 연산자 '+'를 사용해 ..
코틀린: 연산자 in과 범위(updated) 범위(range) 관련 연산에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.6 범위 관련 연산을 참고하기 바랍니다. 연산자 in은 2가지 목적으로 사용할 수 있습니다. 설정된 범위 안에 원소가 있는지를 조사하거나 for 문에서 해당 범위의 원소를 차례대로 순환할 수 있습니다.■ 원소 포함 여부 : in과 범위어떤 영어 문자가 소문자인지 확인하려면 'a'에서 'z' 사이에 속하는지 조사해야겠죠. 아래처럼 코딩했다면 아직 프로그램 초보자입니다.fun main() { val ch = 'k' println(isSmallCase(ch))}fun isSmallCase(c: Char) : Boolean { return ('a' 함수 isLowerCase()를 사..
코틀린: 식과 문장 2장 식(expression)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.3 조건문: if 문, 2.4 조건문: when 문을 참고하기 바랍니다. 코틀린에서는 if-식, when-식, try-식 처럼 문 대신 식으로 사용하는 게 간편할 때가 많습니다. 식과 문이 어떻게 다른지 정확히 짚고 넘어가겠습니다.문(statement)과 식(expression)은 어떻게 구분할까요? 함수 main()은 중괄호로 둘러싸인 여러 문으로 이루어져 있습니다. 처음 2개 문은 변수에 초깃값을 설정한 할당문이며, 마지막은 if 문입니다. if 문은 조건식(a > = b)을 포함합니다. 식은 완전한 문이 아니며 식은 문의 일부분입니다.fun main() { val a = 9 ..
1장 - 테스트에 도전해 보세요(정답 해설) 문제 6번에 대해서만 정답 해설을 제공합니다.문제 6 (1) 아래 코드를 실행하면 어떤 종류의 예외(Exception)가 발생할까요? NumberFormatException. 예외는 실행 시간(run time)에 발생하는 에러입니다.fun main() { val s = "12x" // 소문자 x println(s.toInt())}(2) 왜 예외가 발생했나요? 숫자 문자('0', '1',..., '9')만 Int 타입으로 변환할 수 있기 때문(3) 예외가 발생하지 않도록 아래 코드를 수정해 보세요. 첫 번째 답안: 대부분 아래처럼 코딩하지 않았을까요? if 문에서 숫자 문자인지를 조사합니다.fun main() { val s = "12x" // 소문자 x if (isAllLe..
코틀린: 1장 테스트에 도전해 보세요 쉽게 다가가는 최신 프로그래밍: 코틀린 - 1장 코틀린 기초를 완전히 이해했나요? 다음 문제를 풀어 보세요.문제 1 문자에 숫자(정수)를 더하면 어떻게 될까요? fun main() { val ch = 'a' + 20 println(ch) for (c in "ROME") { print(c + 3) } println()} 문제 2 아래 연산 결과는 어떤 값이 나올까요? 그 이유도 설명하세요.fun main() { println(Byte.MAX_VALUE + 1) println(Short.MAX_VALUE + 1) println(Int.MAX_VALUE + 1) println(Int.MAX_VALUE + 1L)} 문제 3 (1) 문자열 상수를..