.NET中常见的数据类型分类分别是值类型和引用类型
值类型包括(基元类型、struct、枚举)
引用类型包括(类、类、数组、接口、指针)
Java分为,基本类型和类
C# | Java | |||
值类型 | 基元类型 | 基元数据类型 | ||
struct | 无此概念 | |||
枚举 | 是引用类型 | |||
引用类型 | 类 | 类 | ||
数组 | 数组 | |||
接口 | 接口 | |||
指针 | 无此概念 | 在C#中需要打开unsafe才可使用 |
有点联系,但是区别还是很大的,对于Java基本类型只有8种,4种整型(int short long byte),2种浮点(float,double),1种字符(char),一种布尔(boolean)
如果非要跟.NET对应,就看下面这张表吧
Java 基本类型 | C#基元数据类型 | 取值范围 | |
整型 | int | int | |
short | short | ||
long | long | ||
- | byte | 不同!!! | |
byte | sbyte | 不同!!! | |
- | uint | ||
- | ushort | ||
- | ulong | ||
浮点 | float | float | |
double | double | ||
字符 | char | char | |
布尔 | boolean | bool |
除去Java缺少的一部分类型(老实说,这些数据这么多年来在.NET里边也没有用到过),要注意的就是java的byte跟C#的byte取值范围不同
java的byte是从-128到127
.NET的byte是0到255
看下面两个String转byte的例子
// C# 代码 byte[] bytes = System.Text.Encoding.UTF8.GetBytes("小墨123"); Console.WriteLine(String.Join(",", bytes)); // 输出 229,176,143,229,162,168,49,50,51 Console.ReadLine();
// Java代码 byte[] bytes = "小墨123".getBytes("UTF8"); StringBuilder b = new StringBuilder(); for (byte item : bytes) { b.append(item).append(","); } System.out.println(b.toString()); // 输出为 -27,-80,-113,-27,-94,-88,49,50,51,
同样的字符串,同样UFT8编码,但是转化的byte[]数组却不同