Javaレビュー:クラス管理と一般的なツール

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クラスは非公開で変更されない

ここに画像の説明を挿入

抽象クラスとインターフェース
  • 抽象クラス:父と息子の間の契約を確立する
    • 抽象はコンストラクタを変更できません
    • 抽象は静的ファイナルでは使用できません
    • サブクラスは抽象クラスをオーバーライドする必要があります
  • インターフェース:任意のクラス間のコントラクトを確立します

おすすめ

転載: blog.csdn.net/Phoebe4/article/details/110339045