黑马程序员技术交流社区

标题: 一个小问题 [打印本页]

作者: 杜佳瑞    时间: 2012-8-10 22:02
标题: 一个小问题
在第21天视频最后一小节的练习中有这么一个问题,就是写入总成绩时候开始有个小问题,后来老师在成绩后面加上一个空串把数字转成了字符串,也就是这里面必须写入的是字符串吗?下面是改的小例子验证了一下,确实是这个问题,视频中老师也没解释一下为什么,有明白人帮个忙不
import java.io.*;
class Demo
{
        public static void main(String[] args) throws Exception
        {
                FileWriter w=new FileWriter("a.txt");
                w.write("abc");
                w.write(32);//32+"",就Ok               
                               w.close();
        }
}

作者: 朱烈葵    时间: 2012-8-10 22:12
因为writer类没提供写入int类型的方法,所以要转换下成String类型,要想直接写入int类型,有专门的类。
作者: 杜佳瑞    时间: 2012-8-10 22:23
朱烈葵 发表于 2012-8-10 22:12
因为writer类没提供写入int类型的方法,所以要转换下成String类型,要想直接写入int类型,有专门的类。 ...


API有这个方法,我知道这是字符型的向上转型了,难道这不能传整形吗
作者: 朱烈葵    时间: 2012-8-10 22:38
杜佳瑞 发表于 2012-8-10 22:23
API有这个方法,我知道这是字符型的向上转型了,难道这不能传整形吗

这是字符啊,不是int啊
作者: 杜佳瑞    时间: 2012-8-10 22:40
朱烈葵 发表于 2012-8-10 22:38
这是字符啊,不是int啊

喔好吧谢谢
作者: 于启会    时间: 2012-8-10 22:53
w.write(32);
这里的 32 代表的是字符对应的unicode码,这里采用低16位,我估计是采用unicode-16编码字符的,为了读写编码较长的语言字符,两个字节为一个字符。至于下面这种情况,就没必要,直接调用write(String)就好了。 注意,你如果这样调用write(3),是往里面写入unicode 3所代表的字符。要写入数字3,需要write("3"),所以通常FileWriter是把要写的内容专成String类型的。
如果,你硬是要用write(int),就要知道字符串中美个字符的unicode码,然后按字符串长度循环write(unicode码)。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2