Kotlin- V1

Shaun·2022년 3월 27일
1

Kotlin

목록 보기
1/10

물론 내 실력에 조금은 오바하는것 일수도 있지만(다른것 먼저 배울게 많지만) 코틀린인이라는 언어가 너무 궁금하고 배워보고 싶어서 배웠다.

그냥 하고 싶으면 할것이다.

코틀린 언어에 대한 설명은 이미 인터넷에 많이 나와있으므로 간단한 특징 설명뒤 코틀린 기본 문법 위주로 포스팅할 예정이고 자바와 다른점만 포스팅할 예정이다.

코틀린 특징

  • 자바언어와 비교하여 매우 간단한 문법 제공
  • 예외처리 강제하지 않는다
  • 모든 기본 자료형 값을 객체로 관리한다
  • 연산자의 재구현을 지원한다
  • 객체지향 프로그래밍과 함수형 프로그래밍 방식 모두 가능

코틀린 동작 원리

  • 코틀린은 자바,c언어 ,자바스크립트로 변환될수 있으며 그로 인해 다양한 분야에서 쓰인다.

개발 분야

  • kotlin for ServerSide :서버 개발을 위한 라이브러리를 제공한다.

  • kotlin for Android : 안드로이드 개발시 코틀린 사용 개발가능

  • kotlin for JavaScript: 자바스크립트, ECMAScript를 사용 하는 웹분야 및 Node.js개발 분야에서 사용 가능(노드는 주로 서버사이드목적 , 즉 병렬처리가능해서 빅데이터에 많이쓰인다)

출력문

  • 자바: sysout /sout / system.out.println
  • 코틀린: print() / println() / 코드 마지막에 ;(세미콜론) 생략가능

리터럴

.1.값+문자열

  • 자바: "안녕" + 값
  • 코틀린: "안녕 ${값}" (변수만 있으면 {} 도 생략 가능)

2.문자열 줄 나누기

  • 자바: "내용\n내용"
  • 코틀린: """ 내용 """
  1. 리턴값 없음
  • 자바: void
  • 코틀린: unit

자료형

  • 코틀린은 모든 기본자료형은 객체로 관리하기떄문에 -> 여기에잇는건 다 객체의 클래스타입이다

  • 코틀린: 부호가 없는 정수형 ULong/UInt/UShort/UByte

변수선언

  • 자바: 자료타입 변수명 = 값

  • 코틀린 var or val 변수명 = 값/ 변수의 자료타입은 자동 추론
    var =선언이후 값 변경 가능
    val = 선언이후 변경 x
    val = 변수 자체는 대체 불가 하지만 그 안의 요소들은 변경 가능

  • 코틀린에서는 boxing/unboxing을 고려하지 않아도 코틀린이 알아서 처리해줌

null허용 변수

  • 자바: null 허용 x
  • 코틀린:
    var/val 변수명:자료타입 = 값 (null아닌 값만 허용)
    var/val 변수명:자료타입?=값(null허용 +null이 아닌 값 허용)

    !! = null허용 -> null 허용 x

함수

= Java에서는 클래스에 메서드를 만들어 사용하지만 코틀린은 C언어처럼 함수라는 개념을 제공한다.

= 함수를 만들어 놓고 메인에서 호출하는 개념

  • 자바: 접근제어자 반환타입 변수명(){}
  • 코틀린: fun 변수명():반환타입{} / 반환타입 Unit 생략 가능

매개변수

  • 자바: 자료형 변수명
  • 코틀린: 변수명 자료형 (매개변수는 자료타입 생략 불가)

매개변수의 기본값

  • 자바 : 설정 불가
  • 코틀린: 기본값 설정 가능

연산자

  • 코틀린:
    a..b = a부터 b까지 값을 관리하는 요소

나머지것들은 자바와 같음

If문

  • 코틀린:
    -기본 If문은 자바와 같다.
    -변수에 바로 대입가능

When/When-in/when-else

case가 하나인경우

case가 여러개인 경우

case범위 안에 해당되는경우


-> setValue함수에 매개변수로 값이 들어오면 when문이 실행된다

  • 자바: switch-case
  • 코틀린 : 수식이나 값의 결과에 따라 수행될부분을 결정하게 되며 자바와 다르게 정수 뿐만 아니라 다양한 타입의 값을 비교할수 있다

반복문/continue,break

  • 코틀린:
    = 자바와 비슷하게 for/while/do-while 문을 사용한다
    = while/do-while/continue/break은 자바와 사용법이 같다
    = for(변수 in 배열){코드}

  • step 을 활용해 반복시 그숫자만큼 증가 할수있다.

  • downTo 를 활용해 역순으로도 가능하다.
  • 변수선언시 왼쪽항은 무조건 증가하므로 10..1 이런식은 불가!

생성자

= 생성자는 클래스가 가지고 있는 변수의 값을 초기화 하는데 사용한다

  • 주생성자,부생성자 같이 있으면 -> 부생성자 생성시 주생성자 먼저호출


코틀린:

  • 코틀린은 자바와 다르게 init()메서드가 존재한다. 이 메서드는 객체가 생성되면 자동으로 실행되는 메서드다.
  • 만약 생성자 안에 init()메서드가 있으면 생성자부터 실행하고 init()이 실행된다.
  • constructor를 이용하여 생성자를 정의할수 있다.
  • 매개변수를 달리하여 여러개 사용 가능

기본생성자

  • 클래스를 정의할떄 이름 우측에 정의하는 생성자(생략가능)

  • 기본생성자의 매개 변수는 멤버 변수로 자동 등록되며 getter/setter도 자동으로 생성됨

  • 디코드 된걸 보면 알겠지만 매개변수에 var/val를 붙이지 않으면 매개변수 생성자만 생성

  • 실제 호출시 자바처럼 new를 사용해서 만들필요가 없다. 클래스이름()

init() vs 주생성자 vs 부생성자

  • 매개변수 하나가 있는 생성자를 호출했기 때문에 보조 생성자가 실행되지만 실질적으로는 그 안의 주생성자 부터실행 -> init() ->부생성자 순으로 진행이 된다.

상속

코틀린: 부모 클래스 생성시 open 키워드를 사용해야 한다. 그렇지 않으면 자바 코드로 변환시 final이 붙어서 상속이 불가능 하다.

  • 매개변수가 없는경우 (기본생성자)

  • 매개변수가 있을 경우

접근제한자

  • 코틀린에서는 클래스 안 모든 변수는 자바코드로 변환시 기본 private가 설정 된다

  • 접근 제한자의 종류에 따라 getter메서드 추가 여부가 결정된다

접근제한자-클래스

  • private: 외부에서 객체 생성 불가
  • public : 외부에서 객체생성 가능
  • protected : 클래스에 지정 불가
  • internal : 모듈이 같을 경우에만 객체 생성 가능

접근제한자 -변수,메서드

  • private: 외부에서 접근 불가
  • public : 외부에서 접근 가능
  • protected : 상속 관계일 경우에만 접근 가능
  • internal : 모듈이 같을 경우에만 접근 가능
profile
호주쉐프에서 개발자까지..

0개의 댓글