簡體   English   中英

Java String的奇怪行為

[英]Strange behavior of Java String

我遇到了這個程序,它沒有按照預期的方式運行。

public class StringTest
{
      public static void main(String[] args)
      {
           String s = "Hello world";
           for(int i = 0 ; i < s.length() ; i++)
           {
                System.out.write(s.charAt(i));
           }
      }
}  

如果我們認為它應該打印Hello world但它什么都不打印。 到底是怎么回事? 有任何想法嗎? 提前致謝。

你想要: System.out.print(s.charAt(i));

根據writeAPI

注意,字節寫為給定; 要編寫將根據平台的默認字符編碼進行翻譯的字符,請使用print(char)或println(char)方法。

如您對問題的評論中所述,如果您真的希望使用write() ,則需要flush()


write(int)不打印任何內容的原因是因為它只刷新\\nautoFlush為true時的流。

public void write(int b) {
    try {
        synchronized (this) {
        ensureOpen();
        out.write(b);
        if ((b == '\n') && autoFlush)
            out.flush();
        }
    }
    catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    }
    catch (IOException x) {
        trouble = true;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM