Kotlin 기초문법
2024. 4. 23. 15:43ㆍTIL
✔오늘 배운 중요한 🔑 point
- Kotlin에서는 int age= 17이라는 형식대신 var age: Int =17 식으로 변수 선언을 해야한다
- 조건문이나 반복문,고차원 함수 등은 자주활용되기때문에 많은 연습을 통해 익숙해지는것이 중요하다
- 예외처리를 함에 있어서 모든 예외를 미리 파악하고 처리하는것은 쉽지 않은 일이므로 코딩을 자주 하면서 예외가 발생할 수 있는 상황을 많이 경험해보는것이 가장 중요하다
🎯 오늘 배운 내용
변수란?
프로그램이 실행되는 동안 데이터를 임시로 저장하는 메모리 공간
Kotlin에서 변수 선언하기
fun main(){
val name: String = "박형조"
var age:Int = 26
}
변수 선언 순서
1. var(변할 수 있는 변수) , val(변하지 않는 변수) 둘중 하나의 키워드를 선택
2. 변수 이름 정하기(camelCase)
3. 데이터 타입 정하기(정수형이면 :Int, 문자열이면 :String)
4. 변수 안에 집어넣을 값 정하기 ="이름". =26 (초기에는 변수에 값을 꼭 할당하지 않아도 되지만 최종적으로는 값을 할당해야만 한다)
입출력
출력 (프로그램 -> 다른장치)
프로그램 결과를 모니터로 보여주고 프로그램 안에 내용을 메모장으로 내용 전달 하는 등 프로그램에서 다른 장치로 데이터를 전송하는 행위를 출력이라고 한다
fun main(){
val name: String = "홍길동"
var age:Int = 120
println("내 이름은 ${name} 이고 나이는 ${age}살입니다.")
}
입력 (다른 장치 -> 프로그램)
키보드로 입력한 내용, 마이크에서 녹음한 목소리, 메모장의 내용을 불러오는 등 다른 장치로부터 데이터를 불러와서 프로그렘에서 확인하는 행위를 입력이라고 한다
fun main(){
var name: String = readLine()!!.toString()
var age:Int = readLine()!!.toInt()
println("내 이름은 ${name} 이고 나이는 ${age}살입니다.")
}
조건식
if else
if () 괄호안에 조건이 true일때 중괄호 안의 내용을 실행하고 괄호안의 조건이 false라면 else문을 실행시킴
fun main(){
var name:String = readLine()!!.toString()
if(name.length>5){
println("${name}의 길이는 ${name.length}자나 됩니다 혹시 외국인이신가요")
}
else{
println("당신의 이름은: ${name}입니다 적당한 길이입니다 ")
}
}
when
when() 괄호안에 들어가있는 변수 또는 상수 값의 경우에 따라 실행, else if가 많아지게 될때는 when을 사용하는게 가독성이 더 뛰어나다!
fun main(){
println("오늘의 별자리운세! 당신의 별자리는?: ")
var star:String = readLine()!!.toString()
when(star){
"천칭자리"->{
println("오늘 당신의 별자리를 보면, 새로운 일을 도모하기에 적절한 어쩌구저쩌구")
}
"전갈자리"->{
println("많은 사람들의 당신에 대한 기대가 큽니다. 그러나 부담스러 어쩌구저쩌구")
}
"염소자리"->{
println("흐뭇한 하루가 예상됩니다. 평소 쌓아 온 인덕이 오늘에 와서 어쩌구저쩌구")
}
else ->{
println("천청,전갈,염소자리만 구현되어있습니다")
}
}
}
반복문
for
반복문에서 사용할 변수를 하나 지정하고 변수가 반복할 구간을 정해주면 중괄호 안의 코드를 반복 시행한다
fun main(){
println("구구단을 외우자!")
for(i in 1..9){
println("${i}단 시작!")
for(j in 1..9){
println("${i} x ${j} = ${i*j}")
}
}
}
while
괄호안의 내용이 true일경우에 계속해서 반복한다! 무한루프를 방지하기 위해서 신경을 써줘야한다
fun main(){
println("구구단을 외우자!")
var i=1;
while(i<10){
var j=1;
println("${i}단 시작!")
while(j<10){
println("${i} x ${j} = ${i*j}")
j++
}
i++
}
}
형변환
다른타입으로 변환하는것을 의미하며 타입 캐스팅이라고도 한다
기본적인 형변환
fun main(){
val age:String = "423"
println(age.toInt()+577)
}
조건문을 이용한 형변환
fun main(){
printLength(422)
}
fun printLength(value: Any) {
if(value is String){
println(value.length)
}
else{
println("string타입이 아닙니다")
}
}
Collection
데이터를 수집하거나 그룹화하는 자료구조
List
순서가 있는 데이터의 컬렉션
MutableList(변경 가능) List(변경 불가능)
요소를 추가하거나 제거 가능 요소 읽기만 가능하고 크기는 변경되지 않음
fun main(){
val iAmAmutList: MutableList<Int> = mutableListOf(1,2,3)
val iAmAList:List<String> = listOf("스파르타","코딩","2주차","TIL")
println(iAmAmutList)
println(iAmAList)
}
Map
키와 값의 쌍으로 이루어진 자료구조, 키를 통해 값을 찾을 수 있다
fun main(){
var fruits:MutableMap<String,Int> = mutableMapOf("apple" to 5, "watermelon" to 4, "orange" to 3)
// val appleCount = map["apple"]
fruits["watermelon"]=5
println(fruits)
fruits.remove("orange")
println(fruits)
}
고차함수
함수를 인자로 받거나 함수를 반환하는 함수를 고차함수라 하며 람다표현식을 통해 작성 가능하다
fun main(){
val numbers= listOf(1,2,3,4,5,6)
numbers.forEach{it-> println(it)}
val names= listOf("이름","나이","성별")
names.forEach{ println(it)} //it-> 부분 생략가능
}
Nullable type
null이 될 수 있는 변수를 의미한다. 변수 형태에 ?를 붙여서 표현
fun main(){
val nullableString: String? = "문자열"
if (nullableString != null) {
println(nullableString.length)
}
}
예외 처리
예상치 못하는 상황에서 다양하게 오류가 발생하는데 이를 다루는 방법이 여러가지 있다
try-catch
try에는 예외가 발생할 수 있는 코드, catch에는 예외가 발생했을때 수행할 코드
fun main() {
val userInput = "abc"
val result = safeIntegerConversion(userInput)
println(result)
}
fun safeIntegerConversion(str: String): Int {
return try {
str.toInt()
} catch (e: NumberFormatException) {
println("Error: ${e.message}")
0
}
}
abc문자형을 .toInt()를 사용하여 int형으로 바꾸려 한 부분이 오류가 발생했지만 예외처리를 통해 0이 출력됨
finally
예외 발생 여부에 관계없이 항상 실행되는 코드
fun main() {
performFileOperations()
}
fun performFileOperations() {
val file = File("example.txt")
try {
// 파일 관련 작업 수행
println("File operations performed.")
} finally {
// 항상 실행되는 블록
file.close()
println("File closed.")
}
}
finally블록은 항상 실행된다
🤔 어떻게 활용할까?
Kotlin의 가장 큰 특징 중 하나가 NullSaftey이기때문에 try-catch, finally 등 예외처리를 적극적으로 활용하는것이 필요해보인다.
📓 오늘의 한줄
When you want something, all the universe conspires in helping you to achieve it
- Paulo Coelho -
'TIL' 카테고리의 다른 글
Test Code 작성을 생활화 합시다 (0) | 2024.04.25 |
---|---|
Class에 관하여 (0) | 2024.04.24 |
Kotlin과 사용규칙 (0) | 2024.04.22 |
미니 팀프로젝트 회고 (0) | 2024.04.19 |
배포 진행시 예상치 못한 오류 발생 (1) | 2024.04.18 |