지금 이 현재
GitHub
  • INTRO
  • CATEGORY
    • Java
      • JVM(Java Virtual Machine)
      • System.arraycopy()
      • toArray 함수 호출 시 빈 배열을 전달해야 하는 이유
      • POI Excel 인쇄 영역, 페이지 나누기 설정
      • Overloading & Overriding
      • Functional Interface
      • computeIfAbsent 메소드를 알아보자
    • Computer Science
      • 캐리지 리턴 문자('\r')
    • Kotlin
      • Java 와 다른 Kotlin
    • C++
      • ios_base::sync_with_stdio 의 역할과 사용 이유
    • Javascript
      • 자바스크립트 기본 - 문법
      • 자바스크립트 기본 - 함수
    • MySQL
      • EXPLAIN
    • Android
      • Android 기초
    • Error
      • macOS 업데이트 후 mysql 실행 에러
    • Algorithm
      • 모듈러 산술 (Modular Arithmetic)
  • BOOK
    • 헤드퍼스트 디자인 패턴
      • 전략 패턴(Strategy Pattern)
      • 옵저버 패턴(Observer Pattern)
      • 커맨드 패턴(Command Pattern)
      • 데코레이터 패턴(Decorator Pattern)
    • 자바의 정석
      • Chapter 14. Lambda & Stream
    • 함께 자라기
      • 자라기
  • STUDY
    • 99클럽
      • [99클럽 코테 스터디 1일차 TIL] 프로그래머스 - n^2 배열 자르기
      • [99클럽 코테 스터디 2일차 TIL] 프로그래머스 - x만큼 간격이 있는 n개의 숫자
      • [99클럽 코테 스터디 3일차 TIL] 프로그래머스 - 문자열 내 마음대로 정렬하기
      • [99클럽 코테 스터디 4일차 TIL] 프로그래머스 - JadenCase 문자열 만들기
      • [99클럽 코테 스터디 5일차 TIL] 프로그래머스 - 전화번호 목록
      • [99클럽 코테 스터디 6일차 TIL] 프로그래머스 - 의상
      • [99클럽 코테 스터디 7일차 TIL] 프로그래머스 - 하노이의 탑
      • [99클럽 코테 스터디 8일차 TIL] 프로그래머스 - 기능개발
      • [99클럽 코테 스터디 9일차 TIL] 프로그래머스 - 더 맵게
      • [99클럽 코테 스터디 10일차 TIL] 프로그래머스 - 이중우선순위큐
      • [99클럽 코테 스터디 11일차 TIL] 프로그래머스 - 카드 뭉치
      • [99클럽 코테 스터디 12일차 TIL] 프로그래머스 - H-Index
      • [99클럽 코테 스터디 13일차 TIL] 백준 - 숫자 카드
      • [99클럽 코테 스터디 14일차 TIL] 백준 - 숫자 카드 2
      • [99클럽 코테 스터디 15일차 TIL] LeetCode - Prefix and Suffix Search
      • [99클럽 코테 스터디 16일차 TIL] 프로그래머스 - 모음사전
      • [99클럽 코테 스터디 17일차 TIL] 백준 - 촌수계산
      • [99클럽 코테 스터디 18일차 TIL] 백준 - 단지번호붙이기
      • [99클럽 코테 스터디 19일차 TIL] 프로그래머스 - 구명보트
      • [99클럽 코테 스터디 20일차 TIL] 프로그래머스 - 큰 수 만들기
      • [99클럽 코테 스터디 21일차 TIL] 프로그래머스 - 피보나치 수
      • [99클럽 코테 스터디 22일차 TIL] 프로그래머스 - 멀리 뛰기
      • [99클럽 코테 스터디 23일차 TIL] 프로그래머스 - 마법의 엘리베이터
      • [99클럽 코테 스터디 24일차 TIL] 프로그래머스 - 대충 만든 자판
      • [99클럽 코테 스터디 29일차 TIL] LeetCode - Longest Increasing Subsequence
      • [99클럽 코테 스터디 31일차 TIL] 백준 - 점프 점프
      • [99클럽 코테 스터디 32일차 TIL] 프로그래머스 - 무인도 여행
      • [99클럽 코테 스터디 33일차 TIL] 프로그래머스 - 리코쳇 로봇
      • [99클럽 코테 스터디 34일차 TIL] 프로그래머스 - 타겟 넘버
      • [99클럽 코테 스터디 35일차 TIL] 프로그래머스 - 게임 맵 최단거리
      • [99클럽 코테 스터디 36일차 TIL] 프로그래머스 - 전력망을 둘로 나누기
      • [99클럽 코테 스터디 37일차 TIL] 백준 - 부등호
