일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- compose
- 자바set
- 문자열
- 배열
- Dependency
- filternotnull()
- 파이썬문법
- 오블완
- ContentProvider
- 파이썬
- 티스토리챌린지
- Kotlin
- list
- 백준파이썬
- 자료형
- android
- Java
- disposableeffect
- Python
- jetpack
- 프로그래머스
- composelifecycle
- Hilt
- Provider
- 자바리스트정렬
- 자바
- programmers
- 리스트
- nullpointerexception방지
- 백준
- Today
- Total
study gomi
Kotlin/코틀린 완전 기본, 기초 문법 모음 (입문) 본문
간만에 안드로이드 스튜디오를 켰더니 너무 낯설어서... 코틀린 기초 강의를 다시 틀었다.
쉬운거긴 한데 처음이라고 생각하고 적어보겠다.
사실 kotlin을 기초부터 배운 적이 없긴 해서... (머쓱)
참고 강의 : https://www.youtube.com/watch?v=8RIsukgeUVw&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN
1. 주석 달기 & 출력하기 기본
// 이렇게 주석을 달아도 되고
/*
* 이렇게 여러 줄
* 주석을 달 수 있음.
* */
fun main() {
print("줄바꿈?")
print("안 함")
println("줄바뀜")
}
변수 섞어서 출력하기 등 참고 : https://comain.tistory.com/333
2. 이름 표기법
- 클래스 명 : 파스칼 표시(모든 단어를 대문자로 시작 ex_ClassName)
- 함수나 변수 이름 : 카멜 표기법(첫 단어만 대문자 ex_functionName)
3. 변수 선언
- var : 일반적으로 통용되는 변수 / 언제든지 읽고 쓰기 가능
- val : 선언시에만 초기화 가능 -> 중간에 값 변경 안 됨.
- 변수는 선언 위치에 따라 클래스에 선언된 변수는 Property(속성) / Local Variable(로컬 변수)로 불림
- 변수 선언 후 사용 전까지 할당 해 줘야 하는데 null 값을 넣을 거면? nullable 변수로 선언 가능
- nullable변수는 값이 null인 상태로 연산할 시 nullPointerException 가능 할 수 있음 -> 주의해서 사용
- 변수 선언을 늦추는 방법은 lateinit, lazy 속성도 있음.
fun main() {
var a: Int = 7
println(a)
// 변경 가능
a = 8
println(a)
// 변경 불가
val b = 9
println(b)
// b = 10
// nullable
var c: Int? = null
print(c)
}
4. 자료형 -> 7번 타입 추론까지
- Any : 어떤 자료형이든 상관없이 호환되는 최상위 자료형
- 정수형
Byte | 8bits |
Short | 16bits |
Int | 32bits |
Long | 64bits |
fun main(){
// 32비트 이내의 10진수 (기본형)
var intValue:Int = 1234
// 64비트인 Long타입의 10진수
var longValue:Long = 1234L
// 16진수
var intValueByHex:Int = 0x1af
// 2진수
var intValueByBin:Init = 0b10110110
// 코틀린은 8진수 지원 x
}
- 실수형
Float | 32bits |
Double | 64bits |
fun main(){
// 실수 기본 (double형)
var doubleValue:Double = 123.5
// 지수 표시법을 추가할 수도 있음(exponential)
var doubleValueWithExp: Double = 123.5e10
// float 형
var floatValue:Float = 123.5f
}
- 문자형 : 문자 하나를 넣을 수 있는 char
- 코틀린은 내부적으로 문자열을 유니코드 인코딩 중에 한 방식인 UTF-16BE로 관리
=> 문자 하나하나가 2bytes의 메모리 공간을 사용한다.
fun main() {
var charValue:Char = 'a'
var koreanCharValue:Char = '가'
}
- 문자열 변수 : 코드에서 "따옴표 안에 써주는데", 여러 줄이면"""따옴표 세 개 사용. 줄바꿈, 특수문자까지 사용 가능"""
fun main() {
val stringValue = "one line string test"
val multilineStringValue = """multiline
string
test"""
}
- 특수문자 지원
\t | 탭 |
\b | 백스페이스 |
\r | 첫 열로 커서 옮김 |
\n | 개행 |
\' | 작은 따옴표 |
\" | 큰 따옴표 |
\\ | 역 슬래시 |
\$ | $ |
\u~~~ | 유니코드 문자 |
- 논리형
fun main() {
var booleanValue:Boolean = true
}
5. 형변환
- 하나의 변수에 지정된 자료형을 호환되는 다른 자료형으로 변경하는 기능
- 논리형은 변환할 수 없음.
- toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toChar()
- 코틀린은 암시적 형변환(변수 할당 시 자료형을 지정하지 않아도 자동으로 형변환) 지원 x
- 명시적 형변환 : 변환될 자료형을 개발자가 직접 지정함.
fun main() {
var a: Int = 54321
// 명시적 형변환
var b: Long = a.toLong()
}
6. 배열
- 기본적으로 Array 클래스(Array<T>)로 제공
- 처음 선언했을 때 전체 크기를 변경할 수 없다는 단점이 있음
- 한번 선언해두면 빠른 입출력이 가능
fun main(){
var intArr = arrayOf(1, 2, 3, 4, 5)
// 빈 배열
var nullArr = arrayOfNulls<Int>(5)
intArr[2] = 8
println(intArr[4])
}
7. 타입 추론(type inference)
- 변수나 함수들을 선언할 때나 연산이 이루어질 때 자료형을 코드에 명시하지 않아도 코틀린이 자동으로 자료형을 추론해주는 기능
- 선언할 때 자료형 생략 가능(변수가 선언될 때 할당된 값의 형태로 해당 변수가 어떤 자료형을 가지는지 추론이 가능)
fun main() {
// Int
// 일반 정수형 리터럴 할당
var a = 1234
// 16진수, 2진수
var e = 0xABCD
var f = 0b0101010
// L이 붙은 정수형 리터럴 => Long
var b = 1234L
// 일반 실수형 => Double
var c = 12.45
// f가 붙은 실수형 => Float
var d = 12.45f
// Boolean
var g = true
// Char
var h = 'c'
}
8. 함수
- 특정한 동작을 하거나 원하는 결과값을 연산하는데 사용
- 함수의 위치는 어디든 상관 x
- 반환값이 있다면 반환값의 형을 함수 명 뒤에 표시
// 3개의 Int를 더하는 함수
fun main() {
println(add(5, 6, 7))
}
fun add(a:Int, b:Int, c:Int): Int {
return a + b + c
}
- 단일 표현식 함수
fun add(a:Int, b:Int, c:Int) = a + b + c
9. 비교 연산자
- 부등호 : <, <=, >, >= , !=
- 등호 : ==
- is 연산자 : 자료형이 맞는지 체크 (ex_ a is Int)
- !is 연산자 : 자료형이 틀린지를 체크
10. if 조건문
fun main() {
var a = 7
if(a>10){
println("a는 10보다 크다")
}else{
println("a는 10보다 작거나 같다")
}
}
11. 다중 조건문 when
- c++의 switch문 같은 것.
- 여러 개의 조건에 맞아도 먼저 부합하는 조건이 실행됨.
fun main() {
doWhen(1)
doWhen(2)
doWhen(12L)
doWhen(3.12e10)
doWhen("kotlin")
}
fun doWhen(a:Any) {
when(a){
1 -> println("정수 1")
"Gomi" -> println("코틀린")
is Long -> println("Long 타입")
!is String -> println("String 타입이 아님")
else -> println("맞는 조건 없음.")
}
}
이렇게 사용해도 됨.
fun doWhen(a:Any) {
var result = when(a){
1 -> "정수 1"
"Gomi" -> "코틀린"
is Long -> "Long 타입"
!is String -> "String 타입이 아님"
else -> "맞는 조건 없음."
}
print (result)
}
12. 반복문
- 조건형 반복문 : 조건이 참인 경우 반복을 유지/while, do-while
fun main() {
var a = 0
while(a<5) {
println(a++)
}
var b = 0
do{
println("b : ${b++}")
} while (b<5)
}
- 범위형 반복문 : 반복 범위를 정해 반복을 수행
fun main() {
for(i in 0..9){
println("i is $i")
}
for(i in 1 until 10 step 3){
println(i)
}
for(i in 10 downTo 5){
println("거꾸로 출력 : $i")
}
for(i in IntRange(1, 10)){
print("$i\\")
}
for(i in LongRange(1L, 10L)){
print("$i\\")
}
for(i in CharRange('a', 'z')){
print("$i\\")
}
}
13. 흐름 제어
- return : 함수 종료 후 값을 반환
- break : 반복문 내의 구문이 실행되는 중간에 즉시 반복문을 종료하고 다음 구문으로 넘어감
- continue : 다음 반복 조건으로 넘어감
- 다중 반복문에서 break나 continue가 적용되는 반복문을 label을 통해 지정할 수 있음.
- label이름은 마음대로.
- 외부 반복문에 레이블 이름과 @기호를 달아줌.
- break/continue문에서 @레이블이름을 달아줌
- 레이블이 달린 반복문을 기준으로 즉시 break를 시켜줌 => break 이중으로 안 써도 됨.
fun main() {
loop@for (i in 1..10){
for (j in 1..10)
if (i==1 && j == 2) break@loop
}
}
'basic > kotlin' 카테고리의 다른 글
[kotlin/코틀린] 리스트 등의 컬렉션에서 null 값을 제거하는 방법 - filterNotNull() (0) | 2024.12.03 |
---|---|
[Kotlin/코틀린] Object (0) | 2024.10.23 |
[Kotlin/코틀린] 숫자 문자열 검사 후 정수형으로 반환하기 (0) | 2024.10.18 |
[kotlin/코틀린] 리스트 자르기 - List의 일부 가져오기 (0) | 2024.10.18 |