System.in.read()和System.out.write()和println()的问题。

如下测试代码:
package javaio;


import java.io.IOException;
import java.io.InputStream;

/**
 * Created by IntelliJ IDEA.
 * User: MJ
 * Date: 11-10-26
 * Time: 上午11:48
 * To change this template use File | Settings | File Templates.
 */
public class InputStreamTest {
    public static void main(String[]ags){
        try{
            InputStream in=System.in;
            int indata=in.read();
            System.out.write(indata);//(i)
            System.out.println();
            System.out.println(indata);//(ii)
            byte[] hello = {53};
            System.out.write(hello);(iii)
            //System.out.write((byte )indata);
            /*OutputStream outputStream=System.out;
            outputStream.write(indata);*/
        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

    }
}



运行时 输入5,回车,其结果如下:
5
5
53
5
(i)输入5时,被读到内存后,indata的值为53,因为5的ASCII码是53,所以WRITE写出的时候,把53转换成对应的字符。
(ii)当使用println(indata)时,先对indata调用Strint.valueOf(int),即等到字符串53,然后调用WRITE(byte)把字符串写到控制台。所以结果就是53.
(iii)调用write(byte[])时,第一个元素的值就是53,所以在写到控制台时,转换成ASCII码为53的5.
注:
a、控制台显示的都是经过platform's default character encoding 的值,如果没有改过平台字符编码的方式的话。
b、读到内存里的是字节码。

你可能感兴趣的:(java)