您的位置 首页 > 数码极客

char字符串如何存储在long类型数据

作为Java程序员,大家是不是发现自己很少用char,byte,更多的都是用String,StringBuffer,StringBuilder,那么我们为什么要研究char和byte呢?没错,就是空间,内存。。。

问:java char 能否存储一个汉字,为什么?

答:char 类型一般默认占用两个字节,所以能存储中文字符(一个中文字符占用两个字节),所以 char c1 = '我'; 是合法的,而 char c2 = 'ab'; 是非法的,所以 char 类型在内存中占用两个字节空间,但是只能表示一个字符,若是只想表示一个字节的字符可以使用 byte。

问:下面程序段的输出是什么?

答:可能是 2、3、4 之一。因为 getBytes() 方法会根据当前默认的字符编码格式获取字节数组,gbk/gb2312 占 2 位,utf-8 占 3 位,unicode 占 4 位。所以这个问题告诫大家写代码最好指定编码,譬如可以通过 ("GBK"),("UTF-8") 来指定输出。

问:下面程序段的输出是什么?

答:输出 c 和 100。

对于第一个输出来说,char 在 java 中称为字符型,占 2 个字节,而字符常量是用单引号括起的一个字符,而且字符常量在内存中存储的是该字符在 Unicode 字符集中的排序位置(即这里的排序位置为 98,可以 javap 看),所以对于 char n = 'b' 来说就是 char n = 98,而 Sy(++n) 语句会先执行++n,所以为 99,然后输出对应位置的字符,即 c。

对于第二个输出来说,Java 中存在向上兼容的特点(不同类型数据参与运算数据类型会强制转换,转换的方向是 char -> short -> int -> long -> float -> double),所以在 Sy(n+1) 语句中,n 是 char 类型,1 是 int 类型,所以会先把 n 强转成 int,然后运算 99 + 1,所以输出也是 int 类型的 100。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“char字符串如何存储在long类型数据”边界阅读