byte类型为什么不能自动转换为char类型

qianlong2013 2013-11-16 04:09:28
Java的基本类型中,按照自动转换的规则:java中容量小的(占字节数)小的可以自动转换为容量大,byte占一个字节8位,char占两个字节16位,为什么byte不能转换为char类型?
...全文
2120 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
丹青妙笔 2013-12-19
  • 打赏
  • 举报
回复
不错不错
guishuanglin 2013-12-19
  • 打赏
  • 举报
回复
btye只能是 127到-128, char可就大了....不能自动转, 不过你手动可以转啊.

char[] ch = "abcde".toCharArray();
		if (ch[0] >= 'a' && ch[0] <= 'z') {
			ch[0] = (char) (ch[0] - 32);
		}
相加减都可以的,但是不能超过byte.
  • 打赏
  • 举报
回复
在JSL5.1.4中: Widening and Narrowing Primitive Conversions中涉及到了byte to char 解释:First, the byte is converted to an int via widening primitive conversion, and then the resulting int is converted to a char by narrowing primitive conversion.
  • 打赏
  • 举报
回复
学习了。。。这个问题俺还没注意过呢
享受软件世界 2013-12-18
  • 打赏
  • 举报
回复
Java中byte、short、char三种类型的优先级是相同的,相同优先级之间是不能进行自动转换的,只能将低类型自动转换为高类型
那年又见 2013-12-17
  • 打赏
  • 举报
回复
byte 是有符号的 char 是0-65535 的无符号整数
qianlong2013 2013-12-02
  • 打赏
  • 举报
回复
远超出内存大小。
byte[] bs = new byte[1000*1000*1000*100];
会抛出内存不足的异常。[/quote] 不好意思,最近刚工作,有点忙,这么长时间才回你的帖子。 我想问的是:能表示多少维的数组,而不是数组的最大空间。在C,C++中会根据硬件的不同而有不同表现。但是考虑到Java是跨平台的,这些应该是一定的。 比如常用的int类型可以表示多少维,255维?那么最小的byte呢?用那种方式可以计算得出呢?
jdgdf566 2013-11-18
  • 打赏
  • 举报
回复
引用 11 楼 shuaixianbohou 的回复:
从技术上讲是这样的。李刚去讲C++比较合适,这样只从技术层面讲java,会抹掉java的灵魂。《Java编程思想》指出要从字符、布尔、数值、原始二进制数据的角度理解java对基本类型的设计意图。 byte是原始二进制数据,一个字节,8个位。byte不一定是整数,完全可能是一个浮点数的一部分。《Java编程思想》指出byte转成别的要根据事务,否则......
作为菜鸟,我会读到《Java编程思想》和《JVM虚拟机》的,谢谢 想问一下,Java的多维数组,最多能表示多少维呢?[/quote] 远超出内存大小。
byte[] bs = new byte[1000*1000*1000*100];
会抛出内存不足的异常。
jdgdf566 2013-11-17
  • 打赏
  • 举报
回复
不是符号的问题。转换必须是同性质的类型之间。整形,浮点型,都是数值。字符是有字符集的,这种转换在事务上没有意义。java语言设计的目标是做项目,而不是玩技术。
qianlong2013 2013-11-17
  • 打赏
  • 举报
回复
从技术上讲是这样的。李刚去讲C++比较合适,这样只从技术层面讲java,会抹掉java的灵魂。《Java编程思想》指出要从字符、布尔、数值、原始二进制数据的角度理解java对基本类型的设计意图。 byte是原始二进制数据,一个字节,8个位。byte不一定是整数,完全可能是一个浮点数的一部分。《Java编程思想》指出byte转成别的要根据事务,否则......[/quote] 作为菜鸟,我会读到《Java编程思想》和《JVM虚拟机》的,谢谢 想问一下,Java的多维数组,最多能表示多少维呢?
jdgdf566 2013-11-17
  • 打赏
  • 举报
