当前位置: 首页 > 编程笔记 >

J2SE与c#的几点比较

鲜于宏义
2023-03-14
本文向大家介绍J2SE与c#的几点比较,包括了J2SE与c#的几点比较的使用技巧和注意事项,需要的朋友参考一下

最近在学习j2se,经过了大约有二十天,把马士兵老师的J2SE看完了,感觉这个老师太幽默了,听他讲课不会走神,时间的利用率特别高。真心的给马士兵老师点个赞,然后再给让我们学习这个视频的米老师点两个!(世界上不乏美好的事物,缺乏的是发现美好事物的眼睛!)。

废话不多说了,看看在这个视频中,到底讲了那些内容。如下图所示:

可能学习过任何一种面向对象语言(我学的c#,c#就是仿照Java,并对java进一步改良)的人,看到这个图的第一感觉,都是这些东西基本上不是都学习过吗,好像只有GUI,JDBC是个新的东东。

其实真的是差不多的,反正大部分人认为他们是相同的。下边对他们进行一下比较!

在语法方面,两者都摈弃了C++中函数及其参数的const修饰,宏代换,全局变量和全局函数等许多华而不实的地方。

在继承方面,两者都采用了更易于理解和建构的单根继承和多接口实现的方案。在源代码组织方面,都提出了声明与实现于一体的更好的逻辑封装。

在基本类型和单根继承的对象之间的类型统一方面C#提出的box/unbox要比Java的包装类显得高明,效率也要好。

面向组件无疑是当代软件开发的主流。C#对组件编程甚至到了"迷恋"的地步,这与6年前就出道的Java不可同日而语--当然这是时代问题。C#通过属性,索引器,委派,事件,操作符重载,特征,版本等实现了其对组件编程的第一手的支持。虽然这些在Java中都可以通过方法,接口或者适配器来间接地实现,但软件业的历史告诉我们这无论对编程效率或者逻辑设计都是一种极大的损伤--高级语言首先面对的是人,而不是机器。除去这些语言层面的组件支持机制,.NET平台也为组件的配置,运行,管理等提供了一揽子解决方案,而为组件开发量身定做的Visual Studio.NET更是令人兴奋,这都为C#的组件编程开辟了广阔的天地。在其他技术方面Java的微弱劣势尚且可以忽略不计,但在组件编程方面Java相较于C#却有着不可治愈的硬伤。尤其对于从C++和Visual Basic背景过来的开发人员,C#在这方面有着不可抵挡的魅力和诱惑。

在跨平台方面,Java的支持和实现都是为人称道的,虽然JVM的速度仍然让人备感头疼。而C#虽然在底层构造方面对移植性进行了充分的考虑,但至少目前还没有成熟的,经过检验的产品。C#在跨平台方面似乎更热衷于XML Web Services互操作,而不是跨平台编程。但C#通过其基础语言构造(CLI)对二十多种主流语言的对象级的互操作支持,又极大地提升了C#的技术地位。和COM组件廉价地互操作也为C#挣到不少分数--保持一个兼容的体系对现代软件工业非常重要,也是对广大开发人员负责任的表现。

当然两个语言的全面的技术品评绝非仅仅上述几点简单的罗列比较,其后端平台(C# for .NET, Java for J2EE),及其编程框架的支持,各语言相关工具的实现,现有的系统基础等等都对程序设计语言的发展产生相当的影响。从纯技术角度来讲,C#无疑较Java更具竞争力。争吵谁抄袭谁也没有意义--技术的发展本来就是一个相互借鉴的过程。纯技术较量也并不能决定这场论战的胜负--如果非要一决雌雄的话。软件界倒乐见竞争,经过市场锤炼的技术才能更好地为我们服务,让我们拭目以待!

 类似资料:
  • 此代码给出输出ELSE 此代码给出的输出是: 虽然两个程序看起来都一样,但为什么输出有差异呢?为什么会这样?

  • C# 代码 等效的 Tea 代码 不同的原因 using 名字空间; import 包; 叫法不同 namespace A{} module A; // 一个文件只能用一次 extern alias s; s::System.IO.File; import module as s; s.File internal (无) A a = new A(1) {p = 4, t = 2}; A a = n

  • 问题内容: 我的理解是,在C#中为泛型指定差异是在类型声明级别进行的:创建泛型类型时,请为类型参数指定差异。另一方面,在Java中,在使用泛型的地方指定了方差:当创建某个泛型类型的变量时,可以指定其类型参数如何变化。 每个选项的优缺点是什么? 问题答案: 我只想回答声明站点和使用站点之间的差异,因为尽管C#和Java泛型在许多其他方面有所不同,但这些差异大多与方差正交。 首先,如果我没记错的话,使

  • 问题内容: 我最近完成了一堆Java编码,并且已经习惯了非常特定的包命名系统,例如使用深度嵌套。在Java,AS3 / Flex和C#中可以正常工作。我也看到了在C 中应用相同的范例,但是我也听说将C 名称空间视为与Java包的直接对应是很不好的。 是真的,为什么?名称空间/程序包有何相似之处和不同之处?如果您确实使用深层嵌套的名称空间,可能会看到哪些问题? 问题答案: 在C ++中,名称空间只是

  • 主要内容:1) 源文件(Source File),2) 工程/项目(Project),3) 工程类型/项目类型,4) 链接(Link)上节我们介绍了编译器和 IDE 的概念,大家肯定希望赶紧实践一下,用 IDE 真正地运行一段C语言代码来看看效果,这样能够更快地获得成就感。 但是,使用 IDE 的过程中会涉及到一些与编程有关的概念,这些概念如果不提前了解,即使能够运行出程序来,也是雾里看花,知其然不知其所以然。本节的目标就是让大家对这些概念有一个简单的了解。 1) 源文件(Source File

  • 本文向大家介绍c++中cin/cout与scanf/printf的区别比较,包括了c++中cin/cout与scanf/printf的区别比较的使用技巧和注意事项,需要的朋友参考一下 cin 、cout    基本说明:   cin代表标准输入设备,使用提取运算符 ">>" 从设备键盘取得数据,送到输入流对象cin中,然后送到内存。   cin是输入流,cout是输出流,重载了">>"、"<<"运