`
yangwencan2002
  • 浏览: 37152 次
  • 性别: 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

    4. 检查并处理可能的编码差异,如JAVA的DER编码与C#的PKCS#8或X.509格式的对应关系。 5. 在目标环境中解码并构建对应的密钥对象。 在实际应用中,需要注意的是,非对称加密通常用于交换会话密钥,而非直接加密大量...

    C# to Java 代码转换工具

    (小提示:如无法运行,请确认是否安装了.NET framework) 下面是一些英文介绍: C# to Java Converter features include: 1. Folder conversion: Entire folders of C# code files are converted to Java code files....

    C#与java的区别

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

    C#代码转java代码工具

    一个很强大的工具, 能将c#代码片段、文件甚至工程直接转换成java代码,并能彻底解决外部引用的DLL问题,最强的是支持c#工程的直接转换,生成的Java代码质量也很不错。软件已破解,去除了未注册版最多只能转换1000行的...

    C#与JAVA的区别,对于要选择学C#还是JAVA的初学者,有意义

    ### C#与JAVA的区别 #### 一、C#与JAVA的背景及简介 C#(C-Sharp)是由微软开发的一种新型编程语言,被广泛认为是面向组件的编程语言之一,尤其是在C/C++语言家族中。它由微软的Anders Hejlsberg与Scott Wiltamuth...

    C#与JAVA的比较

    ### C#与JAVA的比较 #### 相同之处 C#与JAVA这两种现代高级编程语言在许多方面都有着显著的相似之处。这些相似性主要源于两者的设计理念和技术背景,特别是它们都受到了C++语言的重要影响。 1. **平台独立性**:...

    JAVA通过JNI调用C#dll的整个项目工程

    Java通过JNI调用C# DLL是一个跨平台、跨语言的技术实践,主要应用于需要利用Java的稳定性和C#的高性能场景。JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。C# ...

    C#和JAVA的区别总结

    【标题】:"C#与Java的区别总结" 【描述】:"本文将详细对比C#与Java这两门编程语言在源文件、数据类型、运算符、分支语句、访问修饰符、方法、属性、继承、事件、运算符重载、异常处理、索引器以及元数据等方面的...

    c++ 转换 java c# 转换 java c++ 转换 c#

    C#是一种微软开发的面向对象的语言,它与Java有许多相似之处,但也有一些不同。例如,C#有属性(properties),而Java使用getter和setter方法;C#有接口(interfaces)和抽象类(abstract classes),Java只有接口。...

    java调用C#封装的dll方法

    为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java平台之间的互操作性问题。其中一种方案是使用Java Native Access (JNA) 来调用通过C++...

    switch语句在java和c#中的区别

    在 Java 和 C# 中,`switch` 语句在语法和行为上有一些显著的区别,尤其是在处理多条 `case` 的连续执行和 `break` 的使用上。 首先,我们来看 C# 中的 `switch` 语句示例: ```csharp class StudentGrade { ...

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

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

    在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转java工具合集

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

    C C# 转换为 Java代码

    C语言的语法与Java有很大的差异,例如C中的指针在Java中通常由引用代替,内存管理也由垃圾收集器自动处理。因此,这样的转换工具需要对两者的语法差异有深入的理解,能够准确地将C的结构体、函数、循环和条件语句...

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

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

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

    ### C++、C#、Java、Python 实现简单图形用户界面(GUI)的区别与方法 #### C++ 在C++中创建图形用户界面(GUI),主要依赖于Microsoft Foundation Classes(MFC)。MFC作为一套用于Windows应用程序开发的类库,...

    自己用c#做的C语言编译器内带测试程序

    标题中的“自己用c#做的C语言编译器内带测试程序”表明这是一个个人项目,开发者使用C#编程语言创建了一个小型的C语言编译器,并且这个编译器包含了用于验证其功能的测试程序。这涉及到计算机科学中的编译原理、...

    C#源代码转成Java代码

    标题 "C#源代码转成Java代码" 描述了一个转换过程,即将用C#语言编写的源代码转换为Java语言的代码,以便于在Android平台上使用。这个过程涉及到跨平台编程和语言互操作性,是软件开发中的一个重要环节。下面我们将...

Global site tag (gtag.js) - Google Analytics