A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fyg408224345 中级黑马   /  2015-6-18 20:51  /  766 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

不多说,直接上代码:
public static void main(String[] args) {
                byte[] bytes = {41,6,75,3,56,6,22,1};
                String str = new String(bytes);
                System.out.println(str);
}

执行完结果是这样的:


我想问一下为什么出现这个啊?什么问题?我是用eclipse运行的

14 个回复

倒序浏览
涉及到编码问题!你byte数组中的数值是你自己随意写的吧?这些字节在转换字符时,编码表无法识别导致的!
回复 使用道具 举报
qq10763582 发表于 2015-6-18 20:55
涉及到编码问题!你byte数组中的数值是你自己随意写的吧?这些字节在转换字符时,编码表无法识别导致的! ...

好吧, 我改一改试试看。谢谢哦
回复 使用道具 举报
fyg408224345 发表于 2015-6-18 21:00
好吧, 我改一改试试看。谢谢哦

刚改了,全部换成10以内的数了,还是不行啊
回复 使用道具 举报
你把数组中的元素  想直接用string输出?你要想打印输出数组的内的 还不如直接在输出语句里直接写 bytes[ 角标 ]呢,要不就用 charArray方法   然后在输出string字符串
回复 使用道具 举报
繁华落幕 发表于 2015-6-18 21:24
你把数组中的元素  想直接用string输出?你要想打印输出数组的内的 还不如直接在输出语句里直接写 bytes[ 角 ...

不是,我是练习String类的构造方法。所以才那样写的
回复 使用道具 举报
fyg408224345 发表于 2015-6-18 21:30
不是,我是练习String类的构造方法。所以才那样写的

但是  你写了构造方法   你不还得写个方法把这个调用出来么  哪有直接把数组用string打印输出来的  你可以找找api string那部分  
回复 使用道具 举报
编码有问题
回复 使用道具 举报
编码有问题
回复 使用道具 举报
xtf 中级黑马 2015-6-18 21:55:54
10#
并不是乱码,你把byte[] bytes = {41,6,75,3,56,6,22,1};改为byte[] bytes = { 97, 100, 102, 101 };试试。你的byte数组里面的数转化成字符后都是未知码。
回复 使用道具 举报
我只是路过
回复 使用道具 举报
xtf 中级黑马 2015-6-18 22:13:57
12#
fyg408224345 发表于 2015-6-18 21:03
刚改了,全部换成10以内的数了,还是不行啊

byte数要大于32编码才没有问题  你输入大于32的数字试试
回复 使用道具 举报
xtf 中级黑马 2015-6-18 22:15:22
13#
fyg408224345 发表于 2015-6-18 21:03
刚改了,全部换成10以内的数了,还是不行啊

byte数要大于32编码才没有问题  你输入大于32的数字试试
回复 使用道具 举报
查查ascii码表你就懂了。
回复 使用道具 举报
xtf 发表于 2015-6-18 21:55
并不是乱码,你把byte[] bytes = {41,6,75,3,56,6,22,1};改为byte[] bytes = { 97, 100, 102, 101 };试试。 ...

好了,重新换了数字试了一下。行了。谢谢啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马