tawa19
@tawa19

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[Java] system.out.printlnを深く理解する場合のoutの意味

Q&A

Closed

解決したいこと

system.out.printlnのoutの意味について調べています。


ここまでの解釈

Javaにおいて.(ドット)は属しているという意味で解釈できます。
なのでsystemクラスの中にあるoutフィールドで、そのoutフィールドの中にあるprintlnメソッドという説明ができます。
さらにoutフィールドはPrintStreamクラスであり、printlnメソッドも同様にPrintStreamクラスに属しています。(こんがらがってきました💦)


それぞれの要素の訳し方

現状のそれぞれの訳し方です。
・system
(java.langで用意された)入出力機能

・out
情報を保存領域に出力する ←間違っているらしい

・println
引数をコンソールに出力し文末を改行する


知りたいこと

  1. outとPrintStreamの関係 →さらにoutとprintlnの関係の説明にも繋がるらしい
  2. 上記のように訳していったとき、outはどのように訳すことができるか
  3. outはあくまで「出力」という意味がついて回ると思うが、この場合「どこに何を」出力しているのか(コンソールへの出力はprintlnメソッドが担っているから違うはず)

※outが標準出力とかではなく、あくまでprintlnとセットでどのような関係性・訳し方になるか知りたいです。

どれか1つでも良いのでご教授頂けると幸いです。


参考にしたもの
(https://ytetsuwo.hatenadiary.org/entry/20110816)
(https://qiita.com/pale2f/items/5d19adc954c3572ff5cb)

0

3Answer

さらにoutフィールドはPrintStreamクラスであり、printlnメソッドも同様にPrintStreamクラスに属しています。(こんがらがってきました💦)

少々この辺に解釈の齟齬があるように思います.参考先にも記述があるようにSystem.outフィールドはPrintStreamインスタンスと解釈するべきです.
この辺の話はクラスとインスタンスについて学習するまでは分かりにくい概念になりますので,ひとまずおいといて学習を進めることを推奨します.

「ターミナルみ出力」はprintlnメソッドの役割だと思い、それだと役割が重複してしまう気がします。

ざっくり言うならばあくまで出力先を提供しているのがSystem.outという解釈ですね.
printlnメソッドは(改行付きで)出力する動作が定義されているメソッドです.

2Like

Comments

  1. @tawa19

    Questioner

    インスタンスについての理解が必要になるということですね。ご指摘ありがとうございます。

outが標準出力とかではなく、あくまでprintlnとセットでどのような関係性・訳し方になるか知りたいです。

outは標準出力を意味します。stdoutがその起源です。もう一つ、標準エラー出力を示す stderr もあります。どちらも、標準では、コマンド(プログラム)を起動したターミナルになります。stdoutもstderrも出力専用で、標準入力はstdinです。

ターミナル以外に出力したい場合は、コマンド起動時にリダイレクトするか、プログラムで出力先を切り替える必要があります。

こういう答えでよろしいでしょうか?
不明点があれば、追加で質問してください。

1Like

Comments

  1. @tawa19

    Questioner

    ご回答いただきありがとうございます。

    ではoutは「ターミナルみ出力」という解釈でよろしいでしょうか?
    「ターミナルみ出力」はprintlnメソッドの役割だと思い、それだと役割が重複してしまう気がします。(ターミナルとコンソールを同じものだと考えております。その解釈が間違っていたらすみません。)

  2. ではoutは「ターミナルみ出力」という解釈でよろしいでしょうか?

    合っていると思います。

    「ターミナルみ出力」はprintlnメソッドの役割だと思い、それだと役割が重複してしまう気がします

    そうとは、言い切れないと思います。
    System.out.print()は、改行無しで標準出力に出力します。
    System.out.println()は、改行付きで標準出力に出力します。
    別なファイルをPrintStreamに割り当てているなら、stream.print()は、そのファイルに出力します。

    print()println()が出力を意味して、出力先がouterr、その他のprintStreamだと言えます。

System(システムで定義している).out(アウトプット先に).println(引数を出力し文末を改行する)ですかねー。
「システムで定義しているアウトプット先」がコンソールなのでコンソールになっています。
println自体にアウトプット先の定義がないことに注意してください。

デフォルトだとPrintStreamにコンソールが割り当てられているので、コンソール出力になっているって言い方のほうが幾分正確かもです。

1Like

Comments

  1. @tawa19

    Questioner

    printlnがコンソールを指定しているわけではなく、PrintStream(system)が指定した出力先がコンソールなのですね。
    その情報がsystem→out→printlnと渡されているという風に解釈しました。
    ご指摘ありがとうございます。

Your answer might help someone💌