java 中关于byte数组的赋初值问题

byte型数据赋值看到有两种情况了byte[]b={65,66,67};byte[]b={'a','b','c'};这两种都可以么,第一种是不是ascii码,那第二种呢,... byte型数据赋值看到有两种情况了byte[] b={65,66,67}; byte[] b={'a','b','c'};这两种都可以么,第一种是不是ascii码,那第二种呢,这个不是成了char型赋初值了
class StringMake
{
public static void main(String[] args)
{
byte[] b1={65,66,67,68,69,70};
byte[] b2={'a','b','c','d','e'};

for(int i=0;i<b1.length;i++)
{
System.out.print(b1[i]+" ");
System.out.print(b2[i]+" ");
}
}
}
这个程序结果659766986799681006910170
为什么不是输出AaBbCcDdEeF,System.out.print()不是应该自动调用 toString()方法,那就应该输出字母呀
楼上说toString()方法是把对象转换成字符串,对基本类型不生效,因为它们不是对象。
System.out.print((char)b1[i]+" "); 那这里不是char型么,这个不也是基本类型一种,为什么toString就有效就能输出字母了呢
展开
 我来答
嘉尔的爸爸
推荐于2017-11-22 · TA获得超过1820个赞
知道小有建树答主
回答量:1013
采纳率:0%
帮助的人:296万
展开全部
byte short int long
这几种类型都是java中的整数类型

你肯定对int比较了解,byte和int的区别是int是32位,byte是8位,表示的数字范围为:-128到+127
所以
第一个byte中元素都没超过范围,都以数字显示。第二个byte数组中的元素都是char类型,char类型是占16位的,一般转换为byte是由大到小,需要强制转换,但这些char并没有超出byte的范围,所以不用
在打印时会将char元素转换成对应的ascii码,具体你可以去查
toString的确是输出字母,但'a'是字符,不是字符串,两个完全不同的概念

字符串+primitive类型就是转换为字符型的最简单方法,例:
4+"" 将数字4转换为字符串4 现在的4不再是数字,而是字符串,懂?
静心说科技
2009-08-10 · 超过26用户采纳过TA的回答
知道答主
回答量:124
采纳率:0%
帮助的人:86.2万
展开全部
65,66,67是ASCII码没错,但是它们是整形,如果要输出对应的字符,需要转型,如下
System.out.print((char)b1[i]+" ");

toString()方法是把对象转换成字符串,对基本类型不生效,因为它们不是对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zskzhao
2009-08-10 · TA获得超过346个赞
知道小有建树答主
回答量:852
采纳率:0%
帮助的人:403万
展开全部
byte,char 其实都可以看成int型,只是范围不同。toString()方法对基本数据类型并不适用。
byte[] b={65,66,67}; 就是直接赋值不是ascii码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nzl5423
2012-07-05
知道答主
回答量:64
采纳率:0%
帮助的人:50.9万
展开全部
class Hello {
public static void main(String args[]) {
byte[] b1={65,66,67,68,69,70};
byte[] b2={'a','b','c','d','e','f'};

for(int i=0; i<b2.length ; i++){
System.out.print((char)b1[i]);
System.out.print((char)b2[i]);
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式