java入门之从C#快速入门java

Java  VS   C#.Net

1

常量:使用final关键字

常量:使用const、readonly关键字

2

使用Eclipse导入已有工程

使用VS直接打开各个项目的解决方案即可

3

没有属性,使用变量需要定义get,set方法

存在属性{get;set;}

4

使用foreach(object o in objectList){}

存在foreach(object o in list){}

5

无函数指针

有专门的函数指针----委托

6

无var 关键字,类型不能动态匹配

存在var 关键字

Var x=new A();

7

一个.java文件只能有一个public class

不存在此约束

8

不存在结构体一说,一般大家指的结构体就是指的class

有结构体struct  ,属于值类型

9

List只是一个接口,需要ArrayList  或

LiinkedList 实现

IList 是接口,List<T>是实现

10

在linux上可以很好的运行

在linux上运行起来比较麻烦,需要将.net平台移植到linux才可以。所以除非技术爱好者,一般很少有人这样做。

11

不存在使用关键字将值类型变成引用传递的情况

可以使用 ref、out等关键字将值类型的引用传递

12

没有as 关键字的用法

存在as ,用来转换类型的 a as List<string>

13

使用 instanceof 判断是否可以转换

使用is 判断是否可以转换

14

GC:存在,但是全部托管,不能主动回收

GC:存在,除去特殊指定外剩余全部托管。如果有需要,自己也可以主动对托管变量进行回收

15

用Extends进行继承

类似于C++,使用“:”进行继承

16

使用final的类不能继承

使用sealed 表示类不能被继承

17

无索引器

有索引器,这个比较有用,想学.net的可以重点看下

18

生成的是字节码,在jvm(java 虚拟机)上运行

生成IL语言在.NET CLR(公共语言运行时(.net虚拟机)上运行

19

生成是的.jar 文件

生成结果是,exe 或者.dll文件

20

命名规范:

常量:使用全部大写字母加下划线的组成

类命名:Pascal 如:AppleFruit

方法和变量:Camel 如:appleFruit

命名规范:

常量:使用全部大写字母加下划线的组成

类命名:Pascal 如 AppleFruit

变量:Camel 如:appleFruit

方法:Pascal

21

无法折叠代码块,需要添加特殊的组件,研究了一下比较麻烦,性价比不高

使用

#region

#endregion 折叠代码块

22

F(final int x,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)命名空间可以存在包含关系

(4)命名空只是一种逻辑结构,可以与物理结构不一致

(5)允许使用命名空间的别名(当命名空间比较长时,引用的比较麻烦)

25

数值类型使用“==”比较

字符串比较使用 equals比较

 

数值类型比较使用==

字符串使用equals比较和使用==比较差别不是非常大(当有比较的字符串是null时,两者还是存在区别的)

26

String.formate时(%s)与后面的变量保持一一对应

String.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#,毕竟他们是属于两个平台,两种完全不同的语言,所以语法上千差万别,本文也只是为了让大家快速的入门、上手而做了一些记录。如果文中哪里有差错,大家可以指出。如果还有一些重要的语法差异,被我忽略了,也可以指出来。


你可能感兴趣的:(java入门)