final、static(Java)和const、static(C#)

转载 2012年03月23日 16:04:53

现在看看以下等价关系:

C#中的static 和Java中的static

简单,两者用法完全是一致的。从两方面讨论:

1. 变量是属于类的,不是实例级别的。只能通过类名调用,不能通过实例调用。

2. 如果在定义时就赋值了,那么在类初始化的时候,最先完成所有静态变量的赋值。但是要注意,所有静态变量的初始化顺序是无法确定的。

C# 中的const 和Java中的finnal

很长一段时间我一直认为两者是相同的作用,无非是变量初始化后不能更改,即只能在定义时或者构造函数中赋值。然而这仅仅只是片面的,下面将为大家详细分析:

1.修饰变量

准确的说C#中的const 等价于 Java中的static final,也就是说,Java中final不具有static的功能。而C#中的const具有static的功能。因此在C#中 public static const string 等将于 public const string。

2.修饰类和方法

此时Java中的final类似C#中的sealed,就是说,final修饰的类不能被继承,final修饰的方法不能被覆盖。

而C#中的const不能修饰类和方法。

问题:

1. 私有静态成员的作用(private static 变量)

字面表示私有的,类外不能使用;静态的,全局变量。看上去很矛盾,又不能被类外使用,要全局的有什么用。问得好,类中全局也是很有意义的,例如 private static int a = 5,那么就可以保证变量a在类的初始化过程中将被优先初始化(在构造函数执行之前)。这样如果对象A的初始化需要对象B的实例,那么就可以用这种申明,以保证在类A在构造函数中能够使用类B的实例。同时private又能够保证类B的实例只能在类A中使用,起到很好的密封作用。

2. 私有最终成员作用(private final 变量)

在类构造函数完成前必须对该成员完成初始化,一旦定义不许更改;该成员只能在本类中使用。实例,子类中都不能使用。

private static final修饰的成员在申明的时就被赋值,保证在构造函数中可以被使用,一个被private static final修饰的成员通常表示其他组件的一个实例,且变量是类中的全局变量。

private final 修饰的成员在构造中被赋值,表示它是该类全局的私有成员变量,且该类的构造需要传入他们的初始值,才能完成类的初始化。

Microsoft .NET 框架和 Visual Studio.NET 中的 SOAP

Microsoft .NET 框架和 Visual Studio.NET 中的 SOAPKeith Ballinger,ASP.NET Web Services 项目规划经理 Jonathan Haw...
  • x86
  • x86
  • 2001-02-08 09:32:00
  • 1497

java基础学习——final,static,const在使用上有什么区别

JAVA中——final、static final: final修饰类:该类不可继承 final修饰方法:该方法不能被子类覆盖(但它不能修饰构造函数) final修饰字段属性:属性值第一次初始化后不...
  • yiziweiyang
  • yiziweiyang
  • 2016-08-25 19:04:54
  • 2271

JAVA中的关键字static,final和const

一、static1.static修饰变量C的局部变量,全局变量(即外部变量)和静态变量局部变量:在函数内定义的变量,采用动态存储方式。全局变量:在函数外定义的变量,采用静态存储方式。extern: 外...
  • cwdysg
  • cwdysg
  • 2017-03-09 08:41:57
  • 4334

Java中this,static,final,const用法

this staticfinalconst
  • oMaoYanEr
  • oMaoYanEr
  • 2014-11-19 12:20:55
  • 15433

final/const/static的区别

(1)final在java中定义常量,可作用于基本类型或者类类型,若是作用于类类型,则此类类型不能作为父 类被继承,也就是说它的下面不能有子类,这样的类叫做原子类。     C++中的cons...
  • muzilanlan
  • muzilanlan
  • 2014-07-27 18:12:23
  • 3887

C#中的static、readonly与const的比较

[csharp] view plaincopy  C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适...
  • zhangsu_
  • zhangsu_
  • 2014-03-16 15:23:55
  • 3782

public,protected,private,static,final的区别

(1)在java中有public、protected、private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类、变量等前没加显示的可见性修饰符,那它就是pa...
  • findaway123
  • findaway123
  • 2012-05-26 14:36:02
  • 5586

php怎么理解这些个关键字啊,public;private;protect;final;static;const

public: 公有属性或方法 在子类中可以通过self::var 或self::method 来调用 ,可以通过parent::method来调用父类中的方法,但不能调用公有属性. 在实例中可以通过...
  • qq_14989227
  • qq_14989227
  • 2017-05-27 13:46:29
  • 276

NET中const、readonly、sealed与JAVA中final的差异

NET中const、readonly、sealed与JAVA中final的差异NET const:常量,可以是全局或局部,定义(声明)同时赋值,就是说在定义时必须初始化。 readonly: 只读...
  • cadenzasolo
  • cadenzasolo
  • 2016-03-04 17:36:19
  • 750

java中 static,final,transient,volatile关键字的作用

static 和final   static  静态修饰关键字,可以修饰 变量,程序块,类的方法;  当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这...
  • i0048egi
  • i0048egi
  • 2017-02-12 21:27:45
  • 1590
收藏助手
不良信息举报
您举报文章:final、static(Java)和const、static(C#)
举报原因:
原因补充:

(最多只允许输入30个字)