把byte数组转化成字符串,为什么最后是字符啊,并没有(char)

把byte数组转化成字符串,为什么最后是字符啊,并没有(char)

1
package file;<br><br>public class zhuanhaun {<br>    public static void main(String[] args) {<br>        byte[] b={'2','2','4','6'};<br>        String s = new String(b);<br>        System.out.println(s);<br>    }<br>}<br>

把b这个字节数组转化成String类型,打印结果是2246;

1
package file;<br>/*<br> * 1.文件访问输入流<br> */<br>import java.io.FileInputStream;<br>import java.io.FileNotFoundException;<br>import java.io.IOException;<br><br>public class Stream1 {<br><br>    public static void main(String[] args) throws IOException {<br>        //创建一个FileInputStream对象<br>        try {<br>        FileInputStream fis =new FileInputStream("E:\\java\\hellow.txt\\Hellow.txt");<br>        byte[]b=new byte[1000];<br>        //从输入流中读取字节数据存储到字节数组b中<br>        fis.read(b,0,5);<br>        System.out.println(new String(b));<br>        }catch(FileNotFoundException e) {<br>                e.printStackTrace();<br>            }catch (IOException e) {<br>                e.printStackTrace();<br>           }<br>    }<br><br>}<br><br>

那么fis读出来的字节数据存储到了byte数组中,他们为什么就可以作为String类的构造函数的参数,打印出来是个字符转呢,两段代码的结果不一样啊。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2021-08-15 10:35:39

同学你好,1、在String类中,存在byte类型参数的构造方法的,如下所示:所以byte可以作为String类的构造函数的参数。

http://img1.sycdn.imooc.com//climg/61187a2f096fe17e06530141.jpg

2、将byte转换为字符串时,并不会输出字符(char),而是会字符串(String)。

祝学习愉快!

  • 提问者 慕先生6309556 #1
    1
    byte[] b={'2','2','4','6'};<br>String s = new String(b);<br>System.out.println(s)<br>

    他打印的结果是      2246,我知道他也是个字符串嘛,相当于

    1
    String s="2246";<br>System.out.println(s);<br>

    我不理解的是

    1
    byte[]b=new byte[1000];<br>        //从输入流中读取字节数据存储到字节数组b中<br>        fis.read(b,0,5);<br>        System.out.println(new String(b));<br>
    1
    fis.read(b,0,5);//他读出的数据存到b这个byte数组,存入的同样也是int类型的字符啊,打印出来的为什么直接可以变成char呢<br>

    2021-08-15 17:50:36
  • 提问者 慕先生6309556 #2

    http://img1.sycdn.imooc.com//climg/6118e40709e04b3206260781.jpg

    http://img1.sycdn.imooc.com//climg/6118e40709a8cf7a08750732.jpg

    既然fis()返回int类型,那最后的运行结果为什么会有c这玩意,不该是字符'c'对应的数值吗?
    2021-08-15 17:54:44
  • 好帮手慕小尤 回复 提问者 慕先生6309556 #3

    同学你好,1、在输入流中,数据都是用字节数据表示的,在底层会根据字节进行解析数据。

    2、read()返回的并不是字符(char)而是字节。如下所示:read(byte[] b, int off,int len)方法是从输入流中将最多len个字节的数据读入一个byte数组b中。方法返回读入数组b的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。

    http://img1.sycdn.imooc.com//climg/6118e9e309e032c109000496.jpg

    3、当我们通过new String()将byte数组转换为String类型输出数据时,在底层会将获取到字节转换为我们可以看得懂,也就是我们储存的数据。

    祝学习愉快!

    2021-08-15 18:30:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码