第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java printf() 和 println() 的區(qū)別是什么?

Java printf() 和 println() 的區(qū)別是什么?

開滿天機(jī) 2019-03-14 14:15:30
1.在學(xué)習(xí)Java7 concurrency cookbook 的第一章節(jié)時(shí),發(fā)現(xiàn)《Interrupting a thread》這個(gè)部分的代碼沒有達(dá)到預(yù)期的效果:控制臺(tái)并沒有像書上所描述的那樣輸出內(nèi)容。再把其使用的printf()函數(shù)換成println()之后;程序得到預(yù)期的效果。2.代碼如下:package lee.twowater.java7.chapterThree;public class PrimeGenerator extends Thread {    @Override    public void run() {        long number = 1L;        while (true) {            if (isPrime(number)) {                System.out.printf("Number "+ number +" is Prime");            }                        if (isInterrupted()) {                System.out.printf("The Prime Generator has been Interrupted");                return;            }            number++;        }    }        private boolean isPrime(long number) {        if (number <= 2) {            return true;        }        for (long i = 2; i < number; i++) {            if ((number % i) == 0) {                return false;            }        }        return true;    }}    package lee.twowater.java7.chapterThree;public class Main {    public static void main(String[] args) {        Thread task = new PrimeGenerator();        task.start();                try {            Thread.sleep(5000);        } catch (InterruptedException e) {            e.printStackTrace();        }                task.interrupt();    }}3.我猜想println()和printf()除了換行和格式化的差異之外,是不是在緩存方面還存在差異?
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊

貌似跟緩存沒啥關(guān)系,println的源碼是這樣的:


public void println(String x) {

        synchronized (this) {

            print(x);

            newLine();

        }

    }

然后是printf的源碼:


    public PrintStream printf(String format, Object ... args) {

        return format(format, args);

    }

在format里面就是單純的格式化操作沒啥了


    public PrintStream format(String format, Object ... args) {

        try {

            synchronized (this) {

                ensureOpen();

                if ((formatter == null)

                    || (formatter.locale() != Locale.getDefault()))

                    formatter = new Formatter((Appendable) this);

                formatter.format(Locale.getDefault(), format, args);

            }

        } catch (InterruptedIOException x) {

            Thread.currentThread().interrupt();

        } catch (IOException x) {

            trouble = true;

        }

        return this;

    }

至于你的那個(gè)問題你可以把代碼里打印輸出的那一句改為:


                System.out.printf("Number is Prime: %d", number);

                System.out.print("\r");

就可以了


查看完整回答
反對(duì) 回復(fù) 2019-04-25
?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

Integer number = 55;

System.out.printf("Number " + number + " is Prime\n");

System.out.printf("Number %s is Prime", number);

換行是一個(gè)區(qū)別,但是最主要的區(qū)別是printf可以格式化表達(dá)式,具體格式語(yǔ)法可參考java.util.Formatter


查看完整回答
反對(duì) 回復(fù) 2019-04-25
  • 3 回答
  • 0 關(guān)注
  • 645 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)