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

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

夹谷苗宣
2023-03-14

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

共有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

只是为了补充Luka的回答:

编译时常数

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

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

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

资料来源:正式文件

云星波
2023-03-14

常量是编译时间常量。这意味着它们的值必须在编译时赋值,而不像vals那样可以在运行时进行赋值。

这意味着,常量永远不能赋给函数或任何类构造函数,而只能赋给字符串或基元。

例如:

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

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

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

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

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

  • 问题内容: 我不知道是什么样的区别,并在 ES6 。两者都是块作用域的,如以下代码中的示例所示: 在ES5中,输出为: 但是在ES6中它将是: 我想知道为什么 ES6 允许更改值,问题是为什么我们现在应该使用’const’?我们可以用“ let”代替吗? 注意 :jsbin可以用于测试,选择 JavaScript 运行 ES5 代码,并选择 Traceur 使用 ES6 功能运行它。 问题答案:

  • 本文向大家介绍说下var、let和const有什么区别?相关面试题,主要包含被问及说下var、let和const有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 var定义变量,let定义常量,const定义变量。 var存在变量提升,let和const不存在变量提升 let,const部分说反了吧...