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就有效就能输出字母了呢
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不再是数字,而是字符串,懂?
65,66,67是ASCII码没错,但是它们是整形,如果要输出对应的字符,需要转型,如下 System.out.print((char)b1[i]+" "); toString()方法是把对象转换成字符串,对基本类型不生效,因为它们不是对象。
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]); } }}