Java system.out.println()メソッド
このチュートリアルでは、System.out.println() メソッドが Java でどのように機能するかを紹介し、トピックを理解するためのサンプルコードをいくつか示します。
System.out.print() は、コンソールまたは標準出力に出力するために非常に頻繁に使用されるメソッドです。この方法は、出力行法と呼ばれることもあります。コンソールへの出力に加えて、println() メソッドはカーソルを新しい行に移動します。
このチュートリアルでは、このメソッドの内部動作を理解しようとします。
System.out.println() メソッドとは何ですか
System.out.println()は 3つの部分に分けることができます。システムはjava.langパッケージの最終クラスであり、JVM の起動時に自動的に初期化されます。initializeSystemClass()はそれを初期化するために使用されます。Systemクラスには、PrintStreamクラスのインスタンスが含まれています。このインスタンス変数はoutと呼ばれます。これは、修飾子public、static、およびfinalで定義されます。
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
- しかし、私たちは 3つの異なる議論を渡していません。メソッドの引数はコンマで区切ります。
- 代わりに、
println()メソッドの+演算子を使用して連結されます。 - 文字列で使用される
+演算子は、文字列の連結につながり、文字列を返します。 - 上記のコードでは、整数は最初に文字列と連結され、結果の文字列は再び char 変数と連結されます。
もう 1つの注意点は、メソッドに渡される引数が左から右に評価されることです。したがって、渡される最初の 2つの変数が整数の場合、通常の算術加算が行われ、加算の結果が文字列と連結されます。
public class PrintDemo {
public static void main(String args[]) {
System.out.println(10 + 10 + "hello"); // first integer addition and then string concatenation
}
}
出力:
20hello
ただし、文字列の後にさらに 2つの整数が存在する場合、文字列の連結が行われます。
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)
print() メソッドでの toString() の役割
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() メソッドがどのように機能するかを学びました。