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

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

package file;

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

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

package file;
/*
* 1.文件访问输入流
*/
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Stream1 {

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

}

那么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
    byte[] b={'2','2','4','6'};
    String s = new String(b);
    System.out.println(s)

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

    String s="2246";
    System.out.println(s);

    我不理解的是

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

    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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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