Javaブラウズ
Java Master Bookを読むとき、javaの基本的な内容を整理しました.
JAvaの特徴
オブジェクト向け
拡張性と再利用性
プラットフォームの独立性
JVMという仮想環境上で動作するため、オペレーティングシステムとは独立しています.
卓越した生態系
優れたライブラリとミドルウェア、良好なJavaエコシステム
JAvaの3つのバージョン PCまたはサーバ上で実行するアプリケーションに適用 Webサービス、サーバ間通信、メール送信を含むサーバに必要な機能 組み込みシステム用
Javaの2つの環境
->デバッグにJDKが必要な場合があります. Java実行順序 Javaソース コンパイラは にコンパイルされた.各オペレーティングシステムのJVM上で を実行する
JAva修飾子
アクセス制限
abstract
文字通り抽象クラスやメソッドの前に貼る
インスタンス化できず、継承および実装可能
abstractメソッドはabstractクラスにのみ存在します
static
クラスをインスタンス化せずにアクセス
final
フィールド:フィールド値の変更を禁止
方法:クロスカントリー禁止
≪クラス|Class|ldap≫:クラスの継承を禁止します
transient
クラスをシリアル化すると、シリアル化ターゲットから除外されます.不要なデータはシリアル化しないでください.
シーケンス化:インスタンス化されたJavaオブジェクトをバイト列に変換
volatile
マルチスレッド環境でのアクセスを禁止するフィールド
synchronized
このメソッドまたはブロックに対しては、一度に1つのスレッドしかアクセスできません.
命名規則
変数は名詞です.方法は動詞です
->フィールドでisXXXに同じ名前を付けないでください!!このメソッドの名前
Javaは静的言語です
すなわち、変数の宣言時にデータ型を決定する->コンパイル時に一貫性を決定する.
動的タイプ言語は、変数を宣言するときにデータ型を特定しない->実行時に一貫性を判断します.基本型:long、int、char、boolean、... リファレンス: タイプ、インスタンスを格納するポインタ
RAPPERクラスを使用したデータ型の各種機能
匿名クラスは名前のないクラスです
クラスの一次定義とインスタンス化
このとき一緒に宣言しなければならない関数は
なぜ equalsを使用するときにhashCodeを同時に使用するのですか? equalsメソッドは各値を検証するため,計算時間が長い.逆に、ハッシュ値は、ハッシュ値に変換されるプロセスと、ハッシュ値を比較するプロセスだけが、オブジェクトが同じかどうかをより迅速に判断することができる.
hash値で比較->hash値が同じ場合equalsを使用してより正確な比較
上記の手順は、HashMapおよびHashSetにも適用されます.
1.タイプは安全です.
enum自体はスキップされるので、タイプが一致しないパラメータはスキップされません.
2.public static finalを使用する場合、定数クラスの定数の値を変更すると、クラスの定数の値は変更されない場合があります.
ただし、変更した部分がコンパイルされず、使用クラスのみがコンパイルされている場合はredに変更されず、blueとして保持されます.
Enumはstatic finalと異なり,使用者のクラスは値を展開しないため,使用者のクラスも再コンパイルする必要はない.
JAvaの特徴
オブジェクト向け
拡張性と再利用性
プラットフォームの独立性
JVMという仮想環境上で動作するため、オペレーティングシステムとは独立しています.
卓越した生態系
優れたライブラリとミドルウェア、良好なJavaエコシステム
Java SE
: Standard Edition. 最も標準的です.Java EE
: Enterprise Edition. Java ME
: Micro Edition. Javaの2つの環境
JRE
: Java Runtime Environment. Javaファイル(JARまたはクラスファイル)の実行環境JDK
: Java Development Kit. Java開発環境.コンパイラとデバッガ、および実行を含む->デバッグにJDKが必要な場合があります.
(.java)
作成(.java)
->(.class)
クラスファイル(.class)
ファイルを解析し、JAva修飾子
アクセス制限
abstract
文字通り抽象クラスやメソッドの前に貼る
インスタンス化できず、継承および実装可能
abstractメソッドはabstractクラスにのみ存在します
static
クラスをインスタンス化せずにアクセス
final
フィールド:フィールド値の変更を禁止
方法:クロスカントリー禁止
≪クラス|Class|ldap≫:クラスの継承を禁止します
transient
クラスをシリアル化すると、シリアル化ターゲットから除外されます.不要なデータはシリアル化しないでください.
シーケンス化:インスタンス化されたJavaオブジェクトをバイト列に変換
volatile
マルチスレッド環境でのアクセスを禁止するフィールド
synchronized
このメソッドまたはブロックに対しては、一度に1つのスレッドしかアクセスできません.
変数は名詞です.方法は動詞です
->フィールドでisXXXに同じ名前を付けないでください!!このメソッドの名前
Javaは静的言語です
すなわち、変数の宣言時にデータ型を決定する->コンパイル時に一貫性を決定する.
動的タイプ言語は、変数を宣言するときにデータ型を特定しない->実行時に一貫性を判断します.
// 기본형
int i = 1;
// 참조형
String name = new String("hi");
String name = "hi";
エンベロープクラスRAPPERクラスを使用したデータ型の各種機能
Integer num1 = new Integer(1);
Integer num2 = Integer.valueOf(1); // 캐시된 객체 반환, -128~127은 캐싱되어 있음
int num = num2.intValue();
RAPPERクラスはnullを持つことができますが、デフォルトのタイプはnullを持つことはできません.Integer numInteger = null; // 가능
int numInt = null; // 불가능. 무조건 초기값은 0 -> 혼란 초래 할 수 있으니 Integer 쓰자
匿名クラス匿名クラスは名前のないクラスです
クラスの一次定義とインスタンス化
// TaskHandler 라는 인터페이스 구현하고 인스턴스화
TaskHandler taskHandler = new TaskHandler() {
public boolean handle(Task task) {
// 익명 함수 내용 구현,,,
}
}
equals
およびhashCode
equals
という関数を使用して、オブジェクトの値が同じかどうかを判断します.このときequals関数を上書きすることで,等価性をどの基準で処理するかを決定できる.このとき一緒に宣言しなければならない関数は
hashCode
です!hashCode関数は、オブジェクトの内容をハッシュ値に戻します.すなわち、オブジェクトが同じ値を有する場合、同じハッシュ値を有する.しかし、同じハッシュ値が同じ値を持つオブジェクトとは限らない!なぜ
hash値で比較->hash値が同じ場合equalsを使用してより正確な比較
上記の手順は、HashMapおよびHashSetにも適用されます.
class Point{
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Point other = (Point) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = primt * result + y;
return result;
}
// 자바 7부터 hash 메소드 사용 가능
@Override
public int hashCode() {
return Objects.hash(this.x, this.y);
}
}
なぜpublic static final
ではなくenum
を使うのですか?1.タイプは安全です.
enum自体はスキップされるので、タイプが一致しないパラメータはスキップされません.
2.public static finalを使用する場合、定数クラスの定数の値を変更すると、クラスの定数の値は変更されない場合があります.
// 상수 클래스 쪽의 정의
public static final String SELECTED_COLOR = "blue";
// 이용 클래스 쪽의 정의
public String coloe = SELECTED_COLOR;
上記の場合、SELECTED_COLOR = "red";
に変更されます.ただし、変更した部分がコンパイルされず、使用クラスのみがコンパイルされている場合はredに変更されず、blueとして保持されます.
Enumはstatic finalと異なり,使用者のクラスは値を展開しないため,使用者のクラスも再コンパイルする必要はない.
Reference
この問題について(Javaブラウズ), 我々は、より多くの情報をここで見つけました https://velog.io/@s2moon98/Java-톺아보기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol