新工作.Net和Java都要做,早期也做過一段Java的項目,但沒有系統的深入學習過。一直覺得這兩門語言估計是最相近的兩門語言了,好多代碼可以說直接拷過來都不帶報錯的,但仔細推敲還是有很多的不同。
1. 基本數據類型
Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。
C#提供的類型更細一些。
Java沒有基本的decimal類型,有個BigDecimal類型,是一個繼承於Number類的類。
C# | Java | |
---|---|---|
布爾型 | bool | boolean |
字符型 | char | char |
整形 | byte | byte |
sbyte | ||
int | int | |
uint | ||
nuint | ||
long | long | |
unlong | ||
short | short | |
unshort | ||
浮點型 | decimal | BigDecimal* |
double | double | |
float | float |
2.結構類型
C#提供像C語言一樣的結構體(struct )類型,Java沒有此類型,一般通過類實現類似功能。
3.枚舉類型
二者都有枚舉類型enum。
C#的枚舉類型時值類型,默認情況下,枚舉成員的關聯常數值為類型 int;它們從零開始,並按定義文本順序遞增 1。 可以顯式指定任何其他整數數值類型作為枚舉類型的基礎類型。
enum HttpCode : ushort
{
OK = 0,
BadRequest= 400
}
Java的枚舉類型是通過類實現的,所以可以為其添加屬性和方法等。
public class Simple {
enum HttpCode
{
OK("請求成功!", 200),
BadRequest("請求失敗!", 400);
// 成員變量
private String message;
private int code;
// 構造方法
private HttpCode(String message, int code) {
this.message = message;
this.code = code;
}
// 覆蓋方法
@Override
public String toString() {
return this.message;
}
}
public static void main(String[] args) {
System.out.println(HttpCode.BadRequest.toString());
}
}
Java的枚舉成員都是通過 Class 在內部實現的,且所有的枚舉值都是 public static final 的。
上面的枚舉類代碼可以理解為:
public final class HttpCode extends Enum{
public static final HttpCode OK;
public static final HttpCode BadRequest;
}
4.元組類型
C#7.0之后提供類元組類型。Java中JDK原生不支持元組,但有框架javatuples支持元祖。
5.可空值類型與包裝類型
C#為值類型提供了對應的可空值類型,例如int->int?,本質是通過結構體實現的。
Java為值類型提供了對應的包裝類型,例如int->Integer,包裝類型為引用類型。
6.Object、String
二者都以Object類型作為所有類型的基類,都提供了String類(以及StringBuilder),注意首字母大小寫不同。