import java.io.*;
public class ch7_1
{
public static void main(String args[])throws IOException
{
char a ='A';
System.out.write(a);
System.out.write('\n');//这句为什么一定要加上啊?
}
}
public class ch7_1
{
public static void main(String args[])throws IOException
{
char a ='A';
System.out.write(a);
System.out.write('\n');//这句为什么一定要加上啊?
}
}
解决方案 »
- 请教如何删除多对多中间表的单条记录?
- url中用 like %林% 做为参数。出现了乱码问题。
- 如何检索自动产生的关键字?
- hibernate关于两次commit()的问题
- weblogic启动不起来,报空指针错误啊,大家帮看看啊
- 桌面突然多了几个".android"、".m2"、".myeclipse"文件夹,貌似是缓存文件夹,有什么办法删除或更改路径?
- 急问:Struts实现上传能用动态表单吗?
- 用java写一个发送email的程序,在发送email的时候, 不加发送者的地址,有没有办法?
- 关于打包里面的配置文件
- 关于package路径设置问题
- 向各位高手请教异常错误
- 弱弱的问下,java安装
System.out.println(a);
\n 回车(\u000a)
\t 水平制表符(\u0009)
\b 空格(\u0008)
\r 换行(\u000d)
\f 换页(\u000c)
\' 单引号(\u0027)
\" 双引号(\u0022)
\\ 反斜杠(\u005c)
.....
public void write(int b)
将指定的字节写入此流。如果字节为新行且启用了自动刷新,则调用 flush 方法。
public void write(byte[] buf,
int off,
int len)
将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流。如果启用自动刷新,则调用 flush 方法。 write方法的两种用法和说明都是差不多的,一开始我也同意11楼的观点,也觉得应该是这样的,但发现使用第二种方法不用输出回车也能在控制台输出,代码如下:
class test{
public static void main(String args[]){
String a="ABCD";
System.out.write(a.getBytes(),0,4);
}
}
不需要输出换行符,也能正常输出:ABCD
再者,即然觉得是因为“写入换行符或字节('\n') 且启用了自动刷新,则调用 flush 方法”(一开始认为使用System.out输出流java的默认机制是启用自动刷新的),所以我尝试用以下代码关闭自动刷新,同样按楼主的代码输出A和换行符,代码如下:
class test{
public static void main(String args[]){
char a='A';
rintStream pw=new PrintStream(System.out,false);
pw.write(a);
pw.write('\n');
}
}
理论上如果关闭了自动刷新机制,没有刷新输出缓冲区就不能输出写入字节的,却发现仍然可以输出A。
总之,发现write的第一种用法,只要后面调用比如它的第二种方法、print、println、输出换行符或字节'\n'、刷新缓冲流、关闭缓冲流中的任一一种方法都可以输出字节到控制台。
至于原因,可能涉及到比较底层的java实现机制或控制台输出显示机制,所以不甚了解而且write的第一种用法是很不实用的,所以如果是新手也没有必要去深究它,可以完全使用比较实用的print或者println方法来替代它
public void write(int b)
将指定的字节写入此流。如果字节为新行且启用了自动刷新,则调用 flush 方法。
public void write(byte[] buf,
int off,
int len)
将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流。如果启用自动刷新,则调用 flush 方法。 write方法的两种用法和说明都是差不多的,一开始我也同意11楼的观点,也觉得应该是这样的,但发现使用第二种方法不用输出回车也能在控制台输出,代码如下:
class test{
public static void main(String args[]){
String a="ABCD";
System.out.write(a.getBytes(),0,4);
}
}
不需要输出换行符,也能正常输出:ABCD
再者,即然觉得是因为“写入换行符或字节('\n') 且启用了自动刷新,则调用 flush 方法”(一开始认为使用System.out输出流java的默认机制是启用自动刷新的),所以我尝试用以下代码关闭自动刷新,同样按楼主的代码输出A和换行符,代码如下:
class test{
public static void main(String args[]){
char a='A';
rintStream pw=new PrintStream(System.out,false);
pw.write(a);
pw.write('\n');
}
}
理论上如果关闭了自动刷新机制,没有刷新输出缓冲区就不能输出写入字节的,却发现仍然可以输出A。
总之,发现write的第一种用法,只要后面调用比如它的第二种方法、print、println、输出换行符或字节'\n'、刷新缓冲流、关闭缓冲流中的任一一种方法都可以输出字节到控制台。
至于原因,可能涉及到比较底层的java实现机制或控制台输出显示机制,所以不甚了解 而且write的第一种用法是很不实用的,所以如果是新手也没有必要去深究它,可以完全使用比较实用的print或者println方法来替代它
强