浅谈C#与Java两种语言的比较
C#与Java相比较
从整体上来看,c#和java及其相似,甚至超过了c#与c、c++的相似程度,下面是两种语言的比较。
- 两者都能编译成跨平台,跨语言的代码,而且代码能都在一个手控制的环境中运行。
- 两者都不需要头文件,所有代码都被限制在某个范围内,并且因为没有头文件,所有消除了类定义的循环依赖。
- 自动回收垃圾内存,并且取消了指针类型。
- 所有的类都是派生出来的,并且必须使用New关键字分配内存。
- 没有全局函数或者全局变量,一切变量和函数都属于类。
- 数组和字符串都自带长度计算和边界检查。
- 不能使用整数来返回到if条件语句中,必须使用布尔变量。
- 只使用 “ . ” 操作符,没有 “-->” 和 “ :: ” 操作符。
- 都具有接口的概念。
两者区别
例如:java 通过java虚拟机来实现平台的可移植性,而C#则首先被编译成一种中间语言,然后在执行是有公共语言运行时中的即编译器成本地代码交与CPU进行处理。而且,Java虚拟机只能执行Java程序,而即时编译器可以编译任何.NET框架支持的语言(如C# ,VB,和 J#)编写的程序。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
java使用jna调用c#中dll的方法详解
前言 JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码.开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射. 优点 JNA可以让你像调用一般java方法一样直接调用本地方法.就和直接执行本地方法差不多,而且调用本地方法还不用额外的其他处理或者配置什么的,
-
C#与Java的MD5简单验证(实例代码)
C#端 using System; using System.IO; using System.Security.Cryptography; namespace 计算文件的MD5值 { class MD5_Helper { /// <summary> /// 文件MD5校验 /// </summary> /// <param name="pathName">文件绝对路径</param> /// <returns>MD5校验码&
-
一种c#深拷贝方式完胜java深拷贝(实现上的对比分析)
楼主是一名asp.net攻城狮,最近经常跑java组客串帮忙开发,所以最近对java的一些基础知识特别上心.却遇到需要将一个对象深拷贝出来做其他事情,而原对象保持原有状态的情况.(实在是不想自己new一个出来,然后对着一堆字段赋值......好吧,再此之前我没有关心是否项目框架有深拷贝的方法),然后就想着用反射实现吧....接下来 是我自己的原因,还是真的不存在这样的纯用反射实现的深拷贝方式....(c#是有纯反射实现的) 但也不能算自己白忙活吧,也找到了其他实现深拷贝的方式(但是每种方式我都觉
-
详解Kotlin中如何实现类似Java或C#中的静态方法
大家可以在网络上搜到不少这样的文章,官方推荐是包级函数,也有人说用伴生对象(companion class).这些都是不错的选择,但并不完善,我们在不同的情况下有更好的选择.我总结了几种方法,分别是:包级函数.伴生对象.扩展函数和对象声明.这需要大家根据不同的情况进行选择. 一.包级函数 Kotlin和Java及C#不同的是,可以在包里面直接声明函数.做法和类中是一样的,这里就不多说了,的确是一个非常好的选择.适用于函数不需要不包内部的类进行数据共享的方法. 二.伴生对象 从语义上来讲,伴生函数
-
Unity中C#和Java的相互调用实例代码
1.通过C#调用Java的方法: 在C#中添加调用的一些代码,利用Unity提供的一些接口实现调用Java! private const string JAVA_CLASS_Name = "com.unity3d.player.UnityPlayer"; private void CallJavaFunc(string javaFuncName, params object[] args) { try { //获取到AndroidJavaClass,至于这里为什么调用这个类,我也不是很
-
浅谈Java中的final关键字与C#中的const, readonly关键字
在编程语言中都有某种方式,告知编译器一块数据是恒定不变的.有两个需求 1. 一个永不改变的编译器常量 2. 一个在运行时被初始化的值,而这个值不会被改变 在Java中,使用final修饰变量实现这两个需求 <pre name="code" class="java">//编译器常量 private final int valueOne = 9; private static final int VALUE_TWO = 99; public static f
-
Java和C#下的参数验证方法
参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下: public bool Register(string name, int age) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("name should not be empty", "name"); } if (age < 10 || age > 70) { throw new ArgumentExcept
-
Android仿微信菜单(Menu)(使用C#和Java分别实现)
本篇是对安卓菜单使用编程方式实现,当然可以使用XML的方式完成同样的功能,基本Java和C#写法都是一致的,所以使用XML的方式在本篇中使用Java演示,需要注意的是,对于如果不是VS开发的话,那么资源文件名称必须以小写开头,否则会报错. 运行效果 C#实现 using Android.App; using Android.OS; using Android.Views; using Android.Widget; namespace MenuDemo { [Activity(Label = "
-
C# 调用 JavaWebservice服务遇到的问题汇总
1. A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint. 问题原因: 客户端和服务端的SOAP协议版本不一致. 解决方法: ①修改客户端SOAP协议版本和服务端一致 ②修改服务端SOAP协议版本和客户端一致 附Java服务端修改服务暴露SOAP版本方法: 在接口的实现类上面添加注解 //import javax.xml.ws.BindingType; //import javax.xml.ws.soap.S
-
String.Format大全(C# Java)
c#string.format 字符串的数字格式 stringstr1 =string.Format("{0:N1}",56789); //result: 56,789.0 stringstr2 =string.Format("{0:N2}",56789); //result: 56,789.00 stringstr3 =string.Format("{0:N3}",56789); //result: 56,789.000 stringstr8
-
Java和C#输入输出流的方法(详解)
1,Java中操作方法: import java.io.*; public class FileInputStreamTest { public static void main(String[] args) throws IOException { //创建字节输入流 FileInputStream fis = new FileInputStream("FileInputStreamTest.java"); //创建一个长度为1024的竹筒 byte[] bbuf = new byt
-
C#调用Java方法实例详解
C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用C++的例子网上很多,以一个C++的具体方法为例. C++代码 // 获取一帧图像数据 MVSMARTCAMCTRL_API int __stdcall MV_SC_GetOneFrame(IN void* handle, IN OUT unsigned char *pData , IN unsig
-
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
语言之争由来已久,下面做一些IO实验(遍历9G多的文件,批量删除),尽量用事实来比较谁优谁劣.操作系统:win7 64 位,文件包大小:9.68G. 一.语言:C# 开发环境:vs 2013 代码总行数:43行 耗时:7秒 代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; n
随机推荐
- 详解AngularJS脏检查机制及$timeout的妙用
- sysservers 中找不到服务器,请执行 sp_addlinkedserver 将该服务器添加到sysserver
- php URL跳转代码 减少外链
- 解决Codeigniter不能上传rar和zip压缩包问题
- 非常好用的Zend Framework分页类
- php 动态执行带有参数的类方法
- Python使用tablib生成excel文件的简单实现方法
- 即时通讯软件在网页上启动临时对话的链接代码
- 详细讲解ASP脚本循环语句
- 动态获取复选框checkbox选中个数的jquery代码
- 完美解决Persits.Jpeg.1 错误 ''800a0001''
- Android 跨进程SharedPreferences异常详解
- Java中使用BigDecimal进行精确运算
- 详解SpringMVC中设置静态资源不被拦截的问题
- java实现上传图片并压缩图片大小功能
- Java 简化正则表达式的使用
- 解析C#中委托的同步调用与异步调用(实例详解)
- Windows7下的php环境配置教程
- Linux下编译C程序的过程
- vue cli 全面解析