因工作安排,后期需要维护一个java项目。所以稍微熟悉下java,开此篇记录下java与c#的区别点,方便增强自己学习效果。肯定是不全的,可能是有错的,欢迎批评指正。

一、关键字

描述

C#

Java

备注

引用其他类库

using

import

 

命名空间

namespace

package

声明一组相关对象的作用域。

定义常量

const

final

 

访问控制修饰符

internal

default

java默认为default,c#默认为private

表示父类

base

super

用于从派生类中访问父类的成员。

继承类

:

extend

 

继承接口

:

implements

 

不允许继承

sealed

final

防止类派生;防止方法和属性在派生类中被重写。

类型判断

is

instanceof

评估对象与给定类型是否兼容。 

循环遍历

foreach()

for(type element: array)

例:for(int x : numbers ){}


lock

synchronized

 

可变数量参数

params T

T...

指定采用可变数目的参数的方法参数。

外部实现的方法

extern

native

声明外部实现的方法。

布尔值

bool

boolean

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、代码结构

  • java中,如果一个类定义在某个包中,那么package语句应该在源文件的首行。package中内容不用花括号包起来,范围适用于全文见。
  • java中,如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
  • java中,一个源文件中只能有一个public类。
  • java中,一个源文件可以有多个非public类。
  • java中,源文件的名称应该和public类的类名保持一致。
  • java中,调用父类构造函数,需要在子类构造函数中显示调用super(params);C#中在子类构造函数声明后加上:base(param)来实现。

三、编码风格

  • java中,方法名使用帕斯卡命名法,首字母小写。
  • java中,左花括号不换行。

四、其他

  • 在 Java 中,int类型前缀0表示8进制;在C#中忽略0,前缀0x表示8进制。
  • 在 Java 中,标识符中允许有美元符($),且允许作为首字符;c#中是@字符。(都是字母数字下划线加前文特殊符号)
  • 在 Java 中,重写父类方法不需父类方法标示为virtual。没有覆盖概念。
  • Java 不支持隐式类型的局部变量(C# 支持 var 关键字)。
  • 在 Java 中,可以仅按值传递参数,而在 C# 中,你可以按引用以及值进行传递。 (C# 提供 ref 和 out关键字,用于按引用传递参数;Java 中无此类等效项)。
  • Java 不支持预处理器指令,如 #define
  • Java 不支持无符号整数类型,而 C# 提供无符号整数类型,如 ulonguintushort 和 byte
  • Java 不支持运算符重载;在 C# 中,可以重载运算符和转换。
  • 在 Java switch 语句中,代码可以贯穿到下一个 switch 部分,但在 C# 中,每个 switch 部分的结尾必须终止 swith(每个部分的结尾必须以 break 语句结束)。
  • 在 Java 中,指定由带 throws 关键字的方法引发的异常,但 C# 没有检查异常的概念 – throws 关键字在 C# 中不受支持。
  • Java 不支持语言集成查询 (LINQ)。