整理的部分Java和C#不同点

C#有统一的类型系统,所有的类型包括原始类型(int,bool,short,long等类型)都继承于Object类。

Java略不同,它的原始类型不是继承于Object,每个原始类型都有对应的包裹类(继承于Object),比如int的包裹类Integer

C#有无符号整数,uint、ulong、ushort

Java没有

C#没有高精度的decimal。

Java中有BigDecimal

C#支持复数。Complex 结构

Java中没有

C#中有值类型。通过使用strutct关键字,可以定义结构体,这种类型在传递的时候,是按值传递,而不是按引用传递。

Java中只有原始类型。

C#中有可空类型,Nullable。

Java中只有包裹类。

C#中允许有指针。

Java中无指针。

C#中,枚举类型继承于Enum类型,是值类型的一个派生物。

Java中,枚举类型是一个class,它的值类的一个实例。

C#中有委托

Java中没有

C#中有延迟绑定的类型,dynamic

Java中没有

C#和Java中都有强引用和弱引用。

但是Java中还有一种软引用和虚引用Phantom reference。

软引用和弱引用类似,对象都是可达的,但仍然被GC回收。不同点在于,弱引用只要GC开始,就会被回收,而软引用只用当JVM内存空间不足的时候才会被回收。

虚引用的get方法永远返回null,可以用虚引用来引用我们感兴趣的对象,在GC回收的时候,会把该对象加到referenceQueue中。通过观察referenceQueue,可以知道对象是否被回收了。(此时我们可以在gc回收之前做一些其他事情,比如记录些日志什么的)

C#中支持二维矩形数组,单数组 int[,] a = new int[5, 2] {{0,0}, {1,2}, {2,4}, {3,6}, {4,8} };或者 int[,] a = { { 0, 0 }, { 1, 2 }, { 2, 4 }, { 3, 6 }, { 4, 8 } };

Java中不支持,只支持数组的数组。

C#中装箱操作时候隐式的,拆箱操作时显式的。

Java中装箱拆箱都是隐式的。

C#中 成员变量修饰符 public, internal, protected, private, protected internal

Java中 public, package, protected, private

C#类中,继承的方法,默认为new,必须显示override才表示覆盖。

Java中默认表示覆盖。

C#中的内部类都是类级别的,可以随时在外部实例化。

Java中内部类必须是static的才是类级别的,才能在外部被实例化。

C#支持分部类

Java不支持

C#中,枚举类型不能实现接口。

Java支持枚举类型实现接口。

C#支持运算符重载

Java不支持。

C#方法支持out,ref引用参数

Java不支持。

C#不支持常量参数

Java支持,final。标记final的参数,在方法中不能被修改。

public short getValue(final short index) {

if (index < values.length) {

index++;    //出错,index的值无法修改.

return values[index];

}

else return -1;

}

C#支持命名参数,可选参数,分部方法,条件方法

Java不支持。

C#的泛型在运行时都是一个新的类型。

Java的泛型为伪泛型,在运行时被擦除。

时间: 2024-11-05 05:18:50

整理的部分Java和C#不同点的相关文章

这里整理了基于java平台的常用资源

这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.thanks. 构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化的方式进行配置,所以维护起来相当困难. Gradle:Gradle采用增量构建.Gra

c++与java的一些不同点

Java.C.C++在近两年一直稳居世界编程语言排行榜前三名.Java与c++都是面向对象的语言,但Java晚于C++发布,部分语法和思想也参考了C++,只是Java 没有头文件.指针.运算符重载.虚基类等等,算是c++语言的"纯净版".学过c++的同学入门Java相对来说就不算很难了,应当注意的是Java与c++有很多不同点. 1.头文件与命名空间 c++里可以用头文件,而Java里没有头文件的用法. Java里有package关键字的用法.当一个大型程序交由数个不同的程序人员开发时

Java学习笔记整理第一章 java基本数据类型、修饰符、运算符

Java关键字: Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量.Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名和参数.   具体的百度百科 'Java关键字'". Java标识符: Java语言中,对于变量,常量,函数,语句块也有名字,我们统统称之为Java标识符. 标识符是用来给类.对象.方法.变量.接口和自定义数据类型命名的. 注意: a.数字不能开头 b

整理自己对java的理解

这篇文章是基于我准备比赛的总结涉及到的语法我也尽可能去查询他是为什么,尽量做到真正的了解到为什么,而不只是停留在这就是java的语法的层面上,这样才对现实世界的一切更加理性地看待. 这篇文章不是初学java了..是我读java编程思想里面的小总结..所以针对的是有java有一定基础的又对细节挺模糊的人. 1从类说起 为什么从类说起?因为java认为一切皆是对象,所以我们应该从java的类的性质再复习起来先咯.. 首先我们知道,类里面有字段(成员),也有方法(成员函数),这里面有一些性质需要说一下

自学整理一:java文件对话框的使用(包括文件多选,文件、文件夹同时可选操作)

老早写的,现在转移阵地 在java中有两种方式调用文件对话框 (1)一种是AWT中的FileDialog类,通过FileDialog类创建一个对象,该对象即是所需要的对话框, 例如,FileDialog dialog=new FileDialog(new Frame(),"选择存放位置",FileDialog.LOAD);   这一行代码使用了FileDialog类的其中一个构造函数 FileDialog(Dialog parent,String title, int mode)   

累积下学习 C#时和 Java时的不同点

==和equals()方法的区别: 首先有一个观点: 这两个都是用来比较值是否相等的 ( 这里的值有时候指的是地址值, 有时候是存储的值; 下面将地址值称为地址, 存储的值称为值 ) 在Java中: 对于值类型: ==比较的是值, equals()方法比较的也是值 ( 不过值类型需要手动装箱后才能调用方法 ) 对于非 Object的引用类型: ==比较的是地址, equals()方法比较的是值 ( 在 Object 类中比较的是地址, 如果类中重写了 equals()方法, 就像根据重写的内容进

整理的一些java中常使用jar包以及说明

slf4j:Simple Logging Facade for Java SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样 的日志系统.按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统. javassist:java assist(n. 帮助:助攻vi. 参加:出席vt. 帮助:促进) Javassist是一个开源的分析.编辑和创建Java字节码的

整理的一些java面试题

Java类型:8种基本类型,3种引用类型;基本类型 : Byte short int long float double char boolean字节长度 : 1 2 4 8 4 8 2 1引用类型 : 类,接口,数组 简述你所知道的JAVA修饰符及各自的使用机制: Abstract:修饰类,会使这个类称为抽象类,这个类将不能生成对象实例,但可以作为对象变量声明的类型,需要子类继承并覆盖其中的抽象方法. 修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,需要子类继承实现(覆盖

月薪30KJava大牛整理了最新Java学习思维导图,看完茅塞顿开

文章最后有面试题福利!记得看一下哦~ 想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢? 本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能. 相信此文对正在寻觅Java程序员(Java工程师)职位的freshman以及希望成为中高级Java开发者的junior都会有所帮助. 专业技能 熟练的使用Java语言进行面向对象程序设计