본문 바로가기

전체 글

(49)
코틀린: 연산자 in과 범위(updated) 범위(range) 관련 연산에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.6 범위 관련 연산을 참고하기 바랍니다. 연산자 in은 설정된 범위 안에 원소가 있는지를 조사하거나 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) 문자열 상수를..
코틀린: 널 타입과 안전 호출, 스마트 타입 변환(updated) 안전 호출(safe call)과 스마트 타입 변환에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 1.13 안전 호출을 참고하기 바랍니다.  아래 예제에서 함수 isSmallCase()는 문자열이 모두 소문자로 이루어져 있는지 조사합니다. 4개의 다른 문자열을 사용해 이 함수가 제대로 동작하는지 테스트합니다.문자열 ""를 빈 문자열(empty string)이라고 부릅니다. 빈 문자열은 원소가 없기 때문에  for 루프를  실행하지 못합니다. 빈 문자열의 isSmallCase() 실행 결과는 true입니다. 문자열 " "은 공백 문자(space) 1개를 갖고 있지만 소문자가 아니어서,  isSmallCase() 실행 결과 false를 반환합니다.fun isSmallCase..
코틀린: String과 CharArray 스트링 풀과 intern() 메소드 예제의 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 1.9.1 스트링 풀을 참고하기 바랍니다.String과 CharArray의 차이점이 뭘까요? 가장 큰 차이점은 String은 불변(immutable)이지만, CharArray는 가변(mutable)이라는 점입니다. String 타입 객체는 문자열을 할당하고 나면,  문자열의 원소인 문자 1개도 바꿀 수 없습니다. 반면 CharArray 타입 객체는 몇 번이고 문자열을 바꿀 수 있습니다.String과 CharArray는 서로 타입을 변환할 수 있습니다. CharArray 타입을 String 타입으로 변환하려면 생성자 String(chars: CharArray) 를 호출하면 됩니다. Stri..
코틀린: String의 원소 참조 - 인덱싱 String 타입은 순서가 정해져 있어 인덱싱(indexing)이 가능합니다. 배열이나 List 컬렉션도 인덱싱이 가능하죠. 인덱싱은 순서가 정해져 있습니다. 인덱싱은 컬렉션 계층 구조에서 최상위 인터페이스인 Iterable 인터페이스와도 관련 있습니다. Iterable 인터페이스에 대해서는 쉽게 다가가는 최신 프로그래밍 언어:코틀린 - 5.3.컬렉션과 5.7 iterator와 sequence를 참고하기 바랍니다.너무 어렵게 생각할 필요 없습니다. String이건 배열이건 List 컬렉션이건 기능적으로는 같기 때문입니다. 아래 예를 보도록 하죠. String 타입 변수 foo는 Char 타입 원소를 모두 15개 갖고 있습니다. 공백 문자(' ', space)도 원소에 포함됩니다. foo[i]를 인덱싱이라..
코틀린: package와 import(updated) 쉽게 다가가는 최신 프로그래밍: 코틀린 - 1.2.2 라이브러리에서 import문에 대한 보충 설명입니다. 패키지(package)의 영어 단어 뜻은 꾸러미(parcel), 상자(box)이지만, 프로그래밍 언어에서 패키지의 뜻은 여러 함수를 하나의 박스(box)에 담았다는 뜻입니다. 패키지에는 함수 외에 클래스(class)나 프로퍼티(property)를 포함할 수도 있습니다. 패키지를 만드는 목적은 API(application program interface)를 제공하기 위해서입니다.  API가 곧 라이브러리(library)입니다. 자주 사용하는 함수들을 패키지에 담아 놓고, 필요할 때 또 만들지 않고 import문을 사용해 불러 쓰면 됩니다. 마치 도서관에 있는 책을 빌려보는 것처럼 말이죠.10진수 숫자..