개발일지

kotlin 변수 샘플 앱

앱또웹 2024. 11. 20. 14:29
728x90
반응형

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가 불필요 선언 시 알려줍니다

 

 

 

 

 

728x90
반응형