当前位置: 首页 > 知识库问答 >
问题:

“const”和“val”之间有什么区别?

微生啸
2023-03-14

我最近读到了关于const关键字的文章,我很困惑!我找不到const和val关键字之间的任何区别,我的意思是我们可以使用它们来生成一个不可变的变量,还有什么我遗漏的吗?

共有3个答案

巫马俊力
2023-03-14

您可以将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;
   }
}
孙朝明
2023-03-14

只是为了补充卢卡的回答:

编译时常量

可以使用const修饰符将编译时已知值的属性标记为编译时常量。此类属性需要满足以下要求:

  • 对象声明或伴生对象的顶层或成员
  • 使用字符串类型或基元类型的值初始化
  • 自定义getter

这些属性可以在注释中使用。

来源:官方留档

翟沈义
2023-03-14

常量是编译时常量。这意味着它们的值必须在编译时分配,而不像val可以在运行时分配。

这意味着,const永远不能分配给函数或任何类构造函数,而只能分配给字符串或原语。

例如:

const val foo = complexFunctionCall()   //Not okay
val fooVal = complexFunctionCall()  //Okay

const val bar = "Hello world"           //Also okay
 类似资料:
  • 我最近读到了关键字,我很困惑!我找不到和关键字之间的任何区别,我的意思是我们可以使用它们来创建一个不可变的变量,还有什么我遗漏的吗?

  • 问题内容: 在学习电子时,我发现了两种获取BrowserWindow对象的方法。 和 和之间有什么区别? 我不明白为什么可以使用。我是否想念有关JS的重要信息? 问题答案: 这两段代码是等效的,但是第一段代码使用的ES6分解分配要短一些。 这是一个如何工作的简单示例:

  • 和之间有什么区别? 什么时候我只能使用其中一个

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: jQuery的功能和之间有什么区别? 您将在哪里使用另一个? 问题答案: 适用于输入元素(或任何具有value属性的元素?),而不适用于输入元素。 获取输入元素的值- 与类型无关。获取所有匹配元素的innerText(不是HTML): 结果是一个字符串,其中包含所有匹配元素的组合文本内容。此方法对HTML和XML文档均适用。不能在输入元素上使用。对于输入字段文本,请使用val属性。 获

  • Kotlin中的和有什么区别? 如本链接所述: 只读属性声明的完整语法与可变属性声明的不同之处在于两个方面:它以val而不是var开头,并且不允许setter。 但就在前面有一个使用setter的示例。 为什么我们两者都需要? 这不是Kotlin中变量的重复,与Java的区别:“var”vs.“val”?因为我询问的是与文档中的特定示例相关的疑问,而不仅仅是一般性的疑问。