`
WarGrey
  • 浏览: 38036 次
  • 性别: Icon_minigender_1
  • 来自: 镇江
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JavaSE:JAVA VS C#

阅读更多
这次只是大概列出一些不同点,以把不同点做个备份,详细情况以后专题介绍。

考虑到网上很多资料是“一个人发表,n人转载”或“一个人在n多地方发表同一篇文章”,恰好这些文章为列在搜索页面的靠前部分,所以难以获得多方面信息(由于一些类似的和其他原因,本人不喜欢去论坛)。所以本文尽量保持原创和客观。

运行环境:Fedora Core 8+MonoDevelop 0.9
Note:此环境在我的机器上没有可视化图形设计器,也没有MSDN。.Net版本为1.0和2.0。

(仅关键字不同的部分不在此列举)
(本次不同点大多都是在ATM大作业中遇到的,有些适当扩展了)

1.解决命名冲突
namespace和package都具有防止命名冲突的能力。但是namespace没有对文件系统的布局产生影响。换句话说当你要写程序查找任意namespace类的源码时难以确定其具体位置。

2.clone
C#同时支持struct和class,他们都继承Object。前者与后者的本质区别是前者是值类型而后者是引用类型,(有关其他区别这里不详细列 出)。在代码编写上我的环境中struct和class完全一样,但在vs里会有细微差别,vs的提示很详细,这里不列出了。由于.net framework中兼有了struct和class,并且两者都可以使用new name的方式实例化,猜想正是这个原因导致了C#的Clone方法需要类显式实现Cloneable接口。Java中的Object便直接具有 clone方法。

3.继承
C#继承和实现接口的语法相同,都是“子类名 冒号 父类名和接口列表”。不支持多重继承。同样C#类的构造方法中不允许出现对父类和自己的引用,必须放在构造函数名和冒号的后面(这是C++的方式)。接口 中的成员不许要访问修饰符,因为它们是public的,你写了反而编译器要报怨。

4.代理
这是C#的新机制,但是并非信思想,类似C的函数指针,Java可以用单方法接口来模拟。同时熟悉动态脚本语言如JavaScript的话,便会发现,代理就如同它们的Function对象。不过代理能力更强,因为它可以联接多个方法。

5.属性
C#具有隐式获取和访问方法(get和set),Java没有,但默写Java规范如JavaBeans中有,规则为setXXX和getXXX。其实 C#的属性本质上也是private成员+两个方法(因此C#属性声明可以是abstract的,也可以出现在接口中),和Java效果一样。但是 在.Net 3中,C#编译器可以根据get和set自动添加响应的private属性,这使得C#的属性更纯粹一点,真正保持了代码的简洁。

6.异常处理。
C#不用声明“异常说明”,记在方法名后不用throws,所有C#异常都像Java的RuntimeException。这个使得其他人使用C#的库时不得不查找其文档。(难怪微软的MSDN不是免费的呢)

7多态
这个C#是乱上加乱,共有abstract,virtual,override,new三个关键字。并且C#在实现多态时调用的方法始终是 “override returntype method”的形式,所以不要报怨为何你有了String ToString方法,却还是得不到期望的输出。
有关这个的详细讨论有时间另开专题。

8别名
这个Java里没有,C#中用的最多的地方就是string和String,以及其他基本类型。C#完全面向对象,所以基本类型如int是其对象类型Int32的别名,换句话说它们等价,而java只是用自动包装机制来达到这个目的。

9.事件处理
这个就很复杂了,C#基于“代理”,Java基于“事件监听”。
有关这个的详细讨论有时间另开专题。

就先写这么多吧。
分享到:
评论

相关推荐

    【JavaSE】Java 知识汇总(资源,工具,笔记,源码,文章,文档分类整理).zip

    软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...

    zxing-javase.jar

    zxing-javase二维码生成jar包。java实现二维码的绘制和解析(zxing by google) 截止目前为止最新版本为1.7,提供以下编码格式的支持: UPC-A and UPC-E EAN-8 and EAN-13 Code 39 Code 93 Code 128 QR Code ...

    Java闭包 Java闭包

    在2013年发布的 JavaSE8 中包含一个叫做 Lambda Project 的计划,在 JSR-335 草案 中有描述。 JSR-335 将闭包引入了 Java 。闭包在现在的很多流行的语言中都存在,例如 C++、C# 。闭包允许我 们创建函数指针,并把...

    Java程序中的C#方法调用

    通过JNI从Java使用C#变得更容易理解。

    Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。.zip

    软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...

    JAVASE-面试解惑.pdf

    面向对象是当今主流的程序设计思想,面向对象是对现实世界中事物的一种理 解和抽象,在现实生活中,任何物体都可以归为一类事物,而这每一个个体都是一 ... 面向对象的编程语言主要有:C++、Java、C#等

    JavacTo:将Java源代码翻译成另一种语言-开源

    诸如C#和D之类的语言非常适合作为“ To”语言的翻译。 提供了Eclipse项目以开始使用。 提供了三个访问者类,以学习如何使用JavacTo和编写访问者类。 可以在以下位置获得Vistor javadocs:...

    Java网络爬虫MySpider.zip

    Java网络爬虫MySpider,特点是组件化,可插拔式的,可以根据一套接口实现你自己自定义的网络爬虫需求(本人JavaSE的温习项目,适合java新人) 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++...

    JavaSE+SwingUI+Mybatis+Springboot+Vue电商管理系统Mybatis-SwingUI-.zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、...

    大三课程设计大作业(javase部分).zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...

    zxing.zip(用于java生成二维码)

    压缩包内是java生成二维码的包 里面有core.jar与javase.jar。 我把这两个包合并起来生成zxing.jar包,你也可以不用我合成后的包, 直接用core,javase。

    java的概述

    Java是Sun Microsystems于1995年推出的高级编程语言 Java 领域的JavaSE、JavaEE技术已发展成为同C#和.NET平分天下的应用软件开发平台和技术.

    Java语言程序设计(随记录)

    Java中的包(package)类似于C#中的名称空间(namespace),用于管理类、接口,将它们分类管理。 一个Java文件由包声明、包引用和类(接口)声明三部分组成。前两者不是必需的。 在Java中,每一个类(内部类除外)都会...

    2021-2022-2学期面向对象与数据库课程设计,基于JavaSE+Swing+MySQL的校园宿舍管理系统.zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...

    Java-Web程序设计题库.doc

    A.JavaSE B、JavaME C、JavaEE D、JavaBean 24、Tomcat的默认端口就是( B )。 A.7001 B、8080 C、80 D、112 25、下面不就是JSP本身以加载的基本类的就是( A )。 A、java、lang、* B、java、io、* C、javax、...

    Java-Web程序设计题库(2).doc

    A.JavaSE B、JavaME C、JavaEE D、JavaBean 24、Tomcat得默认端口就是( B )。 A.7001 B、8080 C、80 D、112 25、下面不就是JSP本身以加载得基本类得就是( A )。 A、java、lang、* B、java、io...

    同学通讯录

    学生通讯录系统 学生通信录信息包括:姓名、学号、年龄、性别、家庭住址、联系电话、寝室号等信息。 系统以菜单方式工作,使之能提供以下功能:: 学生通信录信息的输入 学生的通信录信息删除和修改 ...

    一种简单的字符串压缩算法

    将7位字符编码为6或5位以减少字符串大小的有效算法

    php ActiveMQ的安装与使用方法图文教程

    分享给大家供大家参考,具体如下: 一、ActiveMQ是什么? ActiveMQ是Apache出品,最流行的,能力强劲的开源消息...http://www.oracle.com/technetwork/java/javase/downloads/index.html 如:jdk-8u121-linux-x64.tar.

    zxing-3.2.0

    | | ITF | | | RSS-14 | | | RSS-Expanded | ## Components ### Active | Module | Description | ------------------- | ----------- | core | The core image decoding library, and test code | javase | JavaSE-...

Global site tag (gtag.js) - Google Analytics