Android Java basic knowledge ---Java keywords

9891 ワード

You need konw something about the JAVA before read the Android Frameowork/apllication source code, and forther more, it can help you understand the design mode it used quickly.
 
For Android Jave basic knowledge, I abstract some content from Intenet  and some from my experinece. Just a memo.
Will include the following division.
 
1 Java keywords
2 Java/C++ design mode
3 Java SQLite programe
4 AIDL
5 JNI
6 Java thread
7 Binder
8 Proxy/Stub
9 Android Dalvik
10 share lib tech
11 Multi thread tech
12 Android API xml file
 
 
 
 
JAVAでimplementとextends
extendsは継承親クラスであり、そのクラスがfinalまたはそのクラスがabstractとして定義されていない限り継承できる.JAVAでは多重継承はサポートされていないが、インタフェースで実現できる.これによりimplementsが使用され、継承は1つのクラスしか継承できないが、implementsでは複数のインタフェースを実現でき、カンマで区切ることができる
たとえば
class A extends B implements C,D,E
 
通常、インタフェースの定義メソッド名は、実装されず、その実装は継承されたサブクラスに渡されます. 
インタフェースを通じて一対多の方法を実現できます!すなわち、1つのインタフェースの複数の実装方法! 
これもOOの中の“多態性”の体現の所在です! 
 
implementsはインタフェースを実装するために使用されます. 
インタフェースを実装するには、クラス定義にimplements句を含め、インタフェース定義のすべてのメソッドを作成してOK
 
 
 
 
 
From
http://qinshuwei.com/1096.html
 
abstract Javaキーワード
 
abstractキーワードは、クラスまたはメソッドを変更できます.
abstractクラスは拡張(サブクラスを追加)できますが、直接インスタンス化することはできません.
abstractメソッドは、宣言されたクラスでは実装されませんが、サブクラスで書き換える必要があります.
例 
public abstract class MyClass
  {
  }
    public abstract String myMethod();

コメント abstractメソッドを用いたクラスは本来抽象クラスであり,abstractとして宣言しなければならない.
abstractクラスはインスタンス化できません.
abstractクラスのサブクラスがそのスーパークラスのすべてのabstractメソッドを実装する場合にのみ、abstractクラスのサブクラスをインスタンス化できます.このクラスをabstractクラスと区別するために特定のクラスと呼ぶ.
abstractクラスのサブクラスがそのスーパークラスのすべてのabstractメソッドを実装していない場合、このサブクラスもabstractクラスである.
abstractキーワードはstatic、private、finalメソッドに適用できません.これらのメソッドは書き換えられないため、サブクラスでは実現できません.
finalクラスの方法はabstractではありません.finalクラスにはサブクラスがないからです.
extends Javaキーワード
extendsキーワードはclassまたはinterface宣言で使用され、宣言されたクラスまたはインタフェースがその名前の後にextendsキーワードが付いたクラスまたはインタフェースのサブクラスであることを示すために使用されます.
例 
public class Rectangle extends Polygon
  {
  }

コメント 前の例では、RectangleクラスはPolygonクラスのすべてのpublic変数とprotected変数とメソッドを継承します.
Rectangleクラスは、Polygonクラスの非finalメソッドを書き換えることができます.
1つのクラスは1つの他のクラスしか拡張できません.
final Javaキーワード
finalキーワードはクラスに適用され、クラスを拡張できないことを示す(サブクラスを持つことはできない).
finalキーワードは、サブクラス内のメソッドを書き換えることができないことを示すメソッドに適用できます.
例 
public final class MyFinalClass
  {
  }
    public class MyClass
  {
     public final String myFinalMethod()
     {
        <statements>
     }
  }

