想必大家其實早就知道Java是如何實現(xiàn)輸出功能的了。沒錯,就是利用System.out.println()語句來實現(xiàn)的!接下來壹哥就給大家詳細解讀一下這個語句的作用及其含義。
System
我們先來看看System是個什么東東。
System是Java自帶的一個類,它代表著系統(tǒng)類。該類位于https://baike.baidu.com/item/java.lang/5179788?fromModule=lemma_inlink包中,很多有用的系統(tǒng)級別的屬性、控制方法都在該類里面。
System類的構(gòu)造方法是private(私有)修飾的,所以我們無法直接創(chuàng)建該類的對象,即無法實例化該類。關(guān)于這些對象的實例化,壹哥在后面講解面向?qū)ο髸r會再詳細講解,大家先不要著急哦。System內(nèi)部的成員變量和成員方法都是static的,我們可以很方便的直接進行調(diào)用。在System類里面,給我們提供了如下幾個核心功能:
●標準輸入輸出:如out、in、err;
●外部定義的屬性和環(huán)境變量的訪問:如getenv()、setenv()、getProperties()和setProperties();
●加載文件和類庫的方法:如load()和loadLibrary();
●快速拷貝數(shù)組的方法:arraycopy();
●jvm操作:如gc()、runFinalization()、exit();
●獲取時間方法:如System.nanoTime 和 System.currentTimeMillis。
2. out與err
out表示一種“標準”的輸出流,它是System類中的靜態(tài)成員,可以直接被我們調(diào)用,且這個成員變量是java.io.PrintStream類的引用。
另外還有一個與out功能類似的輸出流err。err表示“標準”的錯誤輸出流,此流可以打開并準備接受輸出的數(shù)據(jù)。一般err流用于顯示錯誤消息,或者用于顯示需要引起用戶特別注意的信息,在控制臺中會顯示紅色的文字。
其實out和err的用法完全一樣,功能也基本相同。out和err的唯一區(qū)別就是,out往往是帶緩存功能的,而err沒有緩存功能(默認設(shè)置,可以更改)。
3. print和println
print()和println()都是java.io.PrintStream類里的方法,它們的作用都是向控制臺輸出信息。兩者的基本作用完全一樣,只是print()方法不會產(chǎn)生換行,println()會產(chǎn)生換行,因為println是print line的縮寫,表示輸出并換行。
通過以上這3個API(應(yīng)用程序接口)的講解,我們可以總結(jié)出一個基本的規(guī)則:在Java中,被static關(guān)鍵字修飾的成員變量,可以直接通過"類名.成員名"的形式來引用,不用創(chuàng)建類的實例對象。所以我們可以直接調(diào)用System類里的靜態(tài)成員out,即System.out。又因為System.out是java.io.PrintStream類的實例引用,所以又可以通過 System.out.println(); 的形式來調(diào)用。
4. 基本案例
以下是關(guān)于標準輸出的代碼案例,大家對著練習(xí)一下即可,很簡單的哦。
public class Demo01 {
public static void main(String[] args) {
//輸出語句
//不換行輸出
System.out.print("Hello");
System.out.print(" World");
//換行輸出
System.out.println("你好");
System.out.println("一一哥");
//標準的錯誤輸出,控制臺會用紅色文字顯示
System.err.append("標準的錯誤輸出,哈哈哈");
}
復(fù)制代碼
}
格式化輸出
5.1 概念
有時候,計算機默認輸出的數(shù)據(jù)格式,并不一定能夠滿足我們的閱讀需求,比如有的人想要保留小數(shù)點后兩位,也有的人想要保留小數(shù)點后四位,大家的需求是個性化的,那么Java能不能針對特殊的需求,進行一些個性化的輸出呢?這是可以實現(xiàn)的!這就需要用到格式化輸出了!
利用格式化輸出功能,可以把數(shù)據(jù)顯示成我們期望的格式。我們可以使用System.out.printf()語句,并結(jié)合%與?這兩個占位符來實現(xiàn),printf()方法可以把后面的參數(shù)格式化成指定的格式。
5.2 占位符
Java為了實現(xiàn)格式化功能,給我們提供了多種占位符,可以把各種數(shù)據(jù)類型“格式化”成指定的字符串。常用的占位符有如下這些:
這里我們要注意,在輸出語句中,%表示占位符。如果連續(xù)使用兩個%%,應(yīng)該傳入兩個對應(yīng)的數(shù)字,否則會把后面的%字符給原文輸出。
如果我們想了解更詳細的格式化參數(shù),可以參考JDK文檔:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Formatter.html#syntax
5.3 案例
下面是設(shè)計的與本小節(jié)對應(yīng)的代碼案例,大家可以對照練習(xí)。
public class Demo01 {
public static void main(String[] args) {
//格式化輸出
//默認輸出格式
//double d = 88800000;
//System.out.println(d); // 8.88E7
double d = 3.1415926;
System.out.printf("%.2f\n", d); // 保留2位小數(shù)3.14
System.out.printf("%.4f\n", d); // 保留4位小數(shù)3.1416
//占位符與格式化
int n = 123456789;
//%08x,輸出16進制數(shù)據(jù),如果不足8位,用0補齊
System.out.printf("n=%d, hex=%08x", n, n); // 注意,兩個%占位符應(yīng)該傳入兩個數(shù)字
}
}
6.java輸出語句的原理
Java 的輸出語句是通過 Java 標準庫中的 System 類的標準輸出流完成的。該類提供了一些靜態(tài)方法來訪問標準輸入、輸出和錯誤流:
●System.out:標準輸出流,通常輸出到控制臺。
●System.in:標準輸入流,通常從鍵盤讀取輸入。
●System.err:標準錯誤流,通常輸出到控制臺,但被用于輸出錯誤和異常信息。
System.out 是一個 PrintStream 類型的對象,而 PrintStream 類提供了許多用于輸出不同類型數(shù)據(jù)的方法,例如 print()、println() 等。這些方法會將數(shù)據(jù)格式化為字符串并將其輸出到標準輸出流中。對于字符串和基本數(shù)據(jù)類型,print() 和 println() 方法會自動將它們轉(zhuǎn)換為字符串格式。
例如,以下代碼演示了如何使用 System.out.println() 輸出字符串和數(shù)字:
String name = "Alice";
int age = 30;
System.out.println("My name is " + name);
System.out.println("I am " + age + " years old.");
輸出:
至此,就把Java里的輸出語句給大家講解完畢了,這些內(nèi)容還是比較簡單的,大家把案例對照著練習(xí)一下吧。