C#和Java数据类型的区别
众所周知,C#和Java是当今最火热的两门面向对象编程语言,很多开发者在开发Java的同时,也涉足到C#。不得不说它们两门语言是有很多共同点的,今天分享的是它们之中最常见和最容易让程序员都搞混的数据类型的比较,因为这个数据类型真的很容易搞混。
- 值类型
- 基本数据类型
- Java中有八种基本数据类型:boolean,byte,char,short,int,long,float,double
- C#中的数据类型会多一些,Java中的数据类型都是有符号的,而C#中还定义了相应的无符号数据类型:bool,byte,sbyte,char,short,ushort,int,uint,long,ulong,float,double,decimal
- C#值类型表格所示
类型 | 描述 | 范围 | 默认值 |
bool | 布尔值 | True或False | False |
byte | 8位无符号整数 | 0~255 | 0 |
char | 16位Unicode字符 | U+0000到U+ffff | '\0' |
decimal | 128位精确的十进制值,28-29有效位数 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
double | 64位双精度浮点型 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
float | 32位单精度浮点型 | -3.4 x 1038 到 + 3.4 x 1038 | 0.0F |
int | 32位有符号整数类型 | -2,147,483,648到2,147,483,647 | 0 |
long | 64位有符号整数类型 | -923,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
sbyte | 8位有符号整数类型 | -128到127 | 0 |
short | 16位有符号整数类型 | -32,768到32,767 | 0 |
uint | 32位无符号整数类型 | 0到4,294,967,295 | 0 |
ulong | 64位无符号整数类型 | 0到18,446,744,073,709,551,615 | 0 |
ushort | 16位无符号整数类型 | 0到65,535 | 0 |
通过对比可以看到C#比Java中多了一个decimal,这个decimal类型属于C#的值类型,但不是基本类型,它其实是一个结构类型,Java中没有结构的概念
它们之间有着数据类型的五大区别
1.无符号整数
- C#:支持8-bit,16-bit,32-bit和64-bit无符号整数
- Java:仅支持16-bit无符号整数
2.复数
1)C#:支持复数
2)Java:不支持复数
复数一般写作“a+bi”其中“a”和“b”是整数,而“i”代表根号-1,在电气工程,流体力学等环境中常常会用到复数
3.值类型
1)C#:仅支持用户定义值类型
2)Java:仅支持原始值类型
C#允许用户自定义值类型,例如:用户想构建有多个属性的SimpleVale变量,然后给属性赋值
4.元组
1)C#:支持元组
2)Java:不支持元组
C#里的“元组”类包含“一个拥有特定数量和序列元素的数据结构”
5.指针
1)C#:支持指针
2)Java:不支持指针
指针变量“point”指向系统内存里的确切位置,在Java这样的网络应用语言中,指针毫无用处。实际上,Java Native Interface (JNI)能够实现任何这类功能。
所以,正如Gosling指出,Java的最大优势莫过于简单。但是,为此这会牺牲掉包括数据类型在内的一些复杂功能。