[Kotlin] 스터디 - Intro

코틀린의 장점

  • 정적언어 : 컴파일시 자료형 검사 및 오류 발견이 가능
  • NullPointerException을 방지함
  • 함수형 프로그래밍, 객체지향 프로그래밍이 가능
  • 세미콜론을 생략가능하다
  • 간결하다!

 

메모리 구조 정리

  • 코드 영역 : 명령어들이 적재됨
  • 데이터 영역 : 문자열, 정적변수등이 적재됨
  • 힙 : 프로그램 실행 중 동적으로 생성되는 객체가 적재됨
  • 스택 : 코드블록 (aka.중괄호{}) 에서 사용한 변수등이 임시로 적재되며, 코드블록이 끝나면 스택에서 제거됨

 

메모리 공간 이상 적재시

 

은 Out of Memory 오류가 발생한다 (반복문 내의 메모리 할당 등)

스택은 Stack Overflow 오류가 발생한다. (반복적인 재귀적 함수 호출 등)

JVM을 사용하면 객체가 사용된 뒤 아무 참조가 없을 경우 가비지컬랙터(GC)가 동작하여 제거해준다.

힙과 스택은 그림의 화살표 방향 순으로 데이터가 적재된다.

 

관계 정리

  • 프로젝트 ⊃ 모듈 ⊃ 패키지 ⊃ 파일
    • 대형 프로젝트에서는 기능을 모듈 단위로 개발함.

 

코틀린 파일

  • 코틀린 파일은 .kt 확장자를 가진다
  • 일반적으로 코틀린 파일의 가장 위쪽에 그 파일이 속해있는 패키지를 정의한다
  • 코틀린 파일에 클래스를 한개만 정의하고 파일명과 같을 경우 IntelliJ에서 .kt확장자는 기본적으로 숨겨진다.
  • DoubleClass.kt처럼 하나의 파일에 여러 클래스를 정의할 수 있으며, 이 경우 파일은 클래스들을 묶는 역할을 한다.

 

패키지

  • 패키지를 선언하지 않으면 자동으로 default 패키지에 포함된다.
  • 패키지 이름은 웹사이트 주소처럼 .으로 구분해서 짓는다
    • 예시) 네트워크 기능 구현시 net 과 같은 단어로 구분함 (com.meda.net.upload)
    • meda.com이라는 웹사이트 도메인 사용시 "com.meda"과 같이 반대로 작성하는게 관례이다
  • 패키지를 만드는 이유
    • 협업이나 외부 코드를 import할 경우 클래스명이 충돌하는 경우가 발생할 수 있음, 하지만 패키지가 다르면 충돌이 발생하지 않음.