选择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中的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方法。最好明确指定参数以实现预期的稳定行为。
上一篇:win10刚开机内存就满了
下一篇:a在内存中占几个字节