JavaVSC#.Net
1
常数:使用final关键字
常数:使用const、readonly关键字
2
使用Eclipse导入现有项目
使用VS直接打开各个项目的解决方案即可
3
没有属性。 要使用变量,必须定义get,set方法
属性{get; set; }
4
使用foreach (对象项目列表) {}
存在foreach(objectoinlist ) {}
5
无函数指针
专用函数指针----有请求
6
没有var关键字,类型动态不匹配
有var关键字
Var x=new A (;
7
一个. java文件只能有一个公共类
没有这个限制
8
如果说结构体不存在的话,一般大家指的结构体是class
有结构结构,属于值类型
9
List只是一个接口,可以是ArrayList或
LiinkedList的实现
IList是接口,List是实现
10
在linux上运行良好
在linux上运行很麻烦,所以需要将. net平台移植到linux上。 所以除非是技术爱好者,否则一般很少有人这么做。
11
不会使用关键字将值类型作为引用传递
可以使用ref、out等关键字传递值类型的引用
12
没有as关键字的使用方法
as存在,用于转换类型的as列表
13
判断是否可以使用实例of进行转换
判断能否使用is进行转换
14
GC :存在,但都是托管的,不能自主回收
GC :存在。 除特定指定外,其余的都托管。 如果需要,还可以自己主动回收主机变量
15
在扩展区继承
如c所示,使用“:”继承
16
无法继承使用final的类
指示无法使用sealed继承类
17
无索引器
有索引器。 这很方便。 想学习. net的人请重点看
18
生成的是字节码,在JVM(Java虚拟机)上运行
生成的IL语言使用. netclr(publiclanguageruntime ).netVM )运行
19
是的,生成. jar文件
这将生成一个exe或. dll文件
20
命名约定:
常数:全部由大写下划线组成
类名: Pascal,例如AppleFruit
方法和变量:例如appleFruit
命名约定:
常数:全部由大写下划线组成
类命名: Pascal,如AppleFruit
变量: Camel,例如appleFruit
方法: Pascal
21
无法折叠代码块,需要添加特殊组件,考虑起来麻烦,性价比不高
使用
#region
#折叠#endregion代码块
22
f(finalintx,final int y )表示不能修改x,y
我研究了一下,好像没有好办法。 如果你在的话请联系我
23
构造函数中使用super引用父类的构造函数
使用:base浏览父类的构造函数
24
Package in java
(1)使用包package包含类程序集
)2)引用包时使用import
)3)包之间是并行关系,不存在包含关系
)4)数据包的物理结构和逻辑结构必须一致
)5)包中不存在别名
Namespace in C#
(1)使用明显的空间包括汇编
)2)引用命名空间using
)3)命名空间可以具有包含关系
)命名空只是逻辑结构,可以与物理结构不匹配
)5)允许使用命名空间别名)如果命名空间较长,则引用会很麻烦) ) ) )。
25
数值类型用“==”进行比较
字符串比较使用equals比较
使用==进行数值类型的比较
将字符串与equals进行比较使用==比较的差异不是很大(如果比较的字符串为null,则两者有差异)
26
String.formate时(%s )与后续变量保持一一对应
Str
ing.formate时{0}使用索引来指示,使用后续的对应变量,如果需要格式化的话,使用“:”来指定27
大部分工程都需要安装程序,然后debug模式下连接服务器,然后请求才会到达ide中,和php的调试请求差不多
一般本地直接可以run起来,通过运行的UI来调用本地的代码
28
没有goto 语句
保留了goto语句
29
没有指针的概念
有指针,但是需要在unsafe的情况下使用
30
枚举:
除了和C#一样的设置常量数值,java仍保留了特殊类的基本共跟你过,让玩家可以自己玩,而C#对此做了特殊限制
枚举:
使用enum枚举器来进行枚举,只能enum设置常量数值
31
多线程使用synchronized使代码同步
使用lock{}来锁定代码
32
不能重载运算符
可以重载运算符,但是不鼓励
33
可变参数:
Void sum(int…list){}以“…”三个字为关键字
可变参数:以params为关键字
34
对异常的描述:
java中,异常分为两种,运行时异常(也就是uncheckException)和已检查异常checkException,但是checkException是必须要处理的,也就是不能抛出,必须通过try-catch来完成,在方法的定义上也必须写上 throws 某某异常,需要Check Exception如果不处理的话是不能进行编译的。对于运行时异常可以直接抛出,无需专门的try catch
C#和 C++类似,不需要对代码强制trycatch ,也不需要在写出某种throw后,一定要在方法的定义上加上 throws...
C#作为微软拿出来与java对抗的语言,在语法和特性上一定是要优于java 的,同事微软还提供了大量的语法来支持.net 和office、sqlserver、access等微软其他产品的契合。但是java作为开源产品中很重要的语言,如今已经快接近20岁了,有大量的成熟的插件和组件以及开源的框架来配合,这点是C#无法媲美的,所以无所谓孰优孰劣。貌似以前看过这样一句话,大意是,java 是开源的,有大量丰富的开源框架可以用,C#是闭源的,但是微软很给力(虽然微软现在已经开始拥抱.net平台了,但是C#可以有成熟的开源环境还需要非常长的路要走)。
文本大致比较了一下java和C#的基本语法和基本概念以及他们的ide,其目的是:
1、让程序员可以再熟悉一门语言的情况下,再学习另外一门语言可以快速的入门。
2、对自己在工作后开始接触java做一个总结。
不论怎么对比java和C#,毕竟他们是属于两个平台,两种完全不同的语言,所以语法上千差万别,本文也只是为了让大家快速的入门、上手而做了一些记录。如果文中哪里有差错,大家可以指出。如果还有一些重要的语法差异,被我忽略了,也可以指出来。