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

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就有效就能输出字母了呢
最新回答
安静的河

2024-10-23 12:35:22

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不再是数字,而是字符串,懂?
清风未央

2024-10-23 09:25:39

65,66,67是ASCII码没错,但是它们是整形,如果要输出对应的字符,需要转型,如下
System.out.print((char)b1[i]+" ");

toString()方法是把对象转换成字符串,对基本类型不生效,因为它们不是对象。
孤独的王后

2024-10-23 10:10:49

byte,char 其实都可以看成int型,只是范围不同。toString()方法对基本数据类型并不适用。
byte[] b={65,66,67}; 就是直接赋值不是ascii码。
青春喂了作业

2024-10-23 13:17:29

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]);
}
}

}