プログラミング

【Java】なんでimportしなくても「System.out.println」が使えるのか

Javaはパッケージの概念が重要

Javaを学ぶと絶対に必要になってくる概念がパッケージという概念です。

例えば、配列を昇順にならべかえるsortメソッドを使いたい時は

import java.util.Arrays;

と記述しなければ、このメソッドを使うことができません。Javaには他にもたくさんのパッケージが用意されています。じゃあなぜSystemメソッドはimportしなくても使えるんでしょうか。

java.langパッケージ

importが不必要である秘密はこのjava.langパッケージにあります。このjava.langパッケージには文字列操作、データの変換、数値演算、スレッド処理といった基本的な機能ができるクラスが用意されています。

でも

import  java.lang.*

なんて書いたことないし、書いている人も見たことないですよね。

コンパイラが自動的にimportしてくれていた

f:id:hatorihatorihatorik:20180928232003j:plain

java.langパッケージはインポートを宣言せずともコンパイラが勝手にimportをしてくれているらしい。

Systemの他にも、String、StringBuffer、StringBuilder、Boolean、Byte、Integerなど様々なクラスがjava.langには用意されています。

他のクラスもimportを必ずしもしなくて良い

importはコードが長くなっちゃうからまとめているだけです。なので、コードの先頭でimportしなくても、コード中で必要になった時に明示的にクラスを呼び出せばしようすることができます。

importせず書く書き方もこちらで紹介されています。

参考:Java の import しなくても良い理由がイマイチ分かってなかった