コメント 1つのクラスはabstractでもfinalでもない.abstractはクラスを拡張する必要があることを意味し、finalはクラスを拡張できないことを意味する.
一つの方法はabstractでもfinalでもない.abstractはメソッドを書き直さなければならないことを意味し,finalはメソッドを書き換えることができないことを意味する.
finally Javaキーワード
finallyキーワードは、try-catch-finally文で常に実行されるブロックを定義するために使用されます.
finallyブロックには、通常、tryブロックの一部が実行された後に正常に動作するようにクリーンアップコードが含まれます.
例 
try
  {
     <        >
  }
  catch (<java.lang.Exception    > e)
  {
     <     e    >
  }
  finally
  {
     <                >
  }

コメント 開始タグと終了タグ{と}はfinally句構文の一部であり、その句に1つの文しか含まれていない場合でも、この2つのタグを省略することはできません.
各tryブロックには、少なくとも1つのcatchまたはfinally句が必要です.
tryブロックの任意の部分を実行すると、例外が発生するかどうかにかかわらず、tryまたはcatchブロックにreturn、continue、break文が含まれているかどうかにかかわらず、finallyブロックのコードが必ず実行されます.
異常が発生しない場合、コントロールはtryブロックをスキップしfinallyブロックに入ります.
tryブロックの実行中に異常が発生し、対応するcatchブロックにbreak、continue、またはreturn文が含まれている場合、コントロールはfinallyブロックを最初に通過し、その後break、continue、またはreturnを実行します.
implements Javaキーワード
implementsキーワードはclass宣言で使用され、宣言されたクラスがimplementsキーワードの後ろの名前で指定されたインタフェースで宣言されたすべてのメソッドの実装を提供することを示す.
例 
public class Truck implements IVehicle
  {
  }

コメント 上記の例では、Truckクラスは、IVehicleインタフェースで宣言されたすべての方法の実装を提供する必要があります.
そうでなければ、Truckクラスは独立します.他のメソッドと変数を宣言し、別のクラスを拡張できます.
1つのクラスで複数のインタフェースを実現できます.
instanceof Javaキーワード
instanceofキーワードは、オブジェクトが属するクラスを決定するために使用されます.
例 
if (node instanceof TreeNode)
  {
     <statements>
  }

コメント 前の例では、nodeがTreeNodeクラスのインスタンス、またはTreeNodeのサブクラスのインスタンスの場合、instanceof式の値はtrueになります.
interface Javaキーワード
interfaceキーワードは、新しいJavaインタフェースを宣言するために使用され、インタフェースはメソッドの集合です.
インタフェースはJava言語の強力な機能です.いずれのクラスも、1つ以上のインタフェースを実装すると宣言できます.これは、これらのインタフェースで定義されたすべてのメソッドを実装することを意味します.
例 
public interface IPolygon
  {
     public float getArea();
     public int getNumberOfSides();
     public int getCircumference();
  }

コメント インタフェースを実装する任意のクラスは、インタフェース内のすべての方法の実装を提供する必要があります.
1つのクラスで複数のインタフェースを実現できます.
static Javaキーワード
staticキーワードは、内部クラス(別のクラスで定義されたクラス)、メソッド、またはフィールド(クラスのメンバー変数)に適用できます.
例 
public class MyPublicClass
  {
     public final static int MAX_OBJECTS = 100;
     static int _numObjects = 0;

     static class MyStaticClass
     {
     }

     static int getNumObjects()
     {
     }
  }

