최근에 const
키워드 에 대해 읽었으며 혼란스러워합니다! 키워드 const
와 val
키워드의 차이점을 찾을 수 없습니다. 둘 다를 사용하여 변경 불가능한 변수를 만들 수 있습니다. 누락 된 것이 있습니까?
답변
const
s 컴파일 시간 상수입니다. val
런타임에 수행 할 수있는 s 와 달리 컴파일 시간 동안 해당 값을 할당해야 함을 의미 합니다.
즉, const
함수 나 클래스 생성자에 s를 지정할 수 없으며 a String
또는 primitive 에만 s를 지정할 수 없습니다 .
예를 들면 다음과 같습니다.
const val foo = complexFunctionCall() //Not okay
val fooVal = complexFunctionCall() //Okay
const val bar = "Hello world" //Also okay
답변
Luka의 답변에 추가하기 만하면됩니다.
컴파일 타임 상수
컴파일 타임에 알려진 값은 const 한정자를 사용하여 컴파일 시간 상수로 표시 할 수 있습니다. 이러한 속성은 다음 요구 사항을 충족해야합니다.
이러한 속성은 주석에 사용될 수 있습니다.
출처 : 공식 문서
답변
Kotlin을 Java로 변환 할 수 있습니다. 그러면 const에 val 보다 정적 수정자가 하나 더 있음을 알 수 있습니다. . 이와 같은 간단한 코드.
코 틀린 :
const val str = "hello"
class SimplePerson(val name: String, var age: Int)
Java (부분)로 :
@NotNull
public static final String str = "hello";
public final class SimplePerson {
@NotNull
private final String name;
private int age;
@NotNull
public final String getName() {
return this.name;
}
public final int getAge() {
return this.age;
}
public final void setAge(int var1) {
this.age = var1;
}
public SimplePerson(@NotNull String name, int age) {
Intrinsics.checkParameterIsNotNull(name, "name");
super();
this.name = name;
this.age = age;
}
}
답변
모두 val
와const
불변입니다.
const
컴파일 타임 상수를 선언하는 데 사용되는 반면 val
런타임 상수는 선언 됩니다.
const val VENDOR_NAME = "Kifayat Pashteen" // Assignment done at compile-time
val PICon = getIP() // Assignment done at run-time
답변
const kotlin을 Java로
const val Car_1 = "BUGATTI" // final static String Car_1 = "BUGATTI";
val kotlin에서 Java로
val Car_1 = "BUGATTI" // final String Car_1 = "BUGATTI";
간단한 언어로
- const 변수의 값은 컴파일 타임에 알려져 있습니다.
- val 값은 런타임시 상수를 정의하는 데 사용됩니다.
실시 예 1-
const val Car_1 = "BUGATTI" ✔
val Car_2 = getCar() ✔
const val Car_3 = getCar() ❌
//Because the function will not get executed at the compile time so it will through error
fun getCar(): String {
return "BUGATTI"
}
getCar ()는 런타임에 평가되어 그 값을 Car에 할당하기 때문입니다.
또한-
- val 은 읽기 전용이며 런타임에 알려진 불변입니다.
- 런타임에 알려진 var 는 변경 가능
- const 는 불변이며 컴파일 타임에 알려진 변수
답변
kotlin에서 const
그리고 val
둘 다 불변성을 나타내며 값을 읽고 final
Java에서 키워드로 작동 합니다.
val
키워드는 런타임 값 const
을 선언하는 데 사용해야 하고 키워드는 컴파일 시간 값을 선언하는 데 사용해야합니다.
const는 함수 및 생성자가 아닌 기본 데이터 유형에만 사용해야합니다.
Example -
const val fun1 = anyFunctionOrConstructor() // it is not fine
val fun2 = anyFunctionOrConstructor() // it is perfectly fine
const val aa = "My String" // it is perfectly fine