Powered by GitBook
On this page
  • 1. 변수 선언
  • 2. 함수 선언
  • 3. 클래스와 인스턴스 생성
  • 4. 문자열 템플릿
  • 5. for loop
  • 6. when 표현식
  1. CATEGORY
  2. Kotlin

Java 와 다른 Kotlin

Kotlin 을 공부하면서 Java 와 다른 점을 정리한 글입니다.

1. 변수 선언

  • Java

final String name = "Dex";
int age = 12;
  • Kotlin

// 상수 변수 선언
val name: String = "Dex"
// 변수 선언
var age: Int = 12
// 추론 타입
val name = "Dex"
var age = 12
  1. 세미콜론이 없다.

  2. 추론 타입이 있어 자료형을 명시하지 않아도 된다.

  3. 원시 타입이 없다.

    • 컴파일 시 때에 따라 원시 타입 또는 객체 타입으로 컴파일된다.

  4. 자료형을 명시할 때는 : 뒤에 자료형을 작성한다.

2. 함수 선언

  • Java

public void main(String[] args) {
	System.out.println("Hello, World!");
}
  • Kotlin

fun birthdayGreeting(name: String = "Rover", age: Int): String {
	val nameGreeting = "Happy Birthday, $name!"
	val ageGreeting = "You are now $age years old!"
	return "$nameGreeting\n$ageGreeting"
}

fun main() {
	println(birthdayGreeting(age = 3))
}
fun sum(a: Int, b: Int): Int {
    return a + b
}

fun sum(a: Int, b: Int) = a + b
  1. fun 키워드로 함수를 선언한다.

  2. 반환 타입을 지정하지 않을 경우 Unit 타입으로 반환된다.(void 타입과 동일)

  3. 반환 타입 지정 시 : 뒤에 작성한다.

  4. 반환 타입을 지정하고 반환 값이 없으면 에러가 발생한다.

  5. 매개 변수는 상수 값이며 타입을 선언해야 한다.

  6. 인수에 이름을 지정할 수 있다.

  7. 매개변수의 기본 값을 설정할 수 있다. (name: String = "Rover")

  8. 함수 본문을 표현식으로도 표현할 수 있다.

3. 클래스와 인스턴스 생성

  • 클래스 생성

class Rectangle(var height: Double, var length: Double) {
    var perimeter = (height + length) * 2
}
  • 인스턴스 생성

fun main() {
    val rectangle = Rectangle(5.0, 2.0)
    println("The perimeter is ${rectangle.perimeter}")
}
  1. 인스턴스 생성 시 new 키워드를 붙이지 않아도 된다.

  • 상속

open class Shape

class Rectangle(var height: Double, var length: Double) : Shape() { ... }
  1. 상속할 클래스는 open 키워드를 사용해야 한다.

4. 문자열 템플릿

  • Java

int a = 10;
System.out.println("a = " + a);
  • Kotlin

var a = 10
val s1 = "a is $a"

a = 20
println("${s1.replace("is", "was")}, but now is $a")
// -> a was 10, but now is 20
val a = "abc"
println("$a.length is ${a.length}")
// -> abc.length is 3
  1. ${} 를 통해 문자열 내에 표현식을 사용할 수 있다.

  2. $ 키워드를 통해 문자열에 바로 변수를 사용할 수 있다.

5. for loop

  • Java

List<String> fruits = List.of("apple", "banana", "kiwifruit");
for (int i = 0; i < fruits.size(); i++) {
    System.out.println(fruits.get(i));
}
for (String fruit : fruits) System.out.println(fruit);
  • Kotlin

val items = listOf("apple", "banana", "kiwifruit")
for (item in items) println(item)
  1. in 키워드를 통해 리스트를 순회한다. 향상된 for 문과 비슷하다.

6. when 표현식

fun describe(obj: Any): String =
    when(obj) {
        1 -> "One"
        "Hello" -> "Greeting"
        is Long -> "Long"
        !is String -> "Not a String"
        else -> "Unknown"
    }
  1. Java 에서의 Object 타입이 Kotlin 에서는 Any 타입이다.

  2. Java 에서는 Object 또는 boolean 타입을 switch 문에서 사용할 수 없으나 Kotlin 에서는 가능하다.

  3. instance of 와 같은 역할인 is 연산자가 있다.

PreviousKotlinNextC++

Last updated 9 months ago