kotlin 변수 샘플 앱
2024.11.18 - [개발일지] - Java 변수 샘플 앱
Java 변수 샘플 앱
이제 UI가 메인 액티비티랑 연결되었으니기능 구현을 해보아요! 최초 화면이 보일 때 시간을 보여주고 버튼이 클릭된 횟수를 화면에 나타내고기능 구현을 위해 변수를 사용하는데,Java에서 '타입
app-of-web.tistory.com
(Java)자바를 했으니 이제 (Kotlin)코틀린 해야죠?
VariableKotlinActivity.kr
package com.example.kotlinsample
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.kotlinsample.databinding.LayoutVariableBinding // ViewBinding 클래스 가져오기
import java.text.SimpleDateFormat
import java.util.*
class VariableKotlinActivity : AppCompatActivity() {
// 클릭된 횟수를 저장할 변수
var clickCount = 0
// Activity가 시작된 시간
val startTime = System.currentTimeMillis()
private lateinit var binding: LayoutVariableBinding // ViewBinding 객체 선언
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ViewBinding 초기화 및 레이아웃 설정
binding = LayoutVariableBinding.inflate(layoutInflater)
setContentView(binding.root)
// 시작시간을 텍스트 형태로 변환
val timeText = SimpleDateFormat("HH:mm:ss", Locale.KOREA).format(startTime)
// 시작시간을 텍스트뷰에 보여줌
binding.startTimeLabel.text = "Activity 시작시간: $timeText"
// 클릭된 횟수 보여줌
binding.clickCountLabel.text = "버튼이 클릭된 횟수: $clickCount"
// 버튼에 이벤트 리스너 설정
binding.button.setOnClickListener {
// 클릭된 횟수 추가
clickCount += 1
// UI에 클릭횟수 다시 보여줌
binding.clickCountLabel.text = "버튼이 클릭된 횟수: $clickCount"
}
}
}
변수의 불변성과 Java보다 조금 더 간결하게 작성된 코드를 볼수 있습니다
val startTime = System.currentTimeMillis()
코틀린(Kotlin)에서 'val' 키워드를 사용한다면 자바(Java)의 'final' 키워드를 붙인 것과 같이 '불변 변수'가 됩니다
반면 클릭된 횟수는 프로그램 실행 중 계속 값을 변경하여 저장하죠
이런 경우 코틀린은 "변경할 수 있다"는 의미의 'var' 키워드를 사용합니다
var clickCount = 0
이처럼 코틀린은 Java와 달리 아예 변수 선언부터 해당 변수가 값을 변경할 수 있는지 여부를 키워드로 구분 합니다
'val, var' 키워드는 각각 변수가 불변인지 아닌지 정하는 키워드가 됩니다
val, var
val | * 변경 불가능한 참조를 저장하는 변수로서, 특정한 값을 의미하는 'Value'를 나타냅니다. * val로 선언하면 초기화 이후 '변수의 재 대입'이 불가능합니다. * Java에서 'final' 키워드로 선언하는 것과 같습니다. |
var | * 변경 가능한 참조입니다. 변경 가능하다는 의미의 'Variable'을 나타냅니다. * Java의 일반적인 변수에 해당합니다. |
왜 코틀린은 변수를 선언하는 키워드 자체로 변수의 가능성을 구분짓는 것일까요?
그 이유는 프로그래밍에 변수값을 변경할 필요가 없고,
변수를 불변으로 하는 경우 여러 면에서 유리하다는 것을 알게 되었기 때문입니다
변수를 사용할 시 대부분의 경우 변수의 최초 값 대입 이후로 굳이 값을 변경하지 않는 경우가 많습니다
임시적 사용 시 지역변수, 함수의 파라미터와 같은 경우 대부분 값을 변경하지 않죠
반면 변수를 불변 선언 시 앞서 경우 처럼 '메모리, 멀티쓰레드 안전성, 함수형 코드' 등 얻을 수 있는 이점이 많습니다
때문에 코틀린은 가급적 모든 변수를 'val'로 선언하여 불변 설정하고
필요 시 'var'를 쓰도록 권장합니다
때문에 IDE가 불필요 선언 시 알려줍니다