1 c++有unsigned,java没有,下面是c++
Integer Types:
short -> signed short
signed short
unsigned short
int -> signed int
signed int
unsigned int
signed -> signed int
unsigned -> unsigned int
long -> signed long
signed long
unsigned long
Be careful of char:
char (is signed or unsigned depending on the implmentation)
signed char
unsigned char
2 称呼不同
c++ bool java boolean
3 数据类型大小是否固定:java固定,c++不固定
基本数据类型存储空间
下面在32位win7系统中,分别用Visual Studio 编译C,C++程序,用eclipse编译Java程序。运行结果整理如下:
4 C++的指针VS Java中的引用
C++
在32位机上,所有指针类型变量占用内存字节数都为4
因为32位机就是 4字节 * 8个二进制位/字节 计算出来的.
如果在64位机上,指针占用内存大小就是:8个字节.
Java
sun hotspot jvm和ibm jvm中都把引用实现为一个指针,因此在64位平台上,占8个字节,在32位平台上占4个字节。
一样
今儿偶然看到一个java基础的东西,发现一个很有趣的地方,如果不是偶然看到,我估计自己会一直错下去。
在C++中
在C++中,char是基础数据类型,8位,1个字节。byte不是基础数据类型,一般是typedef unsigned char byte;这样子的,也就是说,byte其实是unsigned char类型,那么也是8位,1个字节。不同的是,char可以表示的范围是-128-127,而byte可以表示的范围是0-255。
在Java中
在java中,char和byte都是基础数据类型,其中的byte和C++中的char类型是一样的,8位,1个字节,-128-127。但是,char类型,是16位,2个字节,'\u0000'-'\uFFFF'。
为什么java里的char是2个字节?
因为java内部都是用unicode的,所以java其实是支持中文变量名的,比如string 世界 = "我的世界";这样的语句是可以通过的。
以上,简单记录,以备查找。
补充:
C++中,某些数据占多少位,多少字节,是与机器操作系统,硬件,有关系的。
而java中,是与操作系统,硬件无关的,因为java是运行在虚拟机上的,所以数据大小都是固定的。
顺便,java中的long是固定8字节,64位;int是4字节,32位。