Kotlin- 编译时常量

编译时常量:

首先我觉得应该说明:编译时常量并不是Kotlin独有,在Java或者说其他语言中同样存在编译时常量。

const val c = 112;
fun main() {
    
    
    val b: Char = '1'
    val a: Int = b.code
    println(c)
}

Kotlin中的编译时常量需要使用const val修饰,并且在函数之外定义。

知道Kotlin中怎么写编译时常量之后,下面我们可以仔细了解一下编译时常量这个概念。

  • 编译期常量指的就是程序在编译时就能确定这个常量的具体值。
  • 非编译期常量就是程序在运行时才能确定常量的值,因此也称为运行时常量。

Java中的编译时常量:

​ 在Java中,编译期常量指的是用final关键字修饰的基本类型或String类型并直接赋值(非复杂运算)的变量(无论是否用static修饰),是编译器的一种优化,体现在字节码文件中;运行是常量是由运行时解释器解释完成的

public class ConstantTest {
    
    
    public final int a = 1;     //编译时常量
    public final int b = 1+2;   //编译时常量 支持加减乘除等简单运算
    public final int c = b+3;   //编译时常量 
    public final static int d = 10;   //编译时常量 
    public final String str1 = "abc"; //编译时常量 
    public final String str2 = "def" + "ghi";  //编译时常量 支持字符串的连接
    public final String str3 = str2 + "jkl";  //编译时常量 
    public final static String str4 = "static str";  //编译时常量 
    public final double e = Math.random(); //运行时常量
    public final ConstantTest test = new ConstantTest(); //运行时常量
}

在Java中,虽然编译时常量并不依托于类,但是我们还是写在类里面。在Kotlin里,我们编译时常量的定义在函数之外。另外提一句:java中的方法和Kotlin的函数其实是一个东西。

猜你喜欢

转载自blog.csdn.net/qq_43867812/article/details/131336839