오늘 자기계발을 위해서 코틀린 관련 강의를 수강하기 시작했습니다.
1년전에 자바,스프링 관련 강의를 시작으로 한번의 강의도 듣지 않았는데, 초심을 되찾기 위해 큰맘(?) 먹고 결제했습니다..😊
그래서 앞으로 매일 공부하면서 알고있는것 들이나, 여러분과 공유하고싶은 지식을 포스팅할겁니다. 공부도 하고! 글도 쓰고! 아주 훌륭하다고 생각합니다.
주로 코틀린관련해서 포스팅할 예정이며, 개인프로젝트도 진행하면서 배운것들을 포스팅 할거에요!
이게 바로 주제입니다.
강의 자료에도 나와있는 정보이지만, 제가 스스로 정리하면서 다시한번 공부한다는 느낌으로 가봅시다!
자바에서 체크드 익셉션의 경우에는 try-catch로 감싸거나 throw로 예의를 전파해야합니다.
try { Thread.sleep(1); } catch (InterruptedException e) { // 예외 처리 }
하지만, 대부분의 소스들은 catch 안에서 아무런 처리를 하지 않습니다.
try { log.append(message) } catch(IOException e) { // Do nothing 흔하게 볼 수 있는 코드 } try { File file = FileUtils.get(filename); // ... } catch (FileNotFoundException e) { // 파일이 없는데 어떤 처리를 하지? } try { return objectMapper.readValue(json, clazz); } catch (IOException e) { // 단순 에러 로그 출력 logger.error(e.getMessage(), e); }
코틀린은 체크드 익셉션을 강제하지 않습니다.
Thread.sleep(1); // 물론 원하는 경우에는 try-catch 가능 try { Thread.sleep(1) } catch (e: Exception) { // 예외 처리 }
자바에서는 static 키워드로 정적멤버를 선언합니다.
pubic class JavaClass {
static int i = 0;
public static void staticMethod() {
// ...
}
}
하지만 코틀린에서는, compainon object
로 대체합니다.
class KotlinClass {
companion object {
val i: Int = 0
fun function() {
// ...
}
}
}
// 자바의 경우에는 삼항연산자
String animalSound = "호랑이".equals(animal) ? "어흥" : "야옹";
// 코틀린의 경우에는 if-else로 대체
val animalSound: String = if ("호랑이" == animal) "어흥" else "야옹"
개발자가 임의로 객체의 함수나 프로퍼티를 확장해서 사용할 수 있다
MyStringExtensions.kt
fun String.first(): Char {
return this[0]
}
fun String.addFirst(char: Char): String {
return char + this.substring(0)
}
fun main() {
println("ABCD".first()) // 출력 : A
println("ABCD".addFirst('Z')) // 출력 : ZABCD
}
val a : String = null // 컴파일 오류
var b : String = "aabbcc"
b = null // 컴파일 오류
// Nullable 참조는 컴파일 단계에서 널 안정성을 제공
var a : String? = null
a.length // 컴파일 오류
a?.length // safe-call 정상
a!!.length // Null이 아니라고 확신하는 경우
아래에 추가적으로 차이점이 존재하지만, 나중에 공부하면서 다루게될 예정이므로 여기서는 PASS!!
일단 기본적으로 차이점에 대해서 알아보았습니다.
수정해야될 정보나, 보완해야할 점이 있다면 말씀해주세요 바로 수정하겠습니다.👍👍
그럼..이만!!!