我原来在学校里面学习了C#基本知识,并且在学校的4、5年中全部使用C#进行实训项目的开发工作。现在考虑的就业开始学习Java,毕竟目前Java人才的需求量还是比较大的。学习过基本的Java语法,但是现在也忘记的差不多了。在决定到CSTP接受培训前,我上网搜集了大量的关于Java和C#的比较,众说纷纭。我想就这几天学习的Java知识和积累的C#知识对这两门编程语言进行比较。
由于我还是2009年应届毕业生,才学疏浅;我知道咱们博客园有好多C#的专家和高手,如有说的不正确的地方,还请大家批评。
由于Java培训还没有结束,因此我将不断更新此文章,请各位关注。
注意:序号钱带"*"的不为相同
1. 属性
Java中如果想修改或访问类的私有变量,只能通过自己编写共有方法。大多数情况下,我还是直接修改或访问这些变量,因此C#中的属性set, get大大的方便了程序员的代码编写效率。
此外,如果不使用属性,我们同样可以将Java的方法使用在C#中,因此,我认为属性器是C#对于Java的进一步发展。
*2. 异常处理
原来我以为Java中只会有try-catch异常处理,不如C#还有finally;而今天在MyEclipse中试了一试,原来Java和C#中的异常处理是一样的。
3.析构函数
构造函数和析构函数的概念在C++中是深入人心的。Java中确没有析构函数,有人说这是因为Java虚拟机有垃圾自动回收功能。但我认为这个理由不值得去掉析构函数这一概念,我认为在某些时候保留析构函数还是好的。毕竟,有些时候,我们还是想在对象销毁之时自定义一些内容。C#就析构函数这一点与Java相比,C#就做得很好了。虽然C#的.net虚拟机也有垃圾回收功能,但是你仍然可以自己编写析构函数。C#给了我们更大的灵活性,同样又不会在系统中产生“垃圾”。
4.using指令
在C#中using这个关键字不仅仅是导入包(这一点类似于Java中的import),更为重要的一点是使用这个关键字作为using指令。using(...){...}相当于一块try...catch...finally语句,同时在using指令完毕后将释放using()中的对象,这一点对于数据库尤为重要。这是我最近才体会到的。
5.连接数据库
我常常在Java中连接数据库的方法是建造一个DbConnection、一个存放DbConntion的Dbfactory。其中在DbConnection中使用jdbc返回一个静态的Connection对象。这种方法在Java中一直被我使用;然而同样的方法在C#中使用ADO.NET 2.0的时候却会发生异常,不能够使用DbConnection对象 == null来进行和Java中一样的异常判断,必须要使用(DbConnection对象.State == 连接状态)来进行异常的判断。虽然这样麻烦了点儿,但是能够看出C#可以通过State属性得到连接对象的状态,很不错。
一个老师给我介绍了Microsoft 的 ApplicationBlock动态链接库,使用其中的SqlHelper和SqlHelperParameterCache这两个类进行一些DDL、DML等操作,非常方便。
|
请发表评论