Android 什么时候生成/创建/编译字符串?

Android 什么时候生成/创建/编译字符串?,android,string,kotlin,sharedpreferences,companion-object,Android,String,Kotlin,Sharedpreferences,Companion Object,这些字符串什么时候会得到它们的值,它们应该都产生相同的值吗 class StringFactory{ companion object{ val str1 = App.shared.userSettings.getString(key, "") val str2: String get(){ return App.shared.userSettings.getString(key, "") }

这些字符串什么时候会得到它们的值,它们应该都产生相同的值吗

class StringFactory{
    companion object{
        val str1 = App.shared.userSettings.getString(key, "")

        val str2: String
        get(){
            return App.shared.userSettings.getString(key, "")
        }

        val str3 = getUserKey()
        fun getUserKey():String {
            return App.shared.userSettings.getString(key, "")
        }
    }
}
这些将在何时改变其价值? 当代码编译时,当我阅读它们时,或者在其他时间?

在创建StringFactory.Companion时,会分配str1和str3属性,并且从不更改它们的值

在str2中,只要您访问该属性,它就会从userSettings获取该值。没有用于存储该值的字段。它的行为基本上与getUserKey相同