首页编程java编程java中什么是标准输入输出,java中的标准输入

java中什么是标准输入输出,java中的标准输入

编程之家 2023-10-12 81次浏览

大家好,今天小编来为大家解答java中什么是标准输入输出这个问题,java中的标准输入很多人还不知道,现在让我们一起来看看吧!

java中什么是标准输入输出,java中的标准输入

java 中的输入输出流问题

其实问题很简单,

首先,你要弄清楚”字符“和”字节“的关系。在java中一个字符是用两个字节表示的。

再看你的ch=fr.read();这是从你的文件中读出的一个字节。

java中什么是标准输入输出,java中的标准输入

System.out.printf(...);方法是向标准输出流打印一个格式后的字符串,就像C语言的printf函数一样吧ch格式化为一个字符,但是问题出现了java中一个字符是两个字节组成的,而ch只有一个字节有效(int是4个字节的,但是只用了1个字节),这里就存在一个转换的问题了,如过ch是一个英文的话很好说,原样输出(如果你要了解为什么是原样输出的话,你可以在网上去查查ascii编码和unicode编码在字节上的区别,其实很简单)。但是如果是中文的话就不行了,因为中文要用到两个字节才能表示完整的一个字。你现在只有一个字节了,这样%c就不知道格式化为什么字符了(但是肯定这个字符变成了2个字节的。)这样1个汉字就被分解成两个乱码了。方法可以把这个乱码输出到输出流上。

System.out.print((char)ch);和上面是一个意思,只是方法不一样。

System.out.write(ch);是向标准输出流输出一个字节。这又有一个难以理解的地方,标准输出流是什么?怎样理解这个标准输出流?(我也不知道怎么很好的解释),标准输出流可以认为是一个字节输出的通道,java中一般这个通道默认是连接在电脑的显示设备上的。(我不专业)你可以把System.out看成是一个容器,他可以存储字节。你向它里面可以输入字节。如果你的标准输出流终端是控制台(DOS)。你就可以想象成控制台有一个字节存储的容器。控制台可以把容器中的字节表达出来,比如java的unicode编码的字节,他会把每连个字节组合成的一个字符打印出来我们就可以看到这个字符了。这样要显示什么就直接向这个容器中输入什么字节。

java中什么是标准输入输出,java中的标准输入

真实由于这种原因System.out.write(ch);这个方法可以像你那样输出汉字。一个汉字两个字节,这个方法一次可以向控制台输入一个字节,但是这两个字节最终都会输出到控制台的。因此汉字还是组成了。

上面那两个方法显示乱码的最终原因是:编码被强制改变了。一个汉字被分成了4个字节。

如果你对“把System.out看成是一个容器”有疑惑的话,你可以做一个实验,就用write方法向控制台输出一个汉字,这个汉字两个字节的输入中暂停一下,看看输出第一个字节后和两个字节都输出了控制台打印的是什么。(呵呵我没试过,如果有什么不一样的地方希望告诉我。。。)

java system.out.println 是标准输出吗

在Java编程中,我们常常用System.out.println()方法来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?

这里就涉及用到一个static关键字。如下图,其实System是java.lang里面的一个类。

而out就是System里面的一个数据成员(也称为字段),但这个成员不是基本类,而是java.io.PrintStream类的对象,java.io.PrintStream类有些什么方法等一下再说。我们先看看下面的截图,被关键字static修饰的数据成员或方法可以直接通过“类名.数据成员”或“类名.方法”来引用,而无须先建立对象。所以System.out是应用了out这个静态数据成员。

而out又是一个java.io.PrintStream类的对象,所以out必然可以调用java.io.PrintStream类里面的方法,println()就是java.io.PrintStream类里的一个方法,它的作用就是用来想控制台输出信息的。

java中的标准输入

1.System.in.read()从输入流读取下一个数据字节。返回 0到 255范围内的 int字节值所以即使你输入再多的东西,它只那第一个数据字节

你输入1111111111111111111111111111111111111,它拿到的就是1。1的字节值为48,所以你输出的就是 48+48=96

2.System.out的write是把指定的字节写入此流,字节。要根据平台输出,最好print或者println方法

public class U{

public static void main(String args[]) throws Exception{

int d;

d= System.in.read();//为什么输入111111111111111111111111111111都行,看起来d好像是个字符串

d= d+ d;//输入一个整数为什么这条语句不能执行

System.out.print(d);//为什么不管输入什么,d总是原样输出

}

}

JAVA的输入输出流是什么有几种

以下是个人理解。流可以分为字节流和字符流区别嘛,你去搞清楚字节和字符的区别就知道了。流,其实没必要认为太高深,字节流的输入流,就是InputStream,他有个read()方法,而且有很多重载read(byte[]b)什么的,就是把文件转换成字节,后一个方法就是把转换的字节放到一个byte数组中。例如你定义一个File file=new File("d:/test.txt");byte[]b=new byte[1024];FileInputStream fis=new FileInputStream(file);fis.read(b);fis.close();//b里现在就放的是从文件d:/test.txt读取的字节(当然这不太严谨,可能会有错误)//现在是输出流FileOutputStream fos=new FileOutputStream(new File("d:/target.txt"));//write方法这个是byte数组中的字节放到目的文件d:/target.txt中fos.write(b);fos.close();这个是很简单的写法,没考虑文件大小,出现数组越界千万别怪我,手敲代码很烦呢,可能有错误,自己慢慢体会,这个急不来

关于本次java中什么是标准输入输出和java中的标准输入的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

java daemon是什么意思,daemon在java线程中 是什么意思 许嵩的资料(许嵩的资料简介)