본문 바로가기

TEKHIT ANDROID SCHOOL

[TEKHIT] 기본 문법

출처 : Tekhit Android App School / Soft campus 윤재성 강사님

Tekit Android App School의 2일차까지의 내용을 정리하는 글입니다. 사실 이 과정을 할까 말까 고민을 정말 많이 했습니다.🤔 교육 과정에 Jetpack이나 Coroutine에 대한 내용이 없고 내가 못봤나?  다른 국비 과정을 수료한 친구는 그냥 인프런 강의만 떤져줬다고 ... 게다가 5년에 한 번 하는 과정인데  사실상 저 한탠 마지막인...

 

막상 수업을 들어보니까 듣길 너무 잘한거 같아요 ! 제가 원하는 교육 과정도 다 들어있고 무엇보다 과제가 많은게 너무 좋았어요! 운영진 스탭 분들도 질문 올리면 거의 10초만에 대답해주시고 강사님 교육 방식도 저한태 딱 맞는 스타일이더라구요 😁 

 

Kotlin Compile Process

Kotlin은 JVM 위에서 동작하기 때문에 Java의 Compile 과정과 유사합니다.

코틀린을 사용한 안드로이드의 아키텍쳐는 이 글을 참고해 주세요 

 

Android Platform Architecture

[안드로이드 공식문서] 애플리케이션 기본 항목 | Android 개발자 | Android Developers 애플리케이션 기본 항목 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Androi

chanho-study.tistory.com

  • *.kt 파일을 컴파일 하면 코틀린 컴파일러가 *.class 파일로 변환합니다.

 

수업 듣다가 원시 타입의 메모리 크기가 갑자기 기억이 안나더라구요😅 학교 왜 다녔니 ?...

  Type Byte Bit
정수 byte 1 8
char 2 16
short 2 16
int 4 32
long 8 64
실수 float 4 32
double 8 646
논리 boolean 1 8

 

주석

  • // : 한줄 주석
  • /* */ : 여러줄 주석

출력문

  • print : 값을 출력
  • println : 값을 출력하고 한줄 엔터(System.out.println() 이랑 같음)
  • ${} : 변수를 출력 , 함수도 실행할 수 있음
val year = checkEra(input) + input.substring(0,2)
val month = input.substring(2,4)
val day = input.substring(4,6)

print("${year}년 ${month}월 ${day}에 태어난 ${checkGender(input)}입니다.")

fun checkGender(input: String):String = when(input.toCharArray()[6]) {
    '1', '3', '9' -> "남성"
    '0', '2', '4' -> "여성"
    '5', '7' ->  "외국인 남성"
    else -> "외국인 여성"
}

함수

  • 파라미터에 디폴트 값을 줄 수 있다.
fun test3(a1:Int, a2:Double=11.11, a3:String="기본문자열"){
    println("test3 함수 호출")
    println("a1 : $a1")
    println("a2 : $a2")
    println("a3 : $a3")
}
  • return을 만나면 함수가 종료되고 반환 타입에 따른 값을 반환한다.
fun test5(a1:Int, a2:Int):Int{
    var r1 = a1 + a2
    // 함수의 수행을 종료하고 값을 반환한다.
    return r1
}
  • overloading : 파라미터의 타입이나 개수를 다르게하여 같은 이름의 함수를 여러개 만듬
fun add(a1:Int, a2:Int): Int{
    return a1+a2;
}

fun add(a1: Double, a2: Double): Double{
    return a1+a2;
}

IF

if(조건식) { } else if(조건식) { } else { }
  • 조건에 따른 분기문을 수행하고 수행 코드가 한 줄이면 { } 생략 가능
// 조건식의 결과에 따라 변수에 값을 저장한다.
var a4 = ""
var a5 = 10
if(a5 == 10){
    a4 = "10 입니다"
} else {
    a4 = "10이 아닙니다"
}
println("a4 : $a4")

fun test(a: String): Int = if (a == "b") 1 else 0

print(test("a"))

When

when(변수 or 수식) {  
       값 -> 코드  
       값 -> 코드  
       else -> 코드
}
  • Java의 Switch-Case 문법과 비슷하고 수식이나 값의 결과에 따라 분기처리
  • 기본형
// 변수 a1의 값에 맞는 부분이 수행
when(a1){
    1 -> print("a1은 1입니다.")
    5 -> print("a1은 1입니다.")
    10 -> print("a1은 1입니다.")
    else -> print("a1은 1,5,10이 아닙니다.")
}
  • 조건 다수
// 두 가지 이상의 조건을 만족하는 것도 설정 가능하다.
val a2 = 3
when (a2){
    1, 2 -> println("a2은 1이거나 2입니다")
    3, 4 -> println("a2는 3이거나 4입니다")
    5, 6, 7  -> println("a2는 5이거나 6이거나 7입니다")
    else -> println("a2는 1, 2, 3, 4, 5, 6, 7이 아닙니다")
}
  • 실수형
// 실수도 가능하다.
var a3 = 55.55
when(a3){
    33.33 -> println("a3은 33.33입니다")
    55.55 -> println("a3은 55.55입니다")
    77.77 -> println("a3은 77.77입니다")
    else -> println("a3dms 33.33, 55.55, 77.77이 아닙니다")
}
  • 문자형
// 문자열
var a4 = "문자열2"
when(a4){
    "문자열1" -> println("첫 번째 문자열 입니다")
    "문자열2" -> println("두 번째 문자열 입니다")
    "문자열3" -> println("세 번째 문자열 입니다")
    else -> println("else 문자열 입니다")
}
  • 논리형
// 논리값
// 논리값을 사용할 경우 true, false 모두 처리해줘야 한다.
val a5 = true
when(a5){
    true -> println("a5는 true 입니다")
    false -> println("a5는 false 입니다")
}
  • 범위 지정
val a6 = 5
when(a6){
    in 1..3 -> println("a6은 1부터 3사이 입니다")
    in 4..6 -> println("a6은 4부터 6사이 입니다")
    else -> println("a6은 1 ~ 6사이의 숫자가 아닙니다")
}
  • 함수 축약 가능
// 조건에 따라 값을 반환하는 함수
    fun setValue1(a1:Int) : String{
        if(a1 == 1){
            return "문자열1"
        } else if(a1 == 2){
            return "문자열2"
        } else {
            return "그 외의 문자열"
        }
    }

    //  위의 함수의 코드를 when으로 바꿔 쓸 수 있다.
    fun setValue2(a1:Int) = when(a1){
        1 -> "문자열1"
        2 -> "문자열2"
        else -> "그 외의 문자열"
    }

 

Git Hub

 

GitHub - chanho0908/tekit_android_app_school

Contribute to chanho0908/tekit_android_app_school development by creating an account on GitHub.

github.com

 

'TEKHIT ANDROID SCHOOL' 카테고리의 다른 글

[TEKHIT] Abstract & Interface  (0) 2024.01.05
[TEKIT] 지연 초기화와 오버라이딩  (0) 2024.01.05
[TEKHIT] 상속과 프로퍼티  (0) 2024.01.05
[TEKHIT] Constructor  (0) 2024.01.05
[TEKHIT] 객체 지향 프로그래밍  (0) 2024.01.02