[Android] 03. 코틀린 시작하기

 03. 코틀린 시작하기


목차
  • 03-1 코틀린 언어 소개
    • 코틀린의 등장 배경
    • 코틀린 파일 구성
    • 코틀린 소스를 테스트하는 방법
  • 03-2 변수와 함수
    • 변수 선언하기
    • 함수 선언하기
    • 컬렉션 타입
  • 03-3 조건문과 반복문
    • 조건문 if~else와 표현식
    • 조건문 when
    • 반복문 for와 while


03-1 코틀린 언어 소개

 코틀린의 등장 배경

코틀린의 등장 배경
  • 코틀린은 젯브레인스(JetBrains)에서 오픈소스 그룹을 만들어 개발한 프로그래밍 언어
  • 2017년 구글에서 안드로이드 공식 언어로 지정
  • JVM에 기반을 둔 언어
  • 코틀린의 이점
    • 최신 언어 기법을 이용하면서 훨씬 간결한 구문으로 프로그램을 작성
    • 코틀린은 널 안전성 null safety를 지원하는 언어
    • 코틀린은 자바와 100% 호환합니다.
    • 코루틴 coroutines이라는 기법을 이용하면 비동기 프로그래밍을 간소화할 수 있다.


 코틀린 파일 구성

코틀린 파일 구성

패키지 경로를 같게 작성
  • 패키지 경로를 같게 작성한 예(Test.kt) 이다.
    • com.example.test3 와 Test.kt 파일은 같은 폴더 위치에 존재한다.
