当前位置:首页 > 内存 > 正文

字符型数据在内存中占的字节

  • 内存
  • 2024-05-02 21:12:49
  • 2360

一、char、int、float和double类型的数据在计算机存储空间中占用几位?

选择A,分析:

在16位计算机中,五种基本数据类型的存储空间长度顺序为:

字符类型:1字节

int类型:2字节

longint:4字节或4字节-1位

float类型:4字节

double类型:8字节

扩展信息:

C语言数据类型:整数、字符、实数或浮点类型(单精度和双精度),枚举类型、数组类型、结构体、联合类型、指针类型和空类型。

数据存储:

char:字符型数据,是整型数据类型。

int:标量数据,表示的范围通常是编译器指定的一个内存字节的长度。取值范围为:-2147483648~2147483647。

Float:单精度浮点数据,是浮点数据的一种。取值范围:-3.4E+38~3.4E+38

Double:双精度浮点数据,是浮点数据的一种类型。

使用数据类型:

intmain{

inta=2;

intb=3;printf(a+b);

floatc=0.111;

floatd=0.222;

printf(c+d);


参考资料:-C语言


二、java中的字符类型的数据占多少个字节?

如果你所说的“字符”指的是Java中的char,那么好吧,那么它就是16位2字节。

如果你说的“字符”指的是我们肉眼看到的“抽象字符”,那么谈论它们占用多少字节就没有意义了。更准确地说,如果没有特定的编码,谈论某个字符占用多少字节是没有意义的。

就好像有一个抽象整数“42”。你认为它占用了多少字节?这取决于你使用byte、short、int还是long来存储它。
以byte存储时占1个字节,以short存储时占2个字节。Int通常为4个字节,long通常为8个字节。
当然,如果使用字节,它会受到位数的限制。有些号码无法存储。例如,256不能放在一个字节中。

角色也是如此。如果要说“占用多少字节”,就需要先把编码解释清楚。相同的字符在不同的编码中可以占用不同的字节。

我们以您给出的“子”字为例。“子”在GBK编码中占用2个字节,在UTF-16编码中占用2个字节,在UTF-8编码中占用2个字节,3个字节。UTF-32编码的字节。同一编码中不同的字符可以占用不同的字节。

“Word”在UTF-8编码中占用3个字节,而“A”在UTF-8编码中占用1个字节。(因为UTF-8是变长编码),而Java中的char基本上就是UTF-16编码。而UTF-16实际上是一种变长编码(2字节或4字节)。

如果一个抽象字符在UTF-16编码中占用4个字节,显然不能放在char中。也就是说,只有UTF-16编码中只占2个字节的字符才可以放在char中。GetBytes实际上进行编码转换。您必须显式传递一个参数来指定编码,否则它将使用默认编码进行转换。

你说“newString("Word").getBytes().lengthreturns3”,也就是说默认编码是UTF-8。
如果你显式传递一个参数,比如“newString("Word").getBytes("GBK").length",则返回值为2。启动JVM时可以设置默认编码。假设您的类名为Main,那么当在命令行上使用Java运行此类时,您可以通过ng参数设置默认编码。
例如:ng=GBKMain
此时,当不带参数运行getBytes()方法时,newString("Word").getBytes().length返回2是的,因为现在默认编码是GBK。
当然,如果此时明确指定编码,newString("Word").getBytes("UTF-8").length将始终返回3。

否则,它将返回return使用操作系统环境的默认编码。

通常Windows系统是GBK,Linux和Mac是UTF-8。
但是需要注意的是,当你使用IDE在Windows上运行时,例如Eclipse,如果你的项目默认编码为UTF-8在IDE中运行你的程序时,此时会添加参数ng=UTF-8,即使你在Windows上,l默认编码为UTF-。8、不是GBK。

由于受启动参数和操作系统环境的影响,一般不建议使用不带参数的getBytes方法。最好明确指定参数以实现预期的稳定行为。