Java里面没有readonly关键字,预留了const的关键字,目前还没有实际用途,在Java中,跟这两个关键字比较接近的是final;
C#中,两者都存在并可用。两者修饰的全局变量或局部变量都不能被修改。
下面是Java中final与C#中const以及readonly之间的联系和区别:
1) C#中,const可以修饰全局变量和局部变量,但readonly只能修饰全局变量。
2) C#中,const修饰的全局变量或局部变量必须在声明的时候初始化,因为是静态,所以无法使用构造方法初始化,当需要调用const修饰的全局变量时,
可以通过类直接调用,但const修饰的局部变量则无法通过类调用,并且作用范围只能为局部。
3) readonly修饰的全局变量可以在声明时初始化,也可以在构造方法中被初始化,如果readonly所修饰的全局变量在两个地方都初始化了, 那么最后这
个全局变量的值是在构造方法中被初始化, readonly可以在全局变量和构造方法中同时初始化。
4) 在Java中,final可以修饰的全局变量和局部变量.其中全局变量可以选择在声明时进行初始化也可以使用构造方法初始化(二选一),而const则因为
是静态所以无法使用构造方法, 除此之外, final还可以修饰方法的形式参数, 表示这个形式参数的值在方法体内不可以被改变,否则会产生编译错误。另外, final
还可以修饰方法,表示该方法不可以被子类覆盖(override), 修饰类,表示该类不可以被继承,修饰类时,跟C#的sealed关键字意思一样。
 
只读关键字初始化列表:
修饰符           局部变量       全局变量       构造方法       全局变量和构造方法关系
Const            支持               支持               不支持           ————————————
Readonly      不支持           支持               支持              同一全局变量同时初始化后以构造方法为准
Final              支持               支持               支持              同一全局变量只能在两者之间选一处进行初始化
 
C#示例:
using System;
using System.Collections.Generic;
using System.Text; namespace ConsoleApplication1
{
class Program
{ readonly int n=;
readonly int m;
const int q = ;
public Program()
{
//n = 9; //当readonly全局变量n被类和构造方法两处同时初始化时,将以最后初始化的构造方法为准
m = ;
//q = 8; //错误,const本身就是静态,所以无法使用构造方法
}
static void Main()
{
Program ct = new Program();
//ct.n = 12; //错误, 必须声明时初始化变量,而且不能在局部变量中初始化
const int p = ; //允许在局部变量中初始化值
//readonly int o=4; //错误,readonly不能在局部变量中初始化
Console.WriteLine("n的值为{0}", ct.n);
Console.ReadLine();
}
}
}
-------------------------------------------------------------------------------------------------------
注:本文转载于:http://www.cnblogs.com/yinhaiming/articles/1837316.html,感谢原文作者!

Java的Final和C#的Const,Readonly比较分析(转载)的更多相关文章

  1. Java中final与C++中const的关系

    Java中的final有三种主要用法: (1)修饰变量: final变量是不可改变的,但它的值可以在运行时刻初始化,也可以在编译时刻初始化,甚至可以放在构造函数中初始化,而不必在声明的时候初始化,所以 ...

  2. static const readonly

    C#中的static 和Java中的static 简单,两者用法完全是一致的.从两方面讨论: 1. 变量是属于类的,不是实例级别的.只能通过类名调用,不能通过实例调用. 2. 如果在定义时就赋值了,那 ...

  3. java的final用法

    转自:http://blog.163.com/maomaoyu_1012/blog/static/19060130520116269329894/ 1.         修饰基础数据成员的final ...

  4. 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因

    声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...

  5. Java中final的用法总结

    1.         修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的PI和E是f ...

  6. 聊聊Java的final关键字

    Java的final关键字在日常工作中经常会用到,比如定义常量的时候.如果是C++程序员出身的话,可能会类比C++语言中的define或者const关键字,但其实它们在语义上差距还是挺大的. 在Jav ...

  7. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  8. Java关键字final、static

    一.final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final ...

  9. java中final的理解

    final修饰变量表示变量初始化后就不能再改变. 一.对于基础类型来说,用final修饰后其值不可以改变. 1. final int a; a = 5; 2.final int a = 5; 二.对于 ...

随机推荐

  1. Nginx 常用命令总结

    查看某个程序的进程:ps -aux | grep nginx (进程的名字:httpd-apahe进程 mysqld-mysql的进程 svn-svn的进程 php-fpm - PHP进程 ) 查看某 ...

  2. 3.2、Factorization Machine实践

    1.在上一篇博客中我们构建度为二的因子分解机模型,这篇博客对这个模型进行实践 下图为准备的数据集: 完整代码为: # -*- coding: UTF-8 -*- # date:2018/6/6 # U ...

  3. 关于云主机Thinkphp框架Session跨页失效的问题

    在网站部署到云主机之后,前台一直能够正常显示,后台确登录不上去,验证码也无法显示,研究半天,才确定是Session跨页传递失效的问题.找网上各种解决方法,都是关于Php.ini文件的设置,可又解决不了 ...

  4. six

    团队序号:6组 团队名称:拯救地球小分队 团队项目的码云地址:https://gitee.com/lwj5950/seflash 此次博客撰写人姓名:刘威骏 学号:2017*****7168 团队中的 ...

  5. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)

    简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...

  6. Paxos算法的通俗理解(转)

    维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...

  7. Rsa2验签报错【java.security.SignatureException: Signature length not correct】的解决办法

    在进行RSA2进行验签的时候,报了以下错误: java.security.SignatureException: Signature length not correct: got 344 but w ...

  8. Ubuntu 18.04 安装 odoo12 源码版

    更新和升级 在我们进入安装过程之前,你应该更新和升级Ubuntu.打开终端窗口,发出以下命令: sudo apt-get updatesudo apt-get upgrade 注意:如果内核升级,则必 ...

  9. Word常用定义的变量

    unit U_WordConst;  interface {*******Word窗体状态************} const   wdWindowStateNormal = $00000000;  ...

  10. springboot整合jsp踩坑

    springboot以其高效的开发效率越来越多的用在中小项目的开发,并且在分布式开发中的使用也很广泛,springboot官方推荐的前端框架却是thymeleaf,并且默认不支持jsp,而大部分jav ...