【static和final和const区别】

static和final和const区别

一、static

  • 在 Java 中,static 用于定义静态成员(静态字段或静态方法),这些成员属于类而不是实例。静态成员可以通过类名访问,而不需要创建类的实例。
  • 在 Kotlin 中,与 Java 不同,Kotlin 中没有 static 关键字。相反,Kotlin 使用伴生对象(companion object)来创建静态成员。伴生对象允许在类中创建静态成员,这些成员可以通过类名访问,而不需要类的实例。

例如:public static int count 表示一个静态字段count,所有实例共享同一个count 值。

二、final

  • 在 Java 中,final 用于修饰类、方法或字段。当应用于类时,表示该类不能被继承。当应用于方法时,表示该方法不能被子类覆盖。当应用于字段时,表示该字段是一个常量,其值不可更改。
  • 在 Kotlin 中,final 的概念也存在,但是它是默认行为。Kotlin 中的类和方法默认都是 final 的,除非显式标记为 open。字段也可以使用 val 声明为只读属性,这意味着它们的值在运行时不可更改。

例如:public static final int MAX_COUNT = 100 表示一个公共静态常量MAX_COUNT,它的值为 100,在程序运行过程中不可修改。

综上所述,static 表示一个成员属于类本身,而 final 表示一个值是不可修改的。它们可以一起使用,如 public static final 用于定义一个静态常量,表示它是一个不可修改的类级别常量。

三、const

  • 在 Java 中,没有直接的 const 关键字。Java 中的常量通常使用 final 关键字来表示,如 final int MY_CONSTANT = 42;。这些常量是在编译时计算并在运行时不可更改的。
  • 在 Kotlin 中,const 用于修饰属性,用于声明编译时常量。编译时常量是在编译时就已经确定其值的属性,它们通常用于创建枚举值或作为注解参数。需要注意的是,const 属性必须满足一些限制,例如只能是顶层属性或是伴生对象中的属性,且只能具有基本数据类型或字符串类型。

例如:const val MY_CONSTANT = 42

四、总结

  • static 主要用于创建静态成员,但在 Kotlin 中使用伴生对象。
  • final 用于限制类、方法或字段的继承、覆盖和修改。
  • const 用于声明编译时常量,通常用于顶层属性或伴生对象中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值