Java system.out.println() 方法

Mohammad Irfan 2023年1月30日 2021年10月2日
  1. 什麼是 System.out.println() 方法
  2. System.out.println() 是如何工作的
  3. toString()print() 方法中的作用
  4. 概括
Java system.out.println() 方法

本教程介紹了 System.out.println() 方法在 Java 中的工作原理,並列出了一些示例程式碼來理解該主題。

System.out.print() 是一種非常常用的列印到控制檯或標準輸出的方法。這種方法有時稱為列印線方法。除了列印到控制檯之外,println() 方法將游標移動到一個新行。

在本教程中,我們將嘗試瞭解此方法的內部工作原理。

什麼是 System.out.println() 方法

  • System.out.println() 可以分為三個部分。
  • Systemjava.lang 包的最後一個類,它在 JVM 啟動時自動初始化initializeSystemClass() 用於初始化它。
  • System 類包含 PrintStream 類的例項。這個例項變數被稱為 out。它使用修飾符 publicstaticfinal 定義。
class System
{
	public static final PrintStream out;
    //More Code Below
}

PrintStream 類包含 print()println() 方法。這些方法是過載的。

class PrintStream
{
    public void print(argument)
    {
        //implementation
    }
    public void println()
    {
        //implementation
    }
    //Overloaded print() and println() methods below
}

因此,System.out 為我們提供了 PrintStream 類的 out 例項變數。然後我們可以在這個例項變數上呼叫 print()println() 方法。

System.out.println() 是如何工作的

  • PrintStream 類包含多個過載的 print()println() 方法。它們在接受的引數型別上有所不同。
  • 所有這些的返回型別都是無效的。
  • 所有原始型別都存在過載方法。
  • 它還包含一個用於列印字串的過載方法和另一個用於物件的過載方法。

下面的程式碼演示了過載的 println() 方法的工作。

public class PrintDemo
{
	public static void main(String args[])
	{
		int i = 10;
		short s = 10;
		long l = 10;
		char c = 'A';
		char[] charArr = {'A', 'B', 'C'};
		boolean bool = true;
		double d = 10.0;
		float f = 10.0f;
		String str = "hello";
		Object o = new Object();
		
		System.out.println();//terminate the current line
		System.out.println(i);//print integer
		System.out.println(s);//print short
		System.out.println(l);//print long
		System.out.println(c);//print char
		System.out.println(charArr);//print char array
		System.out.println(bool);//print boolean
		System.out.println(d);//print double
		System.out.println(f);//print float
		System.out.println(str);//print String
		System.out.println(o);//print Object
	}
}

輸出:

10
10
10
A
ABC
true
10.0
10.0
hello
java.lang.Object@433c675d

傳遞給 println() 方法的引數

  • 初學者可能認為 print()println() 方法採用可變數量的引數 (varargs),但事實並非如此。
  • 例如,在下面的程式碼中,我們試圖列印一個整數、一個字串和一個字元。
public class PrintDemo
{
	public static void main(String args[])
	{
		int i = 10;
		String s = "hello";
		char c = 'O';
		System.out.println(i + s + c);
	}
}

輸出:

10helloO
  • 但我們沒有傳遞三個不同的引數。逗號分隔方法的引數。
  • 相反,它們使用 println() 方法中的 + 運算子連線在一起。
  • 與字串一起使用的 + 運算子將導致字串連線並返回一個字串。
  • 在上面的程式碼中,整數首先與字串連線,結果字串再次與 char 變數連線。

另一件需要注意的是,傳遞給方法的引數是從左到右計算的。因此,如果傳遞的前兩個變數是整數,則進行正常的算術加法,並將加法結果與字串連線起來。

public class PrintDemo
{
	public static void main(String args[])
	{
		System.out.println(10 + 10 + "hello");//first integer addition and then string concatenation
	}
}

輸出:

20hello

但是如果字串後面還有兩個整數,就會發生字串連線。

public class PrintDemo
{
	public static void main(String args[])
	{
		System.out.println(10 + 10 + "hello" + 1 + 1);//20hello11 not 20hello2
	}
}

輸出:

20hello11

我們可以從左到右應用下面顯示的規則來計算輸出。如果不存在字串,則進行正常的算術加法。

(any data type + string) = (string + any data type) = (concatenated string)

toString()print() 方法中的作用

print()println() 方法隱式呼叫引數的 toString() 方法。它將引數轉換為字串。如果我們想以特定方式列印使用者定義的類例項,這非常有用。

我們可以覆蓋我們類中的 toString() 方法,以不同的格式列印我們的物件。以下示例演示了這一點。

示例:不覆蓋 toString() 方法。

class Demo
{
	String field1;
	String field2;
	
	Demo(String f1, String f2)
	{
		this.field1 = f1;
		this.field2 = f2;
	}
}
public class PrintDemo
{
	public static void main(String args[])
	{
		Demo d = new Demo("f1", "f2");
		System.out.print(d);
	}
}

輸出:

Demo@433c675d

示例:在重寫 toString() 方法之後。

class Demo
{
	String field1;
	String field2;
	Demo(String f1, String f2)
	{
		this.field1 = f1;
		this.field2 = f2;
	}
	@Override
	public String toString()
	{
		return field1 + " " + field2;	
	}
}
public class PrintDemo
{
	public static void main(String args[])
	{
		Demo d = new Demo("f1", "f2");
		System.out.print(d);
	}
}

輸出:

f1 f2

概括

print()println() 方法是 PrintStream 類的一部分。它們是通過使用 System.out 例項變數訪問的。這些方法被過載以處理不同的引數型別。請記住,這些方法不接受可變數量的引數。在本教程中,我們學習了 System.out.print()System.out.println() 方法的工作原理。

相關文章 - Java Print