内部クラス
クラス分類は、クラス内で定義されています。事のメンバーがものである場合は、内部クラスの定義を使用することができます。
一般的な内部クラスは以下のとおりです。内部クラスのメンバー、ローカル内部クラス、プライベート内部クラス、静的な内部クラス、匿名内部クラス(最も重要)。
-
内部クラスメンバー
クラスの外側部材の位置におけるクラス定義の内部。(保護されたパブリック、プライベート、デフォルト、修飾子のメンバーの一員として使用することができ 、静的、( クラスを継承できるクラスとして、)最終は含まない)、あなたはインターフェイスを実装することができます。
特長:
内部クラスは、プライベートを含め、クラスの外に直接すべてのプロパティとメソッドを使用することができます。直接静的定数(静的最終int型A = 5)に加えて、クラス内部の静的コンテンツで定義されていない 、 静的コンテンツは内部の静的クラスで定義します。 -
プライベート内部クラスの
機能:プライベート内部クラスは、プライベートを含め、クラスの外ですべてのコンテンツを使用することができます。プライベート内部クラスは唯一のクラス外オブジェクトを介してプライベート内部クラスのプライベートコンテンツで使用することができ、他のクラスを使用することはできません。 -
静的内部クラス
(1)静的内部クラスは、メンバーの内容を定義することができ、静的なコンテンツを定義します。
(2)非静的コンテンツ外側クラス静的内部クラス、オブジェクトを用いてクラス外です。
(3)あなたは、クラス名で外部クラスに静的な内部クラスの静的コンテンツを使用することができ、我々はオブジェクトを介して、静的な内部クラスのメンバーの内容を使用する必要があります。
(4)クラス名外部の他のクラスにおいては静的内部クラス名。静的内部クラスを使用して静的コンテンツは、静的コンテンツとすることができます。
新しい外部クラス。静的コンテンツのカテゴリ()
静的な内部クラスのメンバーの静的内部クラスを使用してオブジェクトを作成します。 -
部分的な内部クラス
のクラス内のメソッドで定義されている
:(最終含まない...静的、パブリック例えば)1つの部分内部クラスが修飾子修正部材を使用することができない
現在定義されている唯一の部分の内部クラスは、オブジェクトクラス内とすることができる方法2.あなたがカテゴリ別に静的なコンテンツを使用することができ、内部クラスのメンバーを使用します。
3. jdk1.8のデフォルト表示の定義は1.7前に必要とした後、ローカル内部クラス、メソッドのパラメータ -
匿名内部クラス
のサブクラスは、役割(機能の実装)を所有していない簡素化していない内部クラス名を、。
(1)破壊の不足、第二時間を使用することができません。
new Smoking(){ //--匿名内部类的类体 是new后面的接口或者父类的实现类|子类的类体
@Override
public void smoke() {
System.out.println("我抽的不是烟,抽的是寂寞..");
}
@Override
public void cat() {
System.out.println("吸猫...");
}
}.cat();
interface Smoking{
void smoke();
void cat();
}
受信した匿名の内部クラス参照オブジェクトの(2)アドレス - インタフェースの多型
Smoking s=new Smoking(){ //--匿名内部类的蕾体 是new后面的接口或者父类的实现类|子类的类体
public void smoke() {
System.out.println("我抽的不是烟,抽的是寂寞..");
}
@Override
public void cat() {
System.out.println("吸猫...");
}
};
s.smoke();
s.cat();
パラメーター(3)方法
useUSB(new USB(){
@Override
public void start() {
System.out.println("开始使用移动硬盘");
}
@Override
public void end() {
System.out.println("结束使用移动硬盘");
}
});
useUSB(new USB(){
@Override
public void start() {
System.out.println("开始使用键盘");
}
@Override
public void end() {
System.out.println("结束使用键盘");
}
});
}
static void useUSB(USB usb){
usb.start();
usb.end();
}
}
(4)ラムダ式
。匿名の内部クラスを簡単にするための
構文:
()パラメータリスト抽象メソッドオーバーライド
- >矢印、矢印関数、ラムダシンボル
抽象メソッド{}体書き換える方法
提供は:関数でなければなりませんインターフェース
機能インターフェース:唯一のインタフェースの抽象メソッドは機能インタフェースで
機能インタフェースかどうか必須試験:@FunctionalInterface
public class LambdaDemo {
public static void main(String[] args) {
/*Code c=new Code(){
@Override
public void code(int haha) {
System.out.println("边敲代码边哄女朋友");
}
};*/
//Lambda表达式写法1
/*Code c=()->{
System.out.println("边敲代码边哄女朋友");
};*/
//写法2:如果方法的语句体只有1句,前后的{}可以省略
// Code c=()->System.out.println("边敲代码边哄女朋友");
//写法3: 如果存在参数,参数的数据类型可以省略
// Code c=(i,m)->System.out.println("边敲代码边哄女朋友"+i+"次");
//写法4:如果存在参数,并且参数只有一个前后的()可以省略
/*Code c= i ->{
System.out.println("边敲代码边哄女朋友"+i+"次");
return -1;
};
System.out.println(c.code(100));*/
//写法5: 有返回值类型的方法,如果方法体语句只有1句,并且是return语句的时候,这时前后{},包括return都可以省略
Code c= str -> str.length();
System.out.println(c.code("因为"));
}
}
//函数式接口
@FunctionalInterface
interface Code{
// void code();
int code(String a);
}
配列
配列[]、同じタイプのデータの順序集合
配列の特性
- 配列は、参照データ型です
- 配列の長さに固定され、不変長ひとたび
- 一貫性のある配列型データのすべてのデータ
- 配列の順にデータがあります(インデックスは0から始まります)
方法の配列を宣言します
- データ型[]配列名、
データの種類:基本データ型をすることができ|参照データ型
のデータ・タイプの役割:定義されたすべてのデータを含むデータ型配列 - データ型配列名[]; - 推奨されません
配列の初期化
- 動的な初期化:割当後作成する
データ型[] =新しいアレイ名データ型[長さ];
無割り当てストリングヌル場合に、データの配列は、デフォルト値を有し、INT-0、二重0.0、char-「」、boolean- 偽 - 静的初期化:作成同時に割り当てられた
データ型[]配列名=新しいデータタイプ[] {値1、値2、値3 ...};
データ型[]配列名= {値1、値2、値3 ...}。 -推奨
配列の長さは、取得します
- 配列名の.LENGTH
最後のデータの配列インデックス
- 配列名.LENGTH-1
アレイ横断
操作インデックス(位置)であるため、取得することができる通常のforループ1)は、修正されてもよいです。
2)拡張forループ|のために...それぞれ、のみ取得することができ、それぞれのデータを変更することはできません。
(変数名データ型:アレイ名|コンテナ名)用{
変数- >代数は、各データを意味する
}
共通の異常アレイを使用する場合
-
NullPointerExceptionがnullポインタ例外
ヌルを指すオブジェクトは、オブジェクトに基づいて何かをする、NULLポインタに表示されることがあります -
ArrayIndexOutOfBoundsExceptionが配列インデックス境界例外
インデックスが負である
インデックスが最大範囲を超え
可変パラメータ
可変パラメータ:複数のパラメータに同じデータタイプ0
- 1.可変パラメータ表現を使用して...
- 2.暗黙的にコンパイラが自動的に変数パラメータの配列、配列の操作の仕方によって使用される変数パラメータを作成します
- 3.変数のパラメータは、パラメータリスト内の最後の位置に配置する必要があります
public class ParaDemo {
public static void main(String[] args) {
test(1,"","",1,false);
}
//至少接收一个参数,可以接收多个参数
public static void test(int name,Object ...arr){
System.out.println(name);
for(Object n:arr){
System.out.println(n);
}
}