コメント 通常、staticキーワードは、エンティティを適用するエンティティが、エンティティを宣言するクラスの特定のインスタンスの外部で使用可能であることを意味します.
static(内部)クラスは、トップクラスであっても他のクラスによってインスタンス化および参照できます.上記の例では、別のクラスのコードは、MyClass.MyStaticClassのようなクラス名を含むクラス名で名前を限定することによって、MyStaticClassクラスをインスタンス化することができる.
staticフィールド(クラスのメンバー変数)は、クラスのすべてのインスタンスに1回しか存在しません.
クラスを最初にインスタンス化することなく、クラスの外部からstaticメソッドを呼び出すことができます.このような参照は、常にメソッド呼び出しの制限子としてクラス名を含む.上記の例では、MyClassクラス外部のコードは、MyClass.getNumObjects()としてgetNumObjects()staticメソッドを呼び出す.
モード:
public final static varName = ;
通常、クラスの外部で使用できるクラス定数を宣言するために使用されます.このようなクラス定数を参照する場合はクラス名で限定する必要がある.上記の例では、別のクラスはMyClass.MAX_を使用できます.OBJECTS形式でMAX_を参照OBJECTS定数.
switch Javaキーワード
switch文は、ある式に基づいて複数のコードブロックのいずれかを選択して実行するために使用されます.
例 
int arg = <some value>;
  switch (arg)
  {
     case 1:
        <statements>
        break;
     case 2:
        <statements>
        break;
     default:
        <statements>
        break;
  }
    char arg = <some value>;
  switch (arg)
  {
     case 'y':
     case 'Y':
        <statements>
        break;
     case 'n':
     case 'N':
        <statements>
        break;
     default:
        <statements>
        break;
  }

コメント switch条件の計算結果はbyte、char、shortまたはintに等しくなければならない.
caseブロックには暗黙的な終了点はありません.break文は、通常、各caseブロックの最後に使用され、switch文を終了するために使用されます.
break文がない場合、実行フローはすべての後のcaseおよび/またはdefaultブロックに入ります.
synchronized Javaキーワード
synchronizedキーワードは、メソッドまたは文ブロックに適用され、1つのスレッドのみが実行すべきキーコードセグメントを保護します.
例 
public class MyClass
  {
     public synchronized static String mySyncStaticMethod()
     {
     }

     public synchronized String mySyncMethod()
     {
     }
  {
    public class MyOtherClass
  {
     Object someObj;

     public String myMethod()
     {
        <statements>
        synchronized (someObj)
        {
           <statements affecting someObj>
        }
     }
  }

コメント synchronizedキーワードは、コードのキーコードセグメントが複数のスレッドによって一度に実行されることを防止することができる.
上記の例のMySyncStaticMethodのような静的メソッドに適用すると、このメソッドが1つのスレッドで一度に実行されると、クラス全体がロックされます.
前の例のMySyncMethodのようなインスタンスメソッドに適用すると、このメソッドが1つのスレッドによって一度にアクセスされると、インスタンスはロックされます.
オブジェクトまたは配列に適用すると、関連するコードブロックが一度に1つのスレッドで実行されると、オブジェクトまたは配列がロックされます.
throw Javaキーワード
throwキーワードは異常を引き起こすために使用されます.
例 
import java.io.IOException;

  public class MyClass
  {
     public method readFile(String filename) throws IOException
     {
        <statements>
        if (error)
        {
           throw new IOException("error reading file");
        }
     }
  }

コメント throw文はjava.lang.Throwableをパラメータとします.Throwableは、適切なcatchブロックによってキャプチャされるまで呼び出しスタック内で上方に伝播する.
RuntimeException以外の例外を発生させるには、メソッド宣言でthrows修飾子を使用して、その例外を宣言する必要があります.
throws Javaキーワード
throwsキーワードは、メソッドが特定のタイプの例外を引き起こすことを示すためにメソッドに適用することができる.
例 
import java.io.IOException;

  public class MyClass
  {
     public method readFile(String filename) throws IOException
     {
        <statements>
        if (error)
        {
           throw new IOException("error reading file");
        }
     }
  }

コメント throwsキーワードは、カンマで区切られたjava.lang.Throwablesリストをパラメータとして使用します.
RuntimeException以外の例外を発生させるには、メソッド宣言でthrows修飾子を使用して、その例外を宣言する必要があります.
try-catchブロックにthrows句付きメソッドの呼び出しを含めるには、メソッドの呼び出し者を指定する必要があります.
Transient Javaキーワード
Transientキーワードは、クラスを含むクラスインスタンスがシーケンス化されたときにシーケンス化されるべきではないことを示すために、クラスのメンバー変数に適用できます.
例 
public class MyClass
  {
     private transient String password;
  }