본문 바로가기

Study/Kotlin

(9)
[Kotlin] 엘비스 연산자(Elvis Operation) 코틀린의 엘비스 연산자는 ?:로 나타내며, ?:의 왼쪽 값이 null이면 ?:의 오른쪽 값을 리턴한다. 예를 들어 어떤 문자열의 길이를 구하는 함수를 구현한다고 할 때, 길이를 구하고자 하는 문자열의 null 여부를 if - else로 확인할 수 있다. fun calculateLength(str: String?): Int { val length: Int = if (str != null) str.length else -1 return length } calculateLength 함수를 임의의 문자열에 적용해보면 다음과 같은 결과를 얻을 수 있다. fun main(args: Array) { val notNullString: String? = "Hello Kotlin!" val nullString: Strin..
Kotlin : 파일 입출력 열번째 포스팅은 코틀린에서의 파일 입출력입니다. 기본 변수 생성 import java.io.* import java.util.* fun main(args: Array) { val outString:String = "hello" // 파일에 추가해 줄 문자열 val path:String = "/Users/user/test/test.rtf" // 텍스트 파일 샘플 } 디렉터리 내 파일 목록 import java.io.* import java.util.* fun main(args: Array) { val files = File("/Users").listFiles() // 지정해 준 경로 내의 파일을 리스트로 생성 println(Arrays.toString(files)) // 리스트 출력 } 파일 복사 fun ..
Kotlin : ArrayList, MutableList, Map 리스트는 배열과 다르게 길이에 대한 제약이 없으며 중간에 값이 빠지더라도 메모리를 차지하지 않습니다. 1억개의 값을 각각 배열과 리스트에 넣어주었을 때, 배열은 그 중에서 9천만개를 지운다면 천만개의 값과 9천만개의 빈공간이 남아 메모리를 차지합니다. 반면 리스트는 9천만개의 공간을 없애고 천만개만큼의 자리만 차지합니다. 이처럼 값의 삭제나 수정 등이 빈번하게 필요하다면 배열보다는 리스트를 사용하는 것이 좋습니다. 자바에서는 다음과 같이 리스트를 만들어주었습니다. import java.util.* public class Main { public static void main(String[] args) { List list = new ArrayList(); // 값을 넣어줄 때 list.add(123) /..
Kotlin : 상속, 추상클래스, 인터페이스, 오버라이드 5편에 이어서 클래스의 상속과 오버라이드, 오버로드에 대해 살펴보겠습니다. 클래스 상속 상속 우선 상속이라는 것은 부모 클래스를 기준으로 자식 클래스가 부모클래스의 특징을 이어 받는 것입니다. 유전학의 개념으로 보면 부모와 자식이 닮아있다는 경우가 되겠지요. 그래서 이전 포스팅에서 A라는 부모 클래스를 B라는 자식 클래스가 상속받고자 할 때 클래스 A에 open이라는 키워드가 붙었습니다. open class Base (var firstName:String="길동", var lastName:String="홍", var age:Int=24) { //class Base { /* var firstName:String var lastName:String var age:Int constructor(firstName..
Kotlin : 클래스와 객체 이번 포스팅은 클래스와 객체에 대해 다룹니다. 클래스와 객체의 자세한 개념은 자바 포스팅(여기를 눌러 이동)을 참고해주세요. 자바에서는 클래스를 이렇게 작성합니다. class Person { // 멤버변수 private String name; private String gender; private int age; // 생성자 public person() {} public person(String name, String gender, int age) { this.name = name; this.gender = gender; this.age = age; } // getter와 setter...생략 // Override된 toString()...생략 // 필요에 따라 멤버 메서드도 작성 가능 public st..
Kotlin : 예외처리, 함수 코틀린 프로그래밍 네번째입니다. 이 포스팅에서는 예외처리와 함수에 대해 다룹니다. 예외처리(Exception) 자바에서의 예외처리 자바에서 try catch를 사용하여 예외가 터지는 곳을 콘솔에서 검출하는 것을 했습니다. public class Main { public static void main(String[] args) { int firstNum = 123; int secondNum = 10; int result; try { result = firstNum / secondNum; System.out.println(result); } catch (Exception e) { System.out.println("Exception!!!"); e.printStackTrace(); } finally { Sys..
Kotlin : 조건문, 반복문, 제어자 코틀린 프로그래밍 세번째. 제어문입니다. 자바에서 제어문은 for, if, switch case, while 구문 정도가 있었습니다. 코틀린에서 어떻게 사용하는지 살펴보겠습니다. if 조건문 조건문 작성하기 String str = ""; int num = 50 if(num > 30){ str = "abc"; }else{ str = "bcd"; } System.out.println(str); // abc자바에서의 if문은 위와 같이 어떤 조건이 성립할 때 처리식을 처리해주는 구조였습니다. 코틀린에서의 if문은 이와 조금 다른 구조로 쓸 수 있는데 그 점에 착안해서 살펴보겠습니다. 위의 자바 코드를 코틀린에서 구현할 경우 다음과 같이 할 수 있습니다. var num:Int = 50 val str:String..
Kotlin : 배열 코틀린 프로그래밍 두번째입니다. 이번 포스팅에서는 배열에 대해 다룹니다. 자바에서 배열은 같은 자료형으로 이루어진 자료들을 특정 인덱스(주소)에 보관하여 필요에 의해 끌어다 쓰는 서랍과 같은 것이었습니다. 코틀린에서의 배열도 마찬가지입니다. 어차피 JVM에서 돌아가는 언어이므로 자바와 거의 유사합니다. 다만, 배열을 생성하는 방법에 다소 차이가 있습니다. 배열 배열의 선언 / 초기화 자바에서의 배열은 String[] names = new String[3]; String[] names = { "Mike", "Jane", "Johan" }; 이러한 방식으로 선언, 초기화를 해주었습니다. 코틀린에서는 조금 다릅니다. val arr = intArrayOf(1, 2, 3, 4, 5) println(arr) pri..