回复
引用 9 楼 shuaixianbohou 的回复:
[quote=引用 8 楼 jdgdf566 的回复:] 不是符号的问题。转换必须是同性质的类型之间。整形,浮点型,都是数值。字符是有字符集的,这种转换在事务上没有意义。java语言设计的目标是做项目,而不是玩技术。
在李刚所著《Java疯狂讲义》48页中写到: 基本类型包括boolean类型和数值类型。数值类型有整数类型和浮点型。整数类型包括byte,short,int,long,char。浮点类型包括float和double。 提示中标注:有的时候也把char类型称为字符型,实际上字符型也是一种整数类型。 请注意提示中的说明,char类型实际上是整形的一种类型,char能自动转换成int也说明了这个问题。所以byte不能转换为char类型应该是符号问题。 至于项目重要,还是技术重要,不在讨论范围之内。[/quote] 从技术上讲是这样的。李刚去讲C++比较合适,这样只从技术层面讲java,会抹掉java的灵魂。《Java编程思想》指出要从字符、布尔、数值、原始二进制数据的角度理解java对基本类型的设计意图。 byte是原始二进制数据,一个字节,8个位。byte不一定是整数,完全可能是一个浮点数的一部分。《Java编程思想》指出byte转成别的要根据事务,否则......
qianlong2013 2013-11-17
  • 打赏
  • 举报
回复
引用 8 楼 jdgdf566 的回复:
不是符号的问题。转换必须是同性质的类型之间。整形,浮点型,都是数值。字符是有字符集的,这种转换在事务上没有意义。java语言设计的目标是做项目,而不是玩技术。
在李刚所著《Java疯狂讲义》48页中写到: 基本类型包括boolean类型和数值类型。数值类型有整数类型和浮点型。整数类型包括byte,short,int,long,char。浮点类型包括float和double。 提示中标注:有的时候也把char类型称为字符型,实际上字符型也是一种整数类型。 请注意提示中的说明,char类型实际上是整形的一种类型,char能自动转换成int也说明了这个问题。所以byte不能转换为char类型应该是符号问题。 至于项目重要,还是技术重要,不在讨论范围之内。
不想低调 2013-11-16
  • 打赏
  • 举报
回复
类型转换。学习了
qianlong2013 2013-11-16
  • 打赏
  • 举报
回复
引用 5 楼 a1969212650 的回复:
额,你说的符号就是我说的范围。。因为有符号无符号的结果不就是范围的不同吗
符号是关键。对于byte来说,第一位是符号位。如果是byte b = -1;那么转换用char是无法表示的,因为char是无符号的。
「已注销」 2013-11-16
  • 打赏
  • 举报
回复
额,你说的符号就是我说的范围。。因为有符号无符号的结果不就是范围的不同吗
qianlong2013 2013-11-16
  • 打赏
  • 举报
回复
引用 3 楼 a1969212650 的回复:
分类方法我也是刚刚网上查的,但根本的,可能还是范围的问题。
范围是不会错的,毕竟是容量小的(占字节数)转换为一个容量大的。应该是你说的符号问题。
「已注销」 2013-11-16
  • 打赏
  • 举报
回复
分类方法我也是刚刚网上查的,但根本的,可能还是范围的问题。
qianlong2013 2013-11-16
  • 打赏
  • 举报
回复
引用 1 楼 a1969212650 的回复:
java基本数据类型分三种:字符char,布尔boolean,数值(整形,浮点型),其中数值类型的都是有符号的,但char是没有符号的,范围0-2^16-1,可能就是这个原因导致byte不能直接转换为char。另外,byte可以自动转换为short型,似乎也说明了这一点。。
在李刚所著《Java疯狂讲义》48页中写到: 基本类型包括boolean类型和数值类型。数值类型有整数类型和浮点型。整数类型包括byte,short,int,long,char。浮点类型包括float和double。 提示中标注:有的时候也把char类型称为字符型,实际上字符型也是一种整数类型。 我可能过多的想到字符型也是一种整数类型这句话了。朋友提到的符号之分,我觉得是对的。
「已注销」 2013-11-16
  • 打赏
  • 举报
回复
java基本数据类型分三种:字符char,布尔boolean,数值(整形,浮点型),其中数值类型的都是有符号的,但char是没有符号的,范围0-2^16-1,可能就是这个原因导致byte不能直接转换为char。另外,byte可以自动转换为short型,似乎也说明了这一点。。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