【Java】意外と知らない「System.out.println」の正体
はじめに
みなさんどうも、おげんです。
Javaの学習を始めて、一番最初に出会う呪文といえば何でしょうか? おそらく、99%の人がこれだと答えるはずです。
System.out.println("Hello World");「画面に文字を出すためのおまじないだよ」と教わって、これまで何度も使ってきましたよね。私の以前の記事でも、当たり前のように登場していました。
でも、ふと立ち止まって考えてみると、「なんでこんなに長いの?」「点(.)で区切られているのは何?」と不思議に思ったことはありませんか?
Pythonなら print() だけで済むのに、Java君が頑なにこの長い名前を使い続けるのには、彼なりの深い理由があるんです。
今回は、いつもお世話になっている System.out.println の正体を、いっぽずつ紐解いていこうと思います。
これがわかると、Javaの「オブジェクト指向」という大きな壁を越えるヒントも見えてきますよ!
- System.out.printlnを「意味不明な長い呪文」だと思っている人
- Javaの生真面目な性格をちょっと覗いてみたい人
- print と println の違いをハッキリさせたい人
言葉を分解してみよう
この長い呪文は、実は3つのパーツに分かれています。
イメージとしては、「住所」を伝えているようなものです。
- System:Javaという「システム」の……
- out:「外側の世界(コンソール画面)」に向かって……
- println:1行(line)出力(print)してね!
つまり、Java君に対して「システムの、外側の画面に、1行分書き出して!」と、かなり具体的に場所と動作を指定しているんです。
住所が長いのは「生真面目」だから
Javaは非常にルールに厳しい言語です。
「どこに」「何を」をハッキリさせないと動いてくれません。
「おーい、プリントして!」と叫ぶ(Pythonスタイル)のではなく、「Javaシステム管理下にある標準出力ユニットを使って、プリントを実行してください」と丁寧に依頼する。
これがJava流の「お作法」なんですね。
「print」と「println」の違い
実は「画面に出す」という命令には、よく似た2種類があります。
違いはたった一つ、「最後に改行(Enterキー)を押すかどうか」です。
① println(プリント・ライン)
「print」+「ln (line)」の略です。
文字を表示したあと、Java君が自動で「カチッ」と改行してくれます。
System.out.println("こんにちは");
System.out.println("げんです");【実行結果】
こんにちは
げんです1行ずつ分かれて表示されるので、読みやすいですね!
② print(プリント)
こちらは「ln」がついていません。
文字を表示しても改行せず、次の文字をすぐ右隣に表示し続けます。
System.out.print("お");
System.out.print("げ");
System.out.print("ん");【実行結果】
おげんいつ使い分けるの?
- println:基本はこっち! ログを出したり、結果を1行ずつ見せたい時。
- print:for文などで「1 2 3 4 5」と横に並べて数字を出したい時や、入力フォームの横にメッセージを出したい時。
ちなみに私は最初、「ln」を「in(イン)」だと思っていました(笑)。
でもこれは「Line(ライン)」のL。 「1行(Line)書き終えたら、次の行へ行くよ!」という合図だと覚えると、もう迷いません!
カッコの中には何が入る?(引数のヒミツ)
カッコ ( ) の中に入れるデータのことを、専門用語で 「引数(ひきすう)」 と呼びます。
ここには、ダブルクォーテーションで囲った文字以外にも、実はいろいろなものを放り込むことができるんです。
引数に関して以前投稿していますので、まだの人はぜひ見てください。

① 計算結果をそのまま出せる
Java君は計算が得意なので、カッコの中で算数をさせると、その答えだけを画面に出してくれます。
System.out.println(10 + 20); // 30 と表示される② 変数の中身を確認できる
これが開発現場で一番使う方法です。
「今、変数の中に何が入ってるかな?」というのを、カンニングするように覗き見ることができます。
int protein = 25;
System.out.println(protein); // 25 と表示される③ 文字と変数を「ガッチャンコ」できる
+ 記号を使うと、文字と変数の値を繋げて表示できます。
int count = 10;
System.out.println("スクワットを" + count + "回やりました!");⚠️ 注意ポイント!
ここで、初心者が一番「あれ?」となりやすい、「数字」と「文字としての数字」の違いを見てみましょう。
Java君は、ダブルクォーテーション "" が付いているかどうかで、扱いをガラッと変えてしまいます。
以下の3つ、実行結果はどうなると思いますか?
// ① そのまま計算(数値)
System.out.println(10 + 20);
// ② ただの文字として表示(文字列)
System.out.println("10 + 20");
// ③ 文字と文字をガッチャンコ(文字列の連結)
System.out.println("10" + "20");【実行結果】
// ① 正しく計算された!
30
// ② 書いた通りに表示された
10 + 20
// ③ 「10」と「20」がくっついた!
1020 「1020」になっちゃう理由
③のパターンは、Java君が「あ、これは『10』っていう文字と『20』っていう文字を繋げるんだな」と判断した結果です。
プログラミングの世界では、「数字(計算できる)」と「文字(ただの形)」は全くの別物。
「計算したいのに、なぜか数字が横に並んじゃう!」という時は、この "" が悪さをしていることが多いんです。
まとめ:おまじないを卒業しよう!
今回は、Javaで一番最初に出会う呪文 System.out.println の正体について解説しました。
- System.out.printlnは「住所」を指定している(システムの、外側の画面に、1行出す)。
- printlnは「改行あり」、printは「改行なし」。
- カッコの中では計算もできるし、変数の中身も覗ける。
- 「数値の10」と「文字の”10″」は別物! ガッチャンコ(連結)に注意。
最初は「なんでこんなに長いの?」と面倒に感じたこの一行も、意味を知ってみると、Java君がどれだけ正確に、そして生真面目に私たちの命令を聞こうとしてくれているかが伝わってきませんか?
「おーい、いい感じに画面に出しといて!」という曖昧な指示ではなく、「この場所を使って、こういう形で出してね」と具体的に対話する。
これが、Javaという言語の面白さであり、プログラミングの本質でもあります。
これからは、コードを書くたびに「あ、今私はJavaシステムの外側にアクセスしてるんだな」なんて、少しだけエンジニアらしい視点を持って楽しんでみてください!
今回も最後まで読んでいただき、ありがとうございました。
いっぽずつ、一緒に進んでいきましょう!
