프로그래밍 언어 17

kotlin 문자열 +와 formatting의 차이

fun play(){ val a = "apple" val b = "bee" val plus = a+b //(new StringBuilder()).append(a).append(b).toString(); val format = "$a$b" //(new StringBuilder()).append(a).append(b).toString(); } 디컴파일 결과 같은 결과를 내기 때문에 성능상 차이는 없을 것으로 예상된다. 정말 개발자들 편하게 쓰라고 두가지를 만들어준 것 같다. 그래도 두 가지 스타일을 섞어서 쓰는 일은 없도록 하자. val notGood = a + "$a$b" val fine = "$a" + "$b" **문자열 길이가 길어져서 줄바꿈이 필요할 때는 +를 사용하면 좋다.

[JUnit] assert 함수 종류

기댓값의 자료형에 따라 어떤 assert 함수를 사용해야 하는지 알아보자. assertEquals(expected, actual, message) assertNotEquals(expected, actual, message) Java 기준 primitive 자료형(Object, char, byte, double, float, int, long, short )을 비교한다. kotlin 기준으로 설명하면, equals( )를 상속한 클래스의 인스턴스, String, Numbers를 비교할 수 있다. message에는 String과 Supplier을 넣을 수 있다. assertSame(expected, actual, message) assertNotSame(unexpected, actual, message) 두..

[IntelliJ] JUnit5 라이브러리 maven으로 적용하기

Android Studio에는 별도 설정 없이도 JUnit을 사용할 수 있지만, IntelliJ에서는 직접 종속성을 추가해줘야 한다. 써봤을 때 gradle 보다는 maven이 편리하기 때문에 maven을 사용하는 방식을 정리해보았다. 나는 최초 프로젝트 설정 시 아래와 같이 빌드 시스템을 maven으로 설정했다. 빌드 시스템이 다른 경우에도 검색은 되었던 것으로 기억하는데, 잘 되지 않는다면 빌드 시스템 설정을 다시 확인하자. 좌측 상당의 [ 파일(F) > 프로젝트 구조 ]로 이동한다. 단축키 ctrl+alt+shift+S 도 사용 가능. 프로젝트 설정 > 라이브러리를 선택한 후, + 버튼을 누르고 Maven에서…를 선택한다. 검색창에 JUnit5를 검색한 후 5초 정도 기다린다. 5초 후 원하는 버전..

Kotlin의 class(4) - Enum class

enum은 enumerated 의 약자로, Enum class는 열거하는 값들의 클래스라고 볼 수 있다. 어떤 변수의 값이 여러개의 옵션 중의 하나로 결정될 때 사용하면 좋다. ex) 동서남북, 요일 등 기본 사용법 각 enum은 쉼표( , )로 구분한다. 내부적으로 Comparable interface를 구현하고 있어서, toString( )을 포함한 편리한 기능을 추가 구현 없이 사용할 수 있다. enum class Direction { NORTH, SOUTH, WEST, EAST } val directions: Array = Direction.values() // 모든 타입 인스턴스를 배열로 받는다. 속성값과 메소드 enum class의 각 enum은 속성값과 abstract function을 가질..

Kotlin의 class(3) - Nested and inner classes

Nested and inner classes 클래스 내부에서 클래스를 선언하는 것이 가능하다. Interface도 클래스처럼 생각하고 사용하면 된다. class Outer { private val bar: Int = 1 class Nested { fun foo() = 2} } interface OuterInterface { class InnerClass interface InnerInterface } class OuterClass { class InnerClass interface InnerInterface } 이때 한 클래스의 소속이라는 것을 더 강조해주고 싶다면 inner 를 사용한다. inner class에서는 outer class의 속성에 접근하는 것이 가능하다. class Outer { priv..

Kotlin의 class(2) - abstract class와 interface

상속 - open Kotlin에 equals(), hashCode(), toString() 메서드를 가지는 Any라는 클래스가 있는데, Kotlin의 모든 클래스는 이 Any를 상속받는 자식 클래스이다. Any를 상속받는건 간단하지만 내가 만든 클래스를 다시 내가 만들 클래스에 물려주는 것은 그냥은 안된다. open 키워드를 사용해서 정확이 이 클래스가 상속될 것임을 알려줘야한다. open class Base(p: Int){ open fun able(){...} // override 가능 fun forbidden(){...} // 불가능 open val over = 0 } // 부모 클래스는 반드시 primary constructor를 사용해서 초기화되어야한다. class Derived(p: Int) :..

Kotlin의 class(1) - 생성 및 상속

class란? 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀(template)이다. 객체를 정의하기 위한 메소드와 변수로 구성된다. (출처 : 위키백과) Kotlin에서 클래스를 만들 때는 class 키워드 뒤에 클래스 이름을 적고, {} 안에 원하는 내용을 적어주면 된다. 이때 body가 없는 경우에는 중괄호를 생략할 수 있다. ex) class Person{} Constructor 해당 클래스의 인스턴스를 실제로 생성하는(초기화하는) 방식을 정의하는 특수한 메서드. 1. primary constructor 클래스 이름과 body 사이에 받을 값을 선언한다. class MyClass(name: String, age: Int) { private val n..