[앱 스쿨 2기 : Android] 3주차 2023.05.11 (Kotlin)

hxeyexn·2023년 5월 12일
0
post-thumbnail

📅 2023.05.11

📂Kotlin01_HelloWorld ~ 📂Kotlin08_LoopEx

Kotlin

Kotlin 언어 특징

  • Java 언어와 비교하여 매우 간단한 문법 제공
  • Null 안정성을 위해 Null 허용 변수와 허용하지 않는 변수를 구분하여 사용할 수 있음
  • 예외처리를 강제하지 않음
  • 모든 기본 자료형 값을 객체로 관리
  • 연산자의 재구현을 지원
  • 객체지향 프로그래밍과 함수형 프로그래밍 방식 모두 가능
fun main() {
	print("Hello World!")
}

기본 문법

출력문

  • print : 값을 출력하고 밑으로 내리지 않음
  • println : 값을 출력하고 밑으로 내림
  • ${값} : 값을 같이 출력할 때는 ${값}을 사용
fun main() {
	println("값 : ${100}")
} 

세미콜론

  • 명령문 마지막의 세미콜론은 선택사항

📂Kotlin02_Basic


변수와 자료형

리터럴

  • Raw string : """문자열"""
fun main() {
    println(
        """동해물과 백두산이
        |마르고 닳도록
        |하느님이 보우하사
        |우리나라 만세
    """.trimMargin()
    )
}
  • Nothing : 함수가 정상적으로 끝나지 않는다를 의미
  • Unit : void를 의미

변수 선언

  • var 변수명:클래스타입 : 선언 이후 값을 다시 저장 O
  • val 변수명:클래스타입 : 선언 이후 값을 다시 저장 X → final 변수
  • 타입 생략 시 지정하는 값에 따라 자료형이 자동 결정
  • ${} 안에 변수 작성할 때는 {} 생략 가능
fun main() {
	var a1: Int = 100
    println("a1 : $a1")
    
    var a2 = 200
}

null 허용 변수

  • 변수를 선언할 때 null 허용 여부를 설정
  • var/val 변수명:자료형 = 값 : null을 허용하지 않는 변수
  • var/val 변수명:자료형? = 값 : null을 허용하는 변수
  • 변수 뒤에 ?을 붙히면 null 값을 담을 수 O
fun main() {
	var a1: Int? = null
}

자료형

  • kotlin은 자료형 없음, 클래스 타입만 존재

📂Kotlin03_Variable


함수

코드를 미리 작성해 놓고 필요할 때 불러 다 쓰는 개념

  • Java에서는 클래스에 메서드를 만들어 사용하지만 Kotlin은 C언어처럼 함수라는 개념을 제공
  • 자바 코드로 변경되면 static 메서드로 정의됨

함수 문법

fun 함수명(매개변수):반환값 타입 {
	코드
}

기본 함수

fun main() {
	// 함수 호출
	test1() 
}

fun test1() {
	println("test1 함수 호출")
}

매개변수

  • 매개변수는 `변수명:클래스타입" 형태로 정의
  • 함수 호출 시 전달하는 값에 매개변수를 지정하여 전달 O
  • 함수의 매개변수는 타입 생략 X
fun test1(a1: Int, a2: Double) {
	
}
#### 기본 값이 설정된 매개변수
- 기본 값을 설정할 경우 값을 전달하지 않으면 기본 값이 매개 변수에 설정
```kotlin
fun test1(a1: Int = 1, a2: Int = 2) {
	
}

반환타입

  • 함수에 반환할 값이 있다면 return 문을 통해 반환
fun main() {
	// 반환값이 있는 메서드 호출 
	var r1 = test1(100, 200)
    println("r1 : $r1")
}

fun test1(a1: Int, a2: Int) : Int{
	return a1 + a2
}

반환 타입이 없는 함수

  • 반환할 값이 없으면 반환 타입을 Unit로 지정
  • Unit 생략 가능
fun test1(): Unit {
    
}

함수의 오버로딩

  • 매개변수의 형태를 다르게 하여 같은 이름으로 여러 함수를 정의
fun main() {
	test1()
    test1(100)
    test1(100, 200)
}

// 함수 밖에 선언된 변수는 static 변수로 정의
var a1: Int = 100

fun test1() {
	println("매개변수 없음")
}
fun test1(a1: Int) {
	println("a1 : $a1")
}
fun test1(a1: Int, a2: Int) {
	println("a1 : $a1, a2 : $a2")
}

지역함수

  • 함수 내에 정의한 함수
  • 함수를 정의한 함수 안에서만 호출 가능
fun main() {
	
    // 지역함수를 가진 함수 호출
    test1()
    
    //test1 내부에 만든 지역함수 호출 불가
    test2()
}

fun test1() {
	println("test1")
    
    fun test2() {
    	println("test2")
    }
    // 지역함수 호출
    test2()
}

📂Kotlin04_Function


IF

IF문을 활용한 변수값 설정

fun main() {
	var a1: String = if (a1 == 10) "10 입니다" else "10이 아닙니다")
}

📂Kotlin05_IF


When

수행할 코드가 한줄만 있다면 { } 생략

when(변수 or 수식) {1 -> 코드
    값2 -> 코드
}

수행할 코드가 두 줄 이상이면 { }로 묶음

when(변수 or 수식) {1 -> {
    	코드
        코드
    }2 -> {
    	코드
        코드
    }
}

두 가지 이상의 조건을 만족하는 것도 설정 가능

when(변수 or 수식) {1,2 -> 코드
    값3,4 -> 코드
}

논리값은 허용되지 않음

    val a1 = true
    when(a1) {

    }

범위 지정

    val a5 = 5
    when(a5){
        in 1..3 -> 코드
        in 4..6 -> 코드
        in 1..6 -> 코드
        else -> 코드
    }

📂Kotlin06_When


반복문

for

fun main() {

    // 변수는 타입을 정하지 않아도 된다.
    for(item1 in 1..10){
        
    }

    // 2씩 증가 시키는 경우
    for(item2 in 1..10 step 2) {
        
    }

    // 10부터 감소
    for(item3 in 10 downTo 1){

    }


    // 10 부터 2씩 감소
    for(item4 in 10 downTo 1 step 2){

    }
}

while, do while

  • 자바와 동일

📂Kotlin07_Loop


profile
Android Developer

0개의 댓글