`
yangwencan2002
  • 浏览: 36689 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

C#、C与JAVA的一些区别

阅读更多

背景:

电子书解析模块需要在多个手机平台上实现,于是我将java翻译成C#@mobileC@brew。在这个过程中体验了一次java同其他语言之间的区别。简而言之,我对多语言的态度是:语言是相通的;语言至少精通一种。把过程中记录的区别晒一下:

<==============================C#修改区别================================>

1.C/C++:有全局变量、全局常量、全局函数的概念
2.ReadLine=>println
3.C/C++要经过编译和链接,即C#并不被编译成目标文件(.obj),而是直接生成可执行文件(.exe)或动态链接库(.dll)
4.析构函数:C++程序员需要在析构函数中写上一系列delete语句来释放存储
5.readonly、const、final
6.C++中没有对抽象类进行直接声明的关键字,而认为只要在类中定义了纯虚函数,这个类就是一个抽象类。

1.C#方法不可声明异常抛出
2.in是C#的关键字
3.override的书写位置
4.java中的静态模块在C#中是用静态构造函数来表达
5.get/set方法:public T data { get; set; }
6.DataInput=>BinaryReader
7.readInt=>ReadInt32
readShort=>ReadInt16
readByte=>ReadByte
8.new string(name, "UTF-8")=>Encoding.UTF8.GetString(name,0,name.Length)
9.在构造函数体内中的super(block, id)=>直接在构造函数后追加:base(block, id)
10.C#中的常量关键字const对应于java的final
11.C#中类型转换除了像java那样各种类型有独自支持的转换方法,还将类型转换都封装到一个类Convert来管理。
12.NullPointerException@java<===>NullReferenceException@C#
13.C#中保留了析构函数
14.FileNotFoundException@C#<===>IOException@java
15.Hashtable的遍历
C#:
IEnumerator<MetaInfoResource> e = myHashtable.Values.GetEnumerator();
Java:
Enumeration<MetaInfoResource> e= myHashtable.elements;

 

<==============================C修改区别================================>

1.属性类<====>自定义结构体struct,方法类<====>以名字区分开的函数
2.接口<====>头文件.h,接口实现类<====>#include头文件的.C文件,就像是C#/Java中的接口与实现类搭配,在C中,.h总带着一个.c文件。
3.C语言中没有C#/Java中方便的List,必须自定义Vector
4.C#/Java的new<====>C的malloc,手动分配空间
5.C#/Java的GC是开辟了一个独立的线程,幕后包办释放开发人员使用的内存
  而C必须自己手动释放(free)任何内存空间,某种程度上来说这也是C比C#/Java高效却麻烦的地方。
  所以,当你对外提供的接口中有自定义结构体时,别忘记也附带一个专门用来释放该结构体的方法。
6.C是面向过程,简而言之,一切只在一个函数里面演绎(如变量的生命周期只能在一个函数里);C#/Java是面向对象,只要是对象还未被GC歼灭,变量可以存活到任何时候。C没有继承。
7.C指针就是指向内存地址的针头,从某种意义上说,就像C#/Java面向对象编程,C却是面向内存编程。
  所以C代码到处充斥着指针,可以说,没有指针的代码不能成为C代码。内存是以字节为基本单位,所以   一个内存单位=1个字节
8.C的API没有那么健全,有时候不要指望找到C#/Java对应的便捷函数
9.C#/Java中的string<====>C中的char *,并且以\0为结束符,但不计入字符串成员。
10.C的基本类型与C#/Java不太一致,如boolean、byte
11.头文件的#include(只include头文件),如同C#的using,java的import

分享到:
评论

相关推荐

    RSA加密JAVA转C# JAVA转PHP,C#转JAVA

    rsa秘钥转换工具,可以java转成C#格式也可以C#转成java格式,也可以java转换为PHP格式,绝对可以使用,打开提示错误请安装.netframework

    C#与java的区别

    C#和java的区别 JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,

    c#与Java的分析和比较

    "C sharp",中文译音“夏普”)是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与...

    在C#中调用 java的函数(C#与java结合使用)的ikvm相关包

    c:狸猫换太子:jar&gt;&gt;dll 打开黑框框(即:win+r,cmd,进入到%IKVM_HOME%\bin的目录下), 执行:ikvmc -out:dllFileNameOrPath.dll javaFileNameOrPath.jar 此时,就会在%IKVM_HOME%\bin目录下或者指定的Path下...

    C++,C#,Java,Python实现简单的图形用户界面的区别和方法

    C++,C#,Java,Python实现简单的图形用户界面的区别和方法

    c转java工具合集

    这段时间本人能找的c或c#转java的工具都在这里。自己留个备份。下面是文件名:C++ to Java Converter、C2J、cnet2_C2J_exe、CPP-to-Java-Converter_Source、CSharp+to+Java+Converter、java转c工具Java2Cpp。没有去...

    java Socket与C#通信中中文乱码问题的解决方案

    近正在做一个项目,其中遇到了一个问题是java与.NET之间的通信问题。具体的问题是这样的:  客户端使用java,服务器端使用的是C#。两者之间使用基于TCP的Socket通信方式。可是,做了一个测试小例子,结果从客户端...

    C#调用java发布的WebService终稿.pdf

    C# 调用 Java 发布的 WebService 终稿 C# 调用 Java 发布的 WebService 是一种常见的跨语言通信方式。在本文中,我们将介绍如何使用 C# 调用 Java 发布的 WebService。 标题解释 C# 调用 Java 发布的 WebService ...

    java to C# and C# to java

    2个工具, Java与C#互转 其他的资源分很高, 这个用最低的资源分, 能用。

    RSA 加密 解密 C# Java 转化.zip

    有人遇到某些平台调用接口需要RSA加密,但是他们只提供了Java的密钥,但是我们用的语言是C#的,此时用这个密钥无法进行加密。所以要进行转化再加密。 我提供的压缩包里边有C#可用的封装类和dll。可以实现C# Rsa加密...

    C#和JAVA的比较

    C#(C-Sharp)是Microsoft的新编程语言,被誉为“C/C++家族中第一种面向组件的语言”。然而,不管它自己宣称的是什么,许多人认为C#更像是Java的一种克隆,或者是Microsoft用来替代Java的产品。事实是否是这样的呢?...

    c/java/c#实现的九九乘法表算法

    用C语言,C#,java分别实现的九九乘法表算法

    C、C#、C++、Java 中定义以为数组的方式

    C、C#、C++、Java 中定义以为数组的方式 C、C#、C++、Java 中定义以为数组的方式 C、C#、C++、Java 中定义以为数组的方式

    C#和 Java比较

    C#(C-Sharp)是Microsoft的新编程语言,被誉为“C/C++家族中第一种面向组件的语言”。然而,不管它自己宣称的是什么,许多人认为C#更像是Java的一种克隆,或者是Microsoft用来替代Java的产品。事实是否是这样的呢?...

    C#与java比较

    C#和Java都被设计成是一个使用动态调度的类似于C++语法的完全的面向对象语言。(C++又是源自于C)。但是,这两种语言都不是c或者c++的一个扩展集。C#和Java都使用垃圾回收的作为一种回收内存资源的手段,而不是直接...

    我们该使用何种编程语言?是C、C++、VB、Java还是C#?

    我们该使用何种编程语言?是C、C++、VB、Java还是C#?许多初学者对C、C++、VB、Java,c#,还不够了解,也见到网上许多关于这些语言的争执,也有人问我它们之间有什么区

    我们该使用何种编程语言?是C、C++、VB、Java还是C#?许多初学者对C、C++、VB、Java,c#,还不够了

    是C、C++、VB、Java还是C#?许多初学者对C、C++、VB、Java,c#,还不够了 解,也见到网上许多关于这些语言的争执,也有人问我它们之间有什么区别,那个最好,那个最……等等 ,我今天在网上查了一些,粘到了word中...

    C C# 转换为 Java代码

    这是C和C#转JAVA的工具,可以实现脚本语言互转。

    C#中使用指针源程序,我想许多C程序员不愿意学习Java的原因之一就是Java不支持指针

    C#中使用指针源程序,我想许多C程序员不愿意学习Java的原因就是Java不支持指针,但是现在类似于Java的C#却已经支持了指针,你可以使用unsafe关键字来告诉编译器下面的函数或者代码是不安全的。一旦你使用了unsafe,...

    C和Java程序员使用C#进行的面向对象编程Object-oriented Programming in C# for C and Java Programmers

    这是一本有关面向对象程序设计的书,其中使用了程序设计语言C#进行了说明。

Global site tag (gtag.js) - Google Analytics