출처 : Tekhit Android App School / Soft campus 윤재성 강사님
Tekit Android App School의 2일차까지의 내용을 정리하는 글입니다. 사실 이 과정을 할까 말까 고민을 정말 많이 했습니다.🤔 교육 과정에 Jetpack이나 Coroutine에 대한 내용이 없고 내가 못봤나? 다른 국비 과정을 수료한 친구는 그냥 인프런 강의만 떤져줬다고 ... 게다가 5년에 한 번 하는 과정인데 사실상 저 한탠 마지막인...
막상 수업을 들어보니까 듣길 너무 잘한거 같아요 ! 제가 원하는 교육 과정도 다 들어있고 무엇보다 과제가 많은게 너무 좋았어요! 운영진 스탭 분들도 질문 올리면 거의 10초만에 대답해주시고 강사님 교육 방식도 저한태 딱 맞는 스타일이더라구요 😁
Kotlin Compile Process
Kotlin은 JVM 위에서 동작하기 때문에 Java의 Compile 과정과 유사합니다.
코틀린을 사용한 안드로이드의 아키텍쳐는 이 글을 참고해 주세요
- *.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 -> "그 외의 문자열"
}
'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 |