[白奇仙ジャワ学習]第7週-ギフトバッグ
1.小包
クラスを区別するフォルダの概念
パッケージは、クラスを作成する唯一の識別子です.
Javaは、パッケージの最上位ディレクトリ(ルートディレクトリ)で実行する必要があることを約束しているため、パッケージにはコンパイルされません.
パッケージ名とフォルダ名は同じである必要があります.
パッケージ名はjavaで始まることはできません.
両者を結合してこそ、完全限定クラス名(FQCN)と呼ばれるクラスを完全に表すことができる.
1.2構築パッケージ
Javaは開発者が使用するための多くのパッケージとクラスを提供しています.
すなわち、Java APIに含まれる複数のクラスを含むパッケージ
構築されたパッケージのタイプは次のとおりです.
2.importキーワード
他のパッケージ名が見つからないクラスに使用します.
複数のクラスをパッケージにインポートする場合、importパッケージ名は*インポート可能
異なるパッケージに同じクラス名が存在し、両方のパッケージがインポートされているため、どのパッケージをロードしたクラスを特定できないため、コンパイルエラーが発生します.したがって、この場合はFQCNを用いて記述する.
ex)package com.mycompany;
import com.hankook.*;
import com.kumho.*;
public class Car{
SnowTire snowTire = new SnowTire();
BigWidthTire bigWidthTire = new BigWidthTire();
com.hankook.Tire hankookTire = new com.hankook.Tire();
com.kumho.Tire kumnhoTire = new com.kumho.Tire();
}
3.クラスパス
package com.mycompany;
import com.hankook.*;
import com.kumho.*;
public class Car{
SnowTire snowTire = new SnowTire();
BigWidthTire bigWidthTire = new BigWidthTire();
com.hankook.Tire hankookTire = new com.hankook.Tire();
com.kumho.Tire kumnhoTire = new com.kumho.Tire();
}
クラスのパスを検索します.
JVMがプログラムを実行するとき、クラスファイルを検索します.
つまり、JVMはCLASSSPATHのパスをチェックして、ライブラリクラスの場所を参照します.ただし、J 2 JDKバージョンからは、必要なクラスライブラリをjrelibextフォルダにコピーすれば、これらのライブラリは使用できますが、特別な場合がない限り設定されません.
classpathオプションはjavaコマンドとjavacコマンドで使用できます.
3.1クラスローダ
JVMのクラス・ローダは、実行時に$CLASSSPATH環境変数を呼び出して、このディレクトリで定義されたクラスをロードします.
クラス・ローダには、次の3種類があります.
BootStrap Class Loader
Extension Class Loader
System Class Loader
3.2 rt.jar
JREとJDKの間に違いがあります.
JREは、JDKにjavaプログラムを実行するプログラムのみが含まれている環境です.
したがって、JREはclassesです.zipファイルではクラスは検索されません.
rt.jarファイルを使用します.
rt.jarファイルにはclassesが含まれています.zipと同じクラスをすべて含み、アーカイブ形式とは異なる名前のみが使用されます.Java 1.2のリリースに伴い、classes.zipファイルがなくなりました.
逆に、JDKとJREは「rt.jar」ファイルを使用します.
classpathでrt.jarファイルを指定するかどうかはclassesを使用します.zipファイルと同じルールを使用すると、指定する必要はありません.
Reference
この問題について([白奇仙ジャワ学習]第7週-ギフトバッグ), 我々は、より多くの情報をここで見つけました https://velog.io/@cham/백기선님자바스터디-7주차-패키지テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol