우주먼지
Kotlin Controll Flow
Languages/Kotlin 2023. 3. 29. 05:18

💡 if-else 문 if 문이 '식'으로 사용되는 경우 값을 반환한다. if '식'의 경우 반다시 else를 동반해야 하지 않으면 컴파일 에러가 난다. // a가 큰경우 max에 a를 대입, 아니면 b 대입 // 상항연산자와 구조가 동일하다 val max = if (a > b) a else b if '식'의 branches들이 블록을 가질 수 있다. { ... } 블록의 마지막 구문이 반환값이 된다. fun if_else_식() { var a = 5 var b = 4 val max = if (a > b) { print("Choose a") a // 블록의 마지막 구문인 a가 반환값이 된다 } else { print("Choose b") b // 블록의 마지막 구문인 b가 반환값이 된다 } } 그리고 코..

[Operator Overloading] 이항 & 단항 산술 연산자 오버로딩
Languages/Kotlin 2023. 3. 29. 03:06

💡 Operator Overloading 코틀린은 특정 연산자의 역할을 함수로 정의할 수 있다. 연산자 오버로딩을 할때 operator라는 키워드를 사용하며 이미 정의된 함수를 새롭게 정의하면 된다. 이항 산술 연산 오버로딩 코틀린은 +,- 같은 산술 연산자를 오버로딩해서 사용 가능하다. 객체끼리 더하거나 뺄 때, 원하는 동작을 함수안에 구현하면 연산자를 통해 표현이 가능하다. 코틀린은 언어에서 미리 정해둔 연산자만 오버로딩할 수 있기 떄문에, 다른 언어와 비교해서 오버로딩 연산자를 정의하고 사용하는 것이 더 쉽고 편리하다. 식함수 이름 a * b times a / b div a % b mod (version 1.1 이상부터는 rem) a + b plus a - b minus 예시 두 객체를 더하는 확장..

[Operator Overloading] 복합 대입 & 비교 연산자 오버로딩
Languages/Kotlin 2023. 3. 29. 03:06

💡 복합 대입 & 비교 연산자 오버로딩 코틀린은 특정 연산자의 역할을 함수로 정의할 수 있다. 연산자 오버로딩을 할때 operator라는 키워드를 사용하며 이미 정의된 함수를 새롭게 정의하면 된다. 복합 대입 연산자 오버로딩 "+=", "-=" 등의 연산자를 복합 대입 연산자라고 하며, "+" 대응 함수인 plus와 같은 연산자를 오버로딩하면 코틀린은 그와 관련된 연산자인 "+=" 도 자동으로 구현해준다. var point = Point(1, 2) point += Point(3, 4) // point = point + Point(3, 4)와 동일하다 // 결과값 Point(x=4, x=6) 비교연산자 오버로딩 - 동등성 연산자 : equels 코틀린에선 모든 객체에 비교 연산을 수행하는 경우, equal..

Kotlin Basic Types
Languages/Kotlin 2023. 3. 26. 04:25

💡 Kotlin Basic Types 코틀린에서 모든것은 객체이다. (Nullable을 위함) 모든것의 멤버 함수나 프로퍼티를 호출 가능하다는 장점이 있다. 숫자형 Java와 거의 비슷하게 처리한다. Kotlin에서 Number는 클래스이다. Java는 Primitive Type에 직접 접근이 불가능하다. Java에서 숫자형이던 char는 Kotlin에서 숫자형이 아닌 문자형이다. Representation 자바 플랫폼을 사용할 경우 숫자형은 JVM Primitive Type으로 저장된다. Nullable이나 Generic의 경우에는 Boxing 되어 Object로 사용된다. Boxing된 경우, Identity를 유지하지 않는다. '==='는 equals와 같은 의미이다 fun 숫자형() { // JV..

Kotlin Basic Syntax
Languages/Kotlin 2023. 3. 26. 02:23

💡 Basic Syntax 코틀린 기본 문법에 대해 IntelliJ를 이용해 학습한다. 함수 정의 함수를 생성할 때 리턴 값이 없는 경우 java/dart에서는 void로 생성해 주면 되지만, kotlin에서는 Unit 이라는 형태로 생성해주거나 아무 것도 넣어주지 않으면 된다. 리턴 값이 있는 경우에는 리턴 타입을 넣어주면 된다. /* ----- 함수 정의 ----- */ // 함수 바디가 식(Expression)인 경우 reutrn문 생략가능, return Type이 추론됨 fun sum(a: Int, b: Int) = a+b // Java의 void역할을 하는 리턴 타입이 없는 Unit(Object)이 있으며, Unit은 생략이 가능하다. fun print1(): Unit { println("Kot..

Try-With-Resource
Languages/Java 2023. 3. 25. 07:19

💡 Try-With-Resource JDK 1.7 부터 try-catch의 변형인 try-with-resources가 추가되었다. 주로 입출력에 필요한 클래스들 중 사용 후 닫아줘야 하는것들을 자동으로 닫아준다. 그래야 사용했던 자원(resources)가 반환되기 때문이다. 아래 예시는 DataInputStream을 이용해 파일로부터 데이터를 읽는 코드이다. 데이터를 읽는 도중 예외가 발생하더라도 Stream이 닫히도록 finnaly 안에 close()를 넣었다. 별 문제가 없어 보이는 코드지만 진짜 문제는, close()가 예외를 발생시킬 수 있다는데 있다. try { fis = new FileInputStream("score.dat"); dis = new DataInputStream(fis); } c..

Multi Catch Block
Languages/Java 2023. 3. 25. 07:18

💡 멀티 Catch 블럭 JDK 1.7부터 여러개의 catch 블럭을 '|'를 이용해 하나의 catch 블럭으로 합칠 수 있게 되었다. 중복 코드를 줄일 수 있으며, '|' 기호로 연결할 수 있는 예외 클래스의 개수는 제한이 없다. try { ... } catch (ExceptionA | ExceptionB e) { e.printStackTrace(); } // 상위, 하위 클래스가 | 기호와 같이 있다면 에러가 발생한다. try { ... } cathc (ParentException | ChildException) { // 에러 ... } 멀티 catch 블럭은 하나의 블럭으로 여러 예외를 처리하는 것이기 때문에, 발생한 예외를 처리할 때 실제로 어떤 예외가 발생한 건지 알 수 없다. 그래서 참조변수 ..

검색 태그