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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaogui 中级黑马   /  2016-5-12 18:20  /  845 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileOutputStream fos = new FileOutputStream("yyy.txt");       
                fos.write(97);
                fos.write(98);
                fos.write(99);
                fos.write('我');
                fos.close();
通过这段代码,运行后再yyy.txt文件中出现abc后面还有一个是乱码,'我'这个字的字符出现了乱码。
这段代码运行时都经历了哪些转换,为什么出现乱码?

1 个回复

倒序浏览
正常的话,write()的参数应该是一个int类型的值,就像97,98,是对的
但是当传一个字符时,字符会自动类型提升为int类型,提升完之后在写入时只是将这个int型的最后一个字节写入了,而原来的字符是两个字节的,这相当于把起一个字节舍去,而最后这个字节标示的数字在码表中对应的是啥就不知道了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马