当前位置:编程学习 > JAVA >>

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

Java的基本类型中,按照自动转换的规则:java中容量小的(占字节数)小的可以自动转换为容量大,byte占一个字节8位,char占两个字节16位,为什么byte不能转换为char类型? 自动类型转换 char byte --------------------编程问答-------------------- java基本数据类型分三种:字符char,布尔boolean,数值(整形,浮点型),其中数值类型的都是有符号的,但char是没有符号的,范围0-2^16-1,可能就是这个原因导致byte不能直接转换为char。另外,byte可以自动转换为short型,似乎也说明了这一点。。 --------------------编程问答--------------------
引用 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类型称为字符型,实际上字符型也是一种整数类型。
我可能过多的想到字符型也是一种整数类型这句话了。朋友提到的符号之分,我觉得是对的。 --------------------编程问答-------------------- 分类方法我也是刚刚网上查的,但根本的,可能还是范围的问题。 --------------------编程问答--------------------
引用 3 楼 a1969212650 的回复:
分类方法我也是刚刚网上查的,但根本的,可能还是范围的问题。


范围是不会错的,毕竟是容量小的(占字节数)转换为一个容量大的。应该是你说的符号问题。 --------------------编程问答-------------------- 额,你说的符号就是我说的范围。。因为有符号无符号的结果不就是范围的不同吗 --------------------编程问答--------------------
引用 5 楼 a1969212650 的回复:
额,你说的符号就是我说的范围。。因为有符号无符号的结果不就是范围的不同吗


符号是关键。对于byte来说,第一位是符号位。如果是byte b = -1;那么转换用char是无法表示的,因为char是无符号的。 --------------------编程问答-------------------- 类型转换。学习了 --------------------编程问答-------------------- 不是符号的问题。转换必须是同性质的类型之间。整形,浮点型,都是数值。字符是有字符集的,这种转换在事务上没有意义。java语言设计的目标是做项目,而不是玩技术。 --------------------编程问答--------------------
引用 8 楼 jdgdf566 的回复:
不是符号的问题。转换必须是同性质的类型之间。整形,浮点型,都是数值。字符是有字符集的,这种转换在事务上没有意义。java语言设计的目标是做项目,而不是玩技术。

在李刚所著《Java疯狂讲义》48页中写到:
基本类型包括boolean类型和数值类型。数值类型有整数类型和浮点型。整数类型包括byte,short,int,long,char。浮点类型包括float和double。
提示中标注:有的时候也把char类型称为字符型,实际上字符型也是一种整数类型。
请注意提示中的说明,char类型实际上是整形的一种类型,char能自动转换成int也说明了这个问题。所以byte不能转换为char类型应该是符号问题。
至于项目重要,还是技术重要,不在讨论范围之内。 --------------------编程问答--------------------
引用 9 楼 shuaixianbohou 的回复:
Quote: 引用 8 楼 jdgdf566 的回复:

不是符号的问题。转换必须是同性质的类型之间。整形,浮点型,都是数值。字符是有字符集的,这种转换在事务上没有意义。java语言设计的目标是做项目,而不是玩技术。

在李刚所著《Java疯狂讲义》48页中写到:
基本类型包括boolean类型和数值类型。数值类型有整数类型和浮点型。整数类型包括byte,short,int,long,char。浮点类型包括float和double。
提示中标注:有的时候也把char类型称为字符型,实际上字符型也是一种整数类型。
请注意提示中的说明,char类型实际上是整形的一种类型,char能自动转换成int也说明了这个问题。所以byte不能转换为char类型应该是符号问题。
至于项目重要,还是技术重要,不在讨论范围之内。

从技术上讲是这样的。李刚去讲C++比较合适,这样只从技术层面讲java,会抹掉java的灵魂。《Java编程思想》指出要从字符、布尔、数值、原始二进制数据的角度理解java对基本类型的设计意图。
byte是原始二进制数据,一个字节,8个位。byte不一定是整数,完全可能是一个浮点数的一部分。《Java编程思想》指出byte转成别的要根据事务,否则...... --------------------编程问答-------------------- 从技术上讲是这样的。李刚去讲C++比较合适,这样只从技术层面讲java,会抹掉java的灵魂。《Java编程思想》指出要从字符、布尔、数值、原始二进制数据的角度理解java对基本类型的设计意图。
byte是原始二进制数据,一个字节,8个位。byte不一定是整数,完全可能是一个浮点数的一部分。《Java编程思想》指出byte转成别的要根据事务,否则......
作为菜鸟,我会读到《Java编程思想》和《JVM虚拟机》的,谢谢
想问一下,Java的多维数组,最多能表示多少维呢? --------------------编程问答--------------------
引用 11 楼 shuaixianbohou 的回复:
从技术上讲是这样的。李刚去讲C++比较合适,这样只从技术层面讲java,会抹掉java的灵魂。《Java编程思想》指出要从字符、布尔、数值、原始二进制数据的角度理解java对基本类型的设计意图。
byte是原始二进制数据,一个字节,8个位。byte不一定是整数,完全可能是一个浮点数的一部分。《Java编程思想》指出byte转成别的要根据事务,否则......

作为菜鸟,我会读到《Java编程思想》和《JVM虚拟机》的,谢谢
想问一下,Java的多维数组,最多能表示多少维呢?
远超出内存大小。
byte[] bs = new byte[1000*1000*1000*100];

会抛出内存不足的异常。 --------------------编程问答-------------------- 远超出内存大小。
byte[] bs = new byte[1000*1000*1000*100];

会抛出内存不足的异常。
不好意思,最近刚工作,有点忙,这么长时间才回你的帖子。
我想问的是:能表示多少维的数组,而不是数组的最大空间。在C,C++中会根据硬件的不同而有不同表现。但是考虑到Java是跨平台的,这些应该是一定的。
比如常用的int类型可以表示多少维,255维?那么最小的byte呢?用那种方式可以计算得出呢? --------------------编程问答-------------------- byte 是有符号的   
char 是0-65535 的无符号整数 --------------------编程问答-------------------- Java中byte、short、char三种类型的优先级是相同的,相同优先级之间是不能进行自动转换的,只能将低类型自动转换为高类型 --------------------编程问答-------------------- 学习了。。。这个问题俺还没注意过呢 --------------------编程问答-------------------- 在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.
--------------------编程问答-------------------- btye只能是 127到-128,
char可就大了....不能自动转,
不过你手动可以转啊.

char[] ch = "abcde".toCharArray();
if (ch[0] >= 'a' && ch[0] <= 'z') {
ch[0] = (char) (ch[0] - 32);
}
相加减都可以的,但是不能超过byte.
--------------------编程问答-------------------- 不错不错
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,