在System.out.write()语句中使用char和int

时间:2014-08-11 18:50:35

标签: java system.out

我想为以下计划提出两个问题

class WriteDemo{
    public static void main(String args[]){

    int b;

    b = 'x';

    System.out.write(b);
    System.out.write('\n');
   }
}
  1. 我们如何将字符'x'用于变量b,它是一个整数?
  2. 屏幕上显示的程序结果为x。如果我删除最后一行System.out.write('\n');,屏幕上不会显示任何内容 为什么会这样?

2 个答案:

答案 0 :(得分:3)

按相反顺序,

  

屏幕上显示的程序结果为x。如果我删除最后一行System.out.write('\ n');屏幕上没有任何内容。   为什么会这样?

因为'\ n'刷新输出缓冲区。你也可以用,

System.out.write(b);
System.out.flush();

你的第一个问题,

  

我们如何将变量b的字符'x'用作整数?

JLS-5.1.2提供了扩大 -

  

对原始类型的19个特定转换称为扩展原语转换:

     

...

     

charintlongfloatdouble

答案 1 :(得分:3)

当你跑

System.out.write(b);

您实际上是在PrintStream类中调用此方法

/**
 * Writes the specified byte to this stream.  If the byte is a newline and
 * automatic flushing is enabled then the <code>flush</code> method will be
 * invoked.
 *
 * <p> Note that the byte is written as given; to write a character that
 * will be translated according to the platform's default character
 * encoding, use the <code>print(char)</code> or <code>println(char)</code>
 * methods.
 *
 * @param  b  The byte to be written
 * @see #print(char)
 * @see #println(char)
 */
public void write(int b) {(...)

因此,如果您明确刷新打印机(或打印换行符,如javadoc中所述),您将看到&#34; x&#34;

    System.out.write(b);
    System.out.flush();

关于使用&#39; x&#39;作为整数,我假设您正在讨论x代表的int数字以及如何打印它。

请注意,如果你这样做

System.out.println(b);

它会显示120因为println最终会调用String.valueOf(b)