web-dev-qa-db-ja.com

JavaのSystem.out.printlnの意味は何ですか?

これは、println名前空間のoutクラスの静的System関数ですか?

 namespace System {
 class out {
 static println ... 
} 

この名前をどのように解釈できますか?そして、この関数はJREのどこで定義されていますか? Java.lang.System/Java.lang.Object

58
prosseek

いいえ。実際、outSystemクラスの静的メンバー(.NETとは異なります)であり、PrintStreamのインスタンスです。 printlnは、PrintStreamクラスの通常の(オーバーロードされた)メソッドです。

http://download.Oracle.com/javase/6/docs/api/Java/lang/System.html#out を参照してください。

実際、out/err/inがクラスである場合、大文字(Out/Err/In)で名前が付けられます。 命名規則 (文法を無視)へ。

85
kennytm

Systemは、パブリック静的フィールドoutを持つクラスです。だからもっと

class System 
{
    public static PrintStream out;
}

class PrintStream
{
    public void println ...
}

PrintStreamクラスは実際にはJava.ioパッケージに含まれているため、これは少し単純化しすぎていますが、物の関係を示すには十分です。

48
cHao

次のリンクを確認してください:

http://download.Oracle.com/javase/1.5.0/docs/api/Java/lang/System.html

次のことがはっきりとわかります。

Systemは、Java.langパッケージのclassです。

outは、Systemクラスのstaticメンバーであり、Java.io.PrintStreamのインスタンスです。

printlnは、Java.io.PrintStreammethodです。このメソッドは、出力先(通常はコンソールまたはファイル)にメッセージを出力するためにオーバーロードされます。

26
YoK

System.out.println()

高レベルの理解

これを理解するには、Javaのいくつかの基本を思い出す必要があります。

  • javaのドット(。)演算子:Java内。 (ドット演算子)は、メソッドまたは変数を呼び出すためにのみ使用されます。したがって、メソッドまたは変数のいずれかであると言えます。
  • Javaのメソッド:メソッド名の後に常にメソッドの括弧が「()」であることがわかっているため、outはJavaのメソッドにはなれません。 つまり変数であり、println()はメソッドです
  • Javaのクラス名:クラス名は、Javaでは理想的には大文字で始まる必要がありますつまり、システムはクラスです

これで、Javaの基本的な知識が得られました。

  • システムはクラスです
  • outは変数です
  • println()はメソッドです

詳細を取得します:

出力変数:静的またはインスタンス?

  • クラス名を使用して呼び出されるため、Systemクラスの静的変数がわかります。

  • ただし、メソッドprintln()メソッドを呼び出すため、「out」は参照タイプPrintStreamのオブジェクトです。

systemクラスはJava.langパッケージに属します

class System {
  public static final PrintStream out;
  //...
}

prinstreamクラスはJava.ioパッケージに属します

class PrintStream{
public void println();
//...
}
26
VdeX

printlnprintは、 PrintStream クラスに属する2つのオーバーロードメソッドです。

それらにアクセスするには、このクラスのインスタンスが必要です。

タイプoutPrintStreamと呼ばれるstaticプロパティSystem クラスで作成されます。

したがって、上記のメソッドにアクセスするには、次のステートメントを使用します。

System.out.println("foo");
System.out.print("foo");
7
Omprakash.K
System.out.println("Hello World");
  1. System:標準をカプセル化するオブジェクトを含む標準クラスの名前 I/O システムのデバイス。

に含まれています パッケージ Java.langJava.langパッケージはデフォルトですべてのJavaプログラムにインポートされるため、 Java.langパッケージ Java AP​​Iでインポート宣言を必要としない唯一のパッケージです。

  1. outオブジェクトoutは出力ストリーム(コマンドウィンドウ)を表し、クラスの静的データメンバーです。 System

ここに注意してください System.out (System -Class&out--静的オブジェクト。つまり、単にクラス名で参照されるため、オブジェクトを作成する必要はありません)。

  1. printlnprintln()は 方法 テキスト文字列を引数として取り、それを標準出力に表示するoutオブジェクトの モニター画面上

注意
System-クラス
out -staticオブジェクト
println()-メソッド
関数(Java関数ではメソッドと呼ばれる)は常に次の形式を持っていることを忘れないでください 関数()

4

SystemJava.langパッケージのクラスです

outは、Java.ioパッケージのstaticクラスのPrintStreamオブジェクトです

println()は、PrintStreamクラスのメソッドです

2
being_j

SystemJava.langパッケージのクラス、outPrintStreamクラスのオブジェクトであり、staticクラスのオブジェクト、Systemクラス、print()およびprintln()は、PrintStreamクラスのインスタンスメソッドです。コンソールにソフト出力を提供します。

2
Dushyant

SystemJava.lang packageのクラスです。 outPrintStreamオブジェクトです。素敵な説明@ http://lazy-geeks.blogspot.in/2015/01/what-is-systemoutprintln.html

1
pavan
System.out.println();

System はクラスです

outSystemクラスの変数であり、staticであり、変数タイプは PrintStream です。

outクラスのSystem変数は次のとおりです。

public final static PrintStream out = null;

System here の実装を確認できます。

println()は、PrintStreamクラスのオーバーロードメソッドです。

PrintStreamには、次の3つのオーバーロードされた印刷メソッドが含まれます。

  1. print()
  2. println()
  3. printf()

ここでPrintStreamの実装 を見ることができます。

Systemクラスをインスタンス化することはできません。Objectの子クラスであり、Objectは、定義したクラスを含むすべてのクラスの親(スーパークラス)です。

Oracleのドキュメントには次のようなものがあります。

public final class System extends Object

Systemクラスには、いくつかの便利なクラスフィールドとメソッドが含まれています。インスタンス化することはできません。

Systemクラスによって提供される機能には、標準入力、標準出力、およびエラー出力ストリームがあります。外部で定義されたプロパティと環境変数へのアクセス。ファイルとライブラリをロードする手段。アレイの一部をすばやくコピーするためのユーティリティメソッド。

以来:JDK1.0

わからない場合は、 インスタンス化の意味、この質問を読んでください 。 C#の質問ですが、概念は同じです。

また、 インスタンスとオブジェクトの違いは何ですか?

わからない場合 オーバーロードの意味はこの質問を読んでください

1
Blasanka

Outはクラス(オブジェクト)のインスタンスではなく、Systemクラス名で呼び出されるため、outはクラスSystemに属する静的変数でなければなりません。 outは、メソッドprintln()を呼び出しているため、クラスのインスタンスでなければなりません。

// the System class belongs to Java.lang package
class System {
    public static final PrintStream out;
}
class PrintStream {
    public void println();
}
1
user1527047

質問を理解するのは非常に簡単ですが、答えるには、Javaネイティブコードをさらに掘り下げる必要があります。

  • Systemは静的クラスであり、インスタンス化できません
  • outは、Systemで定義された参照変数です。
  • println()は、標準出力に印刷するために使用される方法です。

簡単でわかりやすい説明 は、この1行の文自体から多くを学ぶことができるので、これについてはいつでも歓迎です!

1
Shyam

SystemJava.langパッケージの定義済みクラスです。

outstaticクラスのprintStreamメンバーであり、そのコンソールとの接続です。

Printlnprintstreamクラスのメソッドであり、staticではありません。

0
user3819423

SystemJava.langパッケージのクラスです。

outは、Systemクラスの静的データメンバーであり、PrintStreamクラスの参照変数です。

Println()は、PrintStreamクラスの通常の(オーバーロードされた)メソッドです。

0
mohd zeeshan

Systemに関するjavadocから、ドキュメントの内容は次のとおりです。

public final class System
extends Object

The System class contains several useful class fields and methods. It cannot be instantiated.
Among the facilities provided by the System class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array.

Since:
JDK1.0

System.outについて

public static final PrintStream out

The "standard" output stream class Prinstream  belongs to Java.io package. This stream is already open and ready to accept output data. 
When the JVM is initialized, the method initializeSystemClass() is called that does exactly what it’s name says – it initializes the System class and sets the out variable. The initializeSystemClass() method actually calls another method to set the out variable – this method is called setOut().
Typically this stream corresponds to display output or another output destination specified by the Host environment or user.

Println()について

class PrintStream{
public void println();
}

単純なスタンドアロンJavaアプリケーションの場合、出力データの行を書き込む一般的な方法は次のとおりです。

System.out.println(data);
0

JavaコードのSystem.out.println( "...")はJVMに変換されます。 JVMを調べると、内部で何が起こっているのかをよりよく理解できました。

本から Java仮想マシンからのプログラミング 。このコードは https://github.com/ymasory/programming-for-the-jvm/blob/master/examples/HelloWorld.j からコピーされます。

これはJVMソースコードです。

.class public HelloWorld
.super Java/lang/Object

.method public static main([Ljava/lang/String;)V
.limit stack 2
.limit locals 1
  getstatic Java/lang/System/out Ljava/io/PrintStream;
  ldc "Hello, world"
  invokevirtual Java/io/PrintStream/println
    (Ljava/lang/String;)V
  return

.end method
.end class

「JVMはメモリへのバイトレベルのアクセスを許可しない」ため、タイプLJava/io/PrintSteramoutオブジェクト。 getstatic JVMコマンドを使用してスタックに保存されます。次に、printlnという名前のインスタンスからJava/io/PrintStreamクラスのメソッドoutを呼び出す前に、引数がスタックにプッシュされます。メソッドのパラメーターは(LJava/lang/String;)で、出力タイプはvoid(V)です。

0
prosseek
System.out.println

Systemは、Java.langパッケージのクラスです。

outstaticクラスのSystemデータメンバーであり、PrintStreamクラスの変数を参照します。

0
kuldeep rawat

システムはJavaクラスです。

outは、インスタンスであり、PrintStreamの静的メンバーでもあります。

printlnは、PrintStreamのメソッドです。

0
Ravi Rupapara

System-本質的にfinalであるクラス。 public final class System{}Java.langパッケージに属する

out-static型の参照変数PrintStream

println()-staticクラスのPrintStream以外のメソッド。 PrintStreamJava.ioパッケージに属します。

それをよりよく理解するために訪問することができます: How System.out.println()Works In Java

0
Mantu