浅谈Java中的final关键字与C#中的const, readonly关键字

 更新时间:2016年10月22日 11:00:04   投稿:jingxian  
下面小编就为大家带来一篇浅谈Java中的final关键字与C#中的const, readonly关键字。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在编程语言中都有某种方式,告知编译器一块数据是恒定不变的。有两个需求

1. 一个永不改变的编译器常量
2. 一个在运行时被初始化的值,而这个值不会被改变

Java中,使用final修饰变量实现这两个需求

<pre name="code" class="java">//编译器常量
private final int valueOne = 9;
private static final int VALUE_TWO = 99;
public static final int VALUE_THREE = 39;
//运行时被初始化的值,且值不会被改变
private final int i4 = rand.nextInt(20);
static final int INT_5 = rand.nextInt(20);</span>

final修饰基本数据类型时,使数据恒定不变
final修饰对象引用时,使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。
然而,对象其自身是可以修改的

final修饰方法参数列表中的参数,意味着无法在方法中更改参数引用所指向的对象。这一特性主要用来向
匿名内部类传递数据

另外,在Java中

final修饰方法,目的是明确禁止子类覆盖这个方法
final修饰类,禁止继承

在C#中是如何实现这两个需求的呢?

需求1:编译器常量

const修饰常量,必须能在编译时用于计算。常量总是静态的但不必(实际上,是不允许)在常量声明中包含修饰符static

需求2:运行期常量

readonly关键字
有时可能需要一些变量,其值不应改变,但在运行之前其值是未知的。
C#为这种情形提供了另一种类型的变量:只读字段

另外,在C#中

sealed修饰方法,目的是明确禁止子类覆盖这个方法
sealed修饰类,禁止继承

以上就是小编为大家带来的浅谈Java中的final关键字与C#中的const, readonly关键字全部内容了,希望大家多多支持脚本之家~

相关文章

  • 关于Unsupported Media Type的解决方案

    关于Unsupported Media Type的解决方案

    在Web开发中,415错误表示服务器无法处理请求附带的媒体格式,本文介绍了导致HTTP 415错误的原因以及解决该问题的两种方法,首先,415错误通常是由于客户端请求的内容类型与服务器期望的不匹配引起的,例如,服务器可能期望JSON格式的数据
    2024-10-10
  • 解决mybatis中order by排序无效问题

    解决mybatis中order by排序无效问题

    这篇文章主要介绍了解决mybatis中order by排序无效问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 如何解决Mybatis-plus中@TableLogic注解失效问题

    如何解决Mybatis-plus中@TableLogic注解失效问题

    这篇文章主要介绍了如何解决Mybatis-plus中@TableLogic注解失效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • php上传文件分类实例代码

    php上传文件分类实例代码

    这篇文章主要介绍了php上传文件分类实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 在Java中使用下划线分隔数的字面值的用法讲解

    在Java中使用下划线分隔数的字面值的用法讲解

    这篇文章主要介绍了在Java中使用下划线分隔数字的字面值的用法讲解,这是Java7以后加入的新特性,需要的朋友可以参考下
    2016-03-03
  • 解决mybatis-generator生成Mapper文件没有Selective结尾的问题

    解决mybatis-generator生成Mapper文件没有Selective结尾的问题

    这篇文章主要介绍了解决mybatis-generator生成Mapper文件没有Selective结尾的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot使用Thymeleaf模板引擎访问静态html的过程

    SpringBoot使用Thymeleaf模板引擎访问静态html的过程

    这篇文章主要介绍了SpringBoot使用Thymeleaf模板引擎访问静态html的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Spring BeanFactory和FactoryBean区别解析

    Spring BeanFactory和FactoryBean区别解析

    这篇文章主要介绍了Spring BeanFactory和FactoryBean区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java代理模式之静态代理与动态代理的区别及优缺点

    Java代理模式之静态代理与动态代理的区别及优缺点

    代理模式是一种常用的设计模式,它允许通过引入一个代理对象来控制对目标对象的访问,在Java中,代理模式被广泛应用,它可以提供额外的功能,如权限检查、缓存、日志记录等,本文将介绍静态代理与动态代理的区别及优缺点,需要的朋友可以参考下
    2023-06-06
  • Java格式化类Format解读

    Java格式化类Format解读

    Java.text.Format 是 Java 格式化的抽象基类,用于将对象格式化为指定模式的字符串,或者将指定模式的字符串解析为对象,主要包含 format 和 parseObject 方法,分别用于格式化和解析
    2024-12-12

最新评论