[TIL] 코틀린 기초
Do it! 코틀린 프로그래밍 <첫째마당, 코틀린 기본 익히기> 학습
✏️1. 코틀린 시작하기✏️
1-1. 코틀린의 특징
- 안드로이드 공식언어
- JVM, JS, Native 기반의 프로그래밍이 가능한 멀티 플랫폼 언어
- 컴파일될 때 자료형을 검사하여 확정하는 정적 언어
-> 오류를 초기에 발견할 수 있어 프로그램의 안정성⬆️ - 널 포인터 예외(NPE: NullPointerException) 예방 가능
- 여러가지 생략된 표현이 가능하여 간결하며 효율적
- 함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능
- 세미콜론(;) 생략
1-2. 코틀린 시작하기
fun main() {
println("Hello Kotlin!")
}
- 코틀린 코드는 JVM에서 실행
- main( ) 함수가 있는 파일 이름을 기준으로 자바 클래스가 자동 생성
1-3. 프로그램의 메모리 영역
✏️2. 변수와 자료형, 연산자✏️
2-1. 코틀린 패키지
- 프로젝트(Project) = 모듈(Module) + 패키지(Package) + 파일(File)
- 대규모 프로젝트 진행시 기능을 모듈로 분리하여 관리
- 패키지를 만들어야 하는 이유
-> 다수의 프로그래머가 같은 프로젝트를 진행하다 우연히 같은 이름의 클래스가 만들어진 경우 서로 다른 패키지에 들어있다면 오류가 발생하지 않음 - 패키지명은 웹사이트 도메인을 거꾸로 뒤집은 모양
2-2. 변수와 자료형
- val (Value) : 최초로 지정한 값으로 초기화하면 더이상 변경할 수 없는 읽기전용(불변) 변수
- var (Variable) : 최초로 지정한 변수의 초기값이 있더라도 값이 변경 가능한(가변) 변수
- val로 변수를 선언해 놓고 변경해야 할 때 var로 바꾸는 방법 권장
- 코틀린은 자료형을 지정하지 않아도 변수에 할당된 값을 보고 자료형을 추론하여 지정
- 단, 초기값을 할당하지 않으면 자료형을 반드시 지정해 주어야함
- 코틀린의 자료형은 참조형 자료형을 사용
📌 기본형과 참조형
- 기본형(Primitive Data Type)
- 프로그래밍 언어 내에 내장되어있는 가공되지 않은 순수한 자료형
- java ➡️ int, long, float, double 등..
- 참조형보다 코드 수행시간이 더 빠름
- 참조형(Reference Type)
- 객체를 생성하고 동적 메모리 영역에 데이터를 둔 다음 이것을 참조하는 자료형
- java ➡️ String, Data 등 ..
- 참조형으로 선언한 변수는 성능 최적화를 위해 코틀린 컴파일러에서 다시 기본형으로 대체( 코틀린 컴파일러가 자동으로 최적화를 수행)
📌 기본형과 참조형의 동작 원리
int a = 77;
Person person = new Person();
2-3. 부동소수점
- 무한한 실수의 개수에 비해 유한한 메모리공간의 단점을 극복하기 위하여 실수를 표현할때 사용하는 방식
- 실수를 가수와 지수로 나누어 표현
2-4. 문자열 자료형(String)
문자열 자료형은 기본형에 속하지 않는 배열 형태로 되어있는 특수한 자료형
📌 문자열 자료형 선언과 저장 방식 이해하기
fun main(){
var str1: String = "Hello"
var str2 = "World"
var str3 = "Hello"
}
2-5. 자료형 검사하고 변환하기
- 코틀린은 변수를 사용할 때 반드시 값이 할당되어 있어야한다는 원칙이 있음
- null 상태인 변수를 허용하려면 물음표(?)기호를 사용해 선언해야함
- 변수에 아예 null을 허용하지 않아 더 안전한 프로그래밍을 할 수 있음
📌 null을 허용한 변수 사용하기
- 세이프콜(?.)
- null이 할당되어 있을 가능성이 있는 변수를 검사하여 안전히 호출
println("str:1 $str length: ${str?.length}")
-> str1을 검사한 다음 null이 아니면 length에 접근
-> 아무것도 들어있지 않다면 null을 출력
- non-null 단정기호(!!)
- 변수에 할당된 값이 null이 아님을 단정
- 컴파일러가 null 검사 없이 무시
- 따라서 변수에 null이 할당되어 있어도 컴파일은 진행됨. 하지만 실행중 NPE(NullPointerException)발생
📌 세이프콜(?.)과 엘비스 연산자(?:)를 활용해 null을 허용한 변수 더 안전하게 사용하기
- 엘비스 연산자(?:)
- 변수가 null인지 아닌지 검사하여 null이 아니라면 왼쪽 식을 그대로 실행하고 null 이라면 오른쪽 식을 실행
${str1?.length ?: -1}
if (str != null) str1.length else -1
- 위와 아래 코드는 동일
2-6. 스마트 캐스트
컴파일러가 자동으로 해주는 형변환
-
Number
- 대표적으로 스마트 캐스트가 적용되는 자료형
var test: Number = 12.2
// test는 Float형으로 스마트 캐스트
-
Any
- 최상위 기본 클래스
- 어떤 자료형이라도 될 수 있는 특수한 자료형
- 언제든 필요한 자료형으로 자동변환 하는것을 묵시적 변환이라고 함
-
is
if(num is Int)
// num과 Int의 자료형이 같으면 true, 다르면 false를 반환- 변수의 자료형을 검사한 다음 그 변수를 해당 자료형으로 변환하는 기능이 있음
val x: Any x = "Hello" if(x is String){ //Any형인 x가 String으로 스마트 캐스트 print(x.length) }
-
as 에 의한 스마트 캐스트
val x: String = y as String
- 형변환이 가능하지 않으면 예외를 발생
Author And Source
이 문제에 관하여([TIL] 코틀린 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zzangdd/TIL-코틀린-기초저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)