Javaレビュー:クラス管理と一般的なツール
パッケージ
- プログラムファイルの最初の行に書き込みます
- Javaソースファイルで宣言できるパッケージは1つだけで
あり、宣言ステートメントはソースファイルの最初の命令としてのみ使用できます。 - インポートされたクラスは非公開クラスをインポートできますが、他のパッケージのデフォルトのアクセス許可を使用できないため、使用できません
package Testp;
import Testpackage.*;
public class C {
public static void main(String[] args) {
A a=new A();
B b=new B();
}
}//Testpackage.*只能导入
- このとき、2つのクラスABを同じ.classファイルに入れないでください。そうしないと、一方が非パブリッククラスである必要があり、非パブリッククラスはCなどで使用できません。
- 注意
.*是对于包来说的,当把AB分成两个class文件时就可以两个全部导入
- Javaコンパイラは、すべてのプログラムのパッケージjava.langを自動的にインポートします。
- 名前のないパッケージはインポートできません。*名前のないパッケージのクラスはインポートできません。
- 静的にインポートする場合、import aa 。;の場合、クラスのすべてのメンバーを静的を含めてインポートできます。importstaticaa.Aの場合、Aのすべての静的メンバーをインポートする場合、非静的はエラーを報告します。 、静的に変更されたすべてのメンバーをインポートできます
- クラスファイル(.java)は1つのパブリッククラスのみを持つことができます。パッケージに複数のパブリッククラスがある場合は、複数のクラスファイルを作成します。
ラッパークラス
-
バイト、ショート、整数、ロング、フロート、ダブル、
文字、ブール値 -
ラッパークラスの2種類のコンストラクター
包装器类名(基本类型值)
包装器类名(基本类型值的字符串)
- Characterクラスコンストラクターは、文字パラメーターのみにすることができます。
- ブールラッパーは、true / falseに対して大文字と小文字を区別しません
-
-
例:
float f=(new Double(100.2)).floatValue();
int i=(new Double("100.2").intValue());//XXXvalue():包装器类-基本类型
float f=Float.parseFloat("11.3f");
int d=Integer.parseInt("25");
//字符串-基本类型
Double d=Double.valueof("25.4");//Character包装器类没有这个方法
//字符串-包装器
//基本类型、包装器类型-字符串
String s1=Double.toString(3.14);//toString有静态方法也有实例方法
String s2=new Double(3.14).toString()
- パラメータを渡すとき、パラメータがラッパークラスの場合、基本型を直接渡すことはできません。現時点では、自動ボックス化とボックス化解除はサポートされていません。
- コンストラクターを使用して自動的にボックス化するには
- Double a = 1.2; // Double a = new Double(1.2);自動ボクシング
- double b = a; //自動開封
列挙する
- 列挙型列挙型名{列挙型定数リスト}
public class Ch_5_5_2 {
enum Season { 春季, 夏季, 秋季, 冬季; }
public static void main (String[] args) {
Season [] s= Season.values();
for (int i=0; i<s.length; i++)
{ switch(s[i]) {
case 春季: //case Season. 春季 编译错
System.out.println(“ 春困”); break;
case 夏季:
System.out.println(“ 夏打盹”); break;
case 秋季:
System.out.println(“ 秋乏”); break;
case 冬季:
System.out.println(“ 睡不够的冬三月”); break; }
}
}
}
アレイの高度なアプリケーション
- インポートするには
import java.util.Arrays;
- ソート方法とbinarySearchの前提は、配列を降順にすることはできず、順序を付けないことも昇順にすることもできるということです。
int i=Arrays.binarySearch(a1,3);
この要素の最初の出現のインデックスを返しますArrays.fill(c,4);
配列cを4で埋めます
文字列の高度なアプリケーション
-
StringBuilder:同期されていないスレッドは安全ではありませんが、より効率的に実行されます
-
StringBuffer
-
正規表現
-
-
定期的なマッチング手順:
Pattern p=Pattern.compile(reg1);//reg1为模式串正则表达式
Matcher m=p.matcher(str);//str是待匹配串
m.group();m.find;m.start()
String[ ] split(String regex)
regexは区切り文字列であるか、正規表現にすることができます。
機能:文字列を分割して配列を生成します。
String s="aa,bb,cc,dd";
String[] sa=s.split(","); //以 , 作为s的分隔串,提取字符串
for(String s1:sa)
System.out.println(s1);
String replaceFirst(String regex, String rp)
機能:正規表現の最初の出現をrpに置き換えますString replaceAll(String regex, String rp)
役割:正規表現をrpに置き換えます
乱数クラス
//要导入java.util.Random
Random r=new Random();
int x,i;
for(i=1;i<=10;i++){
x=r.nextInt(10)+1;//默认从0开始,要获取从1-10的就要+1
System.out.println(x);
}
オブジェクト指向プログラミング
オブジェクトとオブジェクト参照のメモリ管理
- スタック(自動管理メカニズム)
- スタックスペース内のデータはシステムによって自動的に管理されます。つまり、データスペースは関数が呼び出されると自動的に作成され、データスペースは関数の実行時に自動的に解放されます。
- 基本型か参照型かに関係なく、関数で定義されたすべての変数はスタックスペースに格納されます
- ヒープ(手動管理メカニズム)
- オンデマンドの割り当てまたはリリースを実現する
- すべてのオブジェクトはヒープスペースに格納されます
- コンストラクタ
- クラスと同じ名前で、戻り値の型を定義する必要はなく、returnステートメントもありません。戻り値がなくても、voidで宣言することはできません。
- newを使用してオブジェクトをインスタンス化する場合、システム
は指定されたパラメーターリストに従って対応するコンストラクターを呼び出します。これはコンストラクターのオーバーロードです
- 構造コードブロック
- 役割:すべてのオブジェクトの統一された初期化
- 特徴:
对象一建立就执行并且优于构造函数执行
class Person {
private String name;
private int age;
{ age=15; }//构造代码块
Person() {
System.out.println("A:name="+name+",age="+age);}
Person(String n) {
name=n;
System.out.println("B:name="+name+",age="+age);
}
}
オブジェクトの破壊
- コンスタントファイナル
- 定数参照は変更できません。つまり、変更できないオブジェクトを指しますが、ポイントされたオブジェクトの内容は変更できます。
- 文字列または配列の場合、参照はヒープ内にあり、最終データを指している必要があることに注意してください
- a = bは、aとbが指すオブジェクトです。
- ==アドレスが同じかどうかを判断する
- a.equals(b)内容が同じかどうかを判断する
- オブジェクト配列
- new String [10]はStringクラスオブジェクト(ただし配列オブジェクト)を作成しないため、Stringコンストラクターは呼び出されません。
- sa [0]は文字列参照であり、文字列オブジェクトではありません。sa[0]が指すものは文字列オブジェクトです。
継承
- スーパークラスのプライベートメンバーの場合、ただし使用できません
- オブジェクトを作成するとき、クラスとスーパークラスのコンストラクターは自動的に呼び出され
、呼び出し順序は派生順序と同じです。 - スーパークラスが非プライベートの
无参构造函数
場合、サブクラス自动调用
;スーパークラスがの有参构造函数
場合、サブクラスコンストラクター必须显式调用超类的构造函数
、それ以外の場合、コンパイルエラー
シングルトンモード
class Student{
String name;
int age;
private Student(){}
public static Student creat(){//一定是static这样可以通过类名调用
Student a=new Student();//在方法中new
return a;
}
}
Student st=Student.creat();
System.out.println(st.age);
ポリモーフィズム
- 意味:多義性
- オーバーロード(静的バインディングはコンパイル時に決定されます)同じオブジェクトと同じメソッドは異なるパラメーターを持ちます
- 犬1.嗅ぐ(飼い主の匂いq);犬1.嗅ぐ(骨の匂いq);……
- 注意
重载传参
、それが基本的なタイプのデータである場合、大きなものを小さなものに変換することはできますが、小さなものを大きなものに変換することはできません
- 書き換え(実行時に動的バインディングを決定する)異なるオブジェクトの同じ動作は大幅に異なります
- Dog d = new Tibetan Mastiff()/ new Husky();d。Bite(); // Rewriteこのメソッドを別の新しいオブジェクトにバイトして、このメソッドを呼び出すのは異なりますが、このメソッドはエクステントの親クラスです。
保证同名同参同返回类型权限不能缩小
- クラスがサブクラスを派生することを禁止したい場合は、クラスを設定します
为final
- サブクラスが操作をオーバーライドすることを禁止するには、操作を次のように設定できます。
final或者static
- オーバーライドされたくないメソッドは次のことができます。//
final/static/private
クラスは非公開で変更されない
- Dog d = new Tibetan Mastiff()/ new Husky();d。Bite(); // Rewriteこのメソッドを別の新しいオブジェクトにバイトして、このメソッドを呼び出すのは異なりますが、このメソッドはエクステントの親クラスです。
抽象クラスとインターフェース
- 抽象クラス:父と息子の間の契約を確立する
- 抽象はコンストラクタを変更できません
- 抽象は静的ファイナルでは使用できません
- サブクラスは抽象クラスをオーバーライドする必要があります
- インターフェース:任意のクラス間のコントラクトを確立します