您的位置 首页 java

Java 编程细节——char 与 byte 相关知识点解析

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

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

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

Java 编程细节——char 与 byte 相关知识点解析

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

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

Java 编程细节——char 与 byte 相关知识点解析

答: 输出 c 和 100。

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

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

文章来源:智云一二三科技

文章标题:Java 编程细节——char 与 byte 相关知识点解析

文章地址:https://www.zhihuclub.com/180750.shtml

关于作者: 智云科技

热门文章

网站地图