패키지 경로를 다르게 작성
  • 패키지 경로를 다르게 작성한 예이다.
    • 패키지 이름 ch3 폴더내에 작성한 코틀린 파일이다.
    • import 하는 컴포넌트는 다른 패키지(com.example.test3)에 존재하는 경우이다.
    • import는 c/c++의 .h 파일 정의해주는 내용과 유사하며, c/c++에서도 import처럼 .h를 include하는 것이아니라 점차 컴포넌트를 include하는 것으로 진화되고 있다. (참고: https://antinvestment.blogspot.com/2024/10/c-h.html)


 코틀린 소스를 테스트하는 방법

코틀린 소스를 테스트하는 방법
  • 테스트할 코틀린 소스 파일에는 main() 함수가 있어야 하며, 실행하면 main() 함수가 자동으로 실행됐다가 끝나면서 프로그램 종료가 된다.
코틀린 소스를 테스트하는 방법
  • 코틀린 파일의 오른쪽 클릭 메뉴 [Run 'Test.kt']를 선택하여 실행한다.



03-2 변수와 함수

 변수 선언하기

변수 선언하기
변수 선언하기
  • 변수는 val, var 키워드로 선언
  • val은 value의 줄임말로 초기값이 할당되면 바꿀 수 없는 변수를 선언한다.
  • var는 variable의 줄임말로 초기값이 할당된 후에도 값을 바꿀 수 있는 변수를 선언한다.
타입 지정과 타입 추론
  • 타입 지정과 타입 추론
    • 변수명 뒤에는 콜론(:)을 추가해 타입을 명시
    • 대입하는 값에 따라 타임을 유추(타입 추론)할 수 있을 때는 생략
초기값 할당
  • 초기값 할당
    • 최상위에 선언한 변수나 클래스의 멤버 변수는 선언과 동시에 초기값을 할당해야 하며, 함수 내부에 선언한 변수는 선언과 동시에 초기값을 할당하지 않아도 된다.
초기화 미루기
  • 초기화 미루기
    • lateinit 키워드는 이후에 초기값을 할당할 것임을 명시적으로 선언
    • lateinit은 var 키워드로 선언한 변수에만 사용할 수 있다.
    • Int, Long, Short, Double, Float, Boolean, Byte 타입에는 사용할 수 없다.
by lazy { } 형식
  • by lazy { } 형식으로 선언하며, 소스에서 변수가 최초로 이용되는 순간 중괄호로 묶은 부분이 자동으로 실행되어 그 결과값이 변수의 초기값으로 할당된다.
데이터 타입
  • 데이터 타입
    • 코틀린의 모든 변수는 객체이다.
    • Int 타입에 null 대입 가능하다.
    • Int 타입의 변수에도 .plus() 함수 사용 가능하다.
기초 타입 객체
  • Int, Short, Long, Double, Float, Byte, Boolean - 기초 타입 객체.
문자와 문자열

문자와 문자열
  • Char, String - 문자와 문자열
    • String 타입의 데이터는 문자열을 큰따옴표(")나 삼중 따옴표(""")로 깜싸서 표현.
문자열 템플릿
  • 문자열 템플릿: String 타입의 데이터에 변수값이나 어떤 연산식의 결과값을 포함해야 할 때는 $ 기호를 이용
Any - 모든 타입 가능
  • Any - 모든 타입 가능 (Auto와 유사)
Unit - 반환문이 없는 함수
Unit - 반환문이 없는 함수
Unit - 반환문이 없는 함수
  • Unit - 반환문이 없는 함수 (void와 유사)
    • 반환 타입이 없을 경우 생략할 수도 있다.
Nothing - null이나 예외를 반환하는 함수
Nothing - null이나 예외를 반환하는 함수
  • Nothing - null이나 예외를 반환하는 함수
널 허용과 불허용
  • 널 허용: 타입 뒤에 '?'를 붙인다.
  • 불허용: 일반 타입형으로 설정시 null은 불허용된다.


 함수 선언하기

함수 선언하기
  • 함수를 선언하려면 fun이라는 키워드를 이용한다.
반환 타입을 선언
  • 반환 타입을 선언할 수 있으며 생략하면 자동으로 Unit 타입이 적용된다.
함수의 매개변수
  • 함수의 매개변수에는 var 나 val 키워드를 사용할 수 없으며 val이 자동으로 적용된다.
함수의 매개변수에는 기본값 선언 가능
  • 함수의 매개변수에는 기본값 선언 가능
매개변수명을 지정하여 호출
매개변수명을 지정하여 호출
  • 매개변수명을 지정하여 호출하는 것을 명명된 매개변수라고 하며, 이렇게 하면 함수 선언문의 매개변수 순서에 맞춰 호출하지 않아도 된다.


 컬렉션 타입

컬렉션 타입
  • Array - 배열 표현
    • 배열은 Array 클래스로 표현
    • 배열의 데이터에 접근할 때는 대괄호( [ ] )를 이용해도 되고, set()이나 get()함수를 이용할 수도 있다.
기초 타입의 배열
기초 타입의 배열
기초 타입의 배열
  • 기초 타입의 배열
    • 기초 타입이라면 Array를 사용하지 않고 BooleanArray, ByteArray, CharArray, DoubleArray, FloatArray, IntArray, LongArray, ShortArray클래스를 이용할 수도 있다.
    • arrayOf()라는 함수를 이용하면 배열을 선언할 때 값을 할당할 수도 있다.
    • 기초타입을 대상으로 하는 booleanArrayOf(), byteArrayOf(), charArrayOf(), floatArrayOf(), intArrayOf(), longArrayOf(), shortArrayOf() 함수를 제공한다.
List, Set, Map
List, Set, Map
List, Set, Map
  • List, Set, Map
    • List: 순서가 있는 데이터 집합으로 데이터의 중복을 허용한다.
    • Set, 순서가 없으며 데이터의 중복을 허용하지 않는다.
    • Map: 키와 값으로 이뤄진 데이터 집합으로 순서가 없으며 키의 중복은 허용하지 않는다.
    • Collection 타입의 클랙는 가변 클래그와 불변 클래스로 나눈다.
    • 불변 클래스는 초기에 데이터를 대입하면 더 이상 변경할 수 없는 타입이다.
    • 가변 클래스는 초기값을 대입한 이후에도 데이터를 추가하거나 변경할 수 있다.
Map 객체는 키와 값
  • Map 객체는 키와 값으로 이뤄진 데이터의 집합
  • Map 객체의 키와 값은 Pair객체를 이용할 수도 있고, '키' to '값'형태로 이용할 수도 있다.


03-3 조건문과 반복문

 조건문 if~else와 표현식

조건문 if~else와 표현식
조건문 if~else와 표현식
  • 일반적인 if~else 문 사용 예이다. (일반 java나 c형태와 같다)
코틀린에서 if~else 는 표현식
  • 코틀린에서 if~else 는 표현식으로도 사용할 수 있다.
  • 표현식이란 결과값을 반환하는 계산식을 말한다.


 조건문 when

조건문 when
  • when문은 select문과 유사하다.
String 형태의 문자열 타입
  • String 형태의 문자열 타입을 조건으로 사용할 수 있다.
when 문에서는 조건을 데이터 타입, 범위
  • when 문에서는 조건을 데이터 타입, 범위 등으로 다양하게 명시할 수 있다.
  • is는 타입을 확인하는 연산자이며, in은 범위 지정 연산자 이다.
when은 if문과 마찬가지로 표현식
  • when은 if문과 마찬가지로 표현식으로도 사용할 수 있다.


 반복문 for와 while

반복문 for와 while
  • for문은 제어 변수값을 증감하면서 특정 조건이 참일 때까지 구문을 반복해서 실행한다.
  • or 문의 조건에는 주로 범위 연산자인 in을 사용한다.
  • for (i in 1..10) { ... } → 1부터 10까지 1씩 증가
  • for (i in 1 until 10) { ... } → 1부터 9까지 1씩 증가(10은 미포함)
  • for (i in 2..10 step 2) { ... } → 2부터 10까지 2씩 증가
  • for (i in 10 downTo 1) { ... } → 10부터 1까지 1씩 감소
컬렉션 타입의 데이터 개수만큼 반복
컬렉션 타입의 데이터 개수만큼 반복
  • 컬렉션 타입의 데이터 개수만큼 반복
  • indices는 컬렉션 타입의 인덱스값을 의미
  • 인덱스와 실제 데이터를 함께 가져오려면 withIndex() 함수를 이용
while 문은 조건이 참이면 중괄호
  • while 문은 조건이 참이면 중괄호 { }로 지정한 영역을 반복해서 실행한다. (java나 c와 같은 형태)


 마치며

 코틀린은 java 언어를 좀 더 쉽게 사용하기 위한 방법으로 고안한 느낌이 많이 든다. java도 c에 비해서는 많이 쉽게 풀이했는데, 코틀린은 이보다 더 사람에 가까운 언어로 노력한 듯한 느낌이다. 하지만 일부는 java exception 발생부분을 미연에 막고자 ? 연산자를 사용하고 있다. 이부분이 좀 혼돈스럽기는 하지만, 연에 익숙해지리라 생각한다. 또 한, c#등에 사용하고 있는 <표현식> 이라는 부분이 등장한다. 이런 부분은 현재 컴퓨터 언어가 나가는 방향인것 같다. 익숙해지는게 편하게 코딩하는 방법이겠다.







💬 남 탓, 날씨 탓


타인이 어리석고 둔감하며
무례하고 거만하며 경솔하고 아둔하다고
판단할 수도 있습니다. 그러고 나면 그 사람의
행동에 당신의 기분이 상하고 화가 날 수 있을
겁니다. 당신의 마음속에서 타인을 판단하는
행위가 일어난다고 칩시다. 그 판단으로
그들이 규정되는 게 아닙니다. 오히려
당신 자신을 타인을 판단할 수 있는
사람으로 규정하는 셈이 되지요.


- 웨인 다이어의 《웨인 다이어의 인생 수업》 중에서 -


* 살면서 조심할 것이
타인에 대한 섣부른 판단입니다.
특히 남 탓을 하는 것은 절대 경계해야 합니다.
바람이 분다고, 햇살이 뜨겁다고, 날이 춥다고
날씨 탓하며 일일이 불평해 봐야 소용없습니다.
다른 사람을 판단하고 탓하는 일이 이와
같습니다. 그 시간에 자신을 돌아보아
스스로를 갖추는 것이 내공이고
어른이 되는 길입니다.






댓글

이 블로그의 인기 게시물

[컴퓨터] Office 무료 설치

[컴퓨터] iptime 관리자계정 찾기 및 설정

[컴퓨터] 윈도우11 디펜더 끄기