1。髄髄の設置と使用
* Eclipse:Is Free Development Toolです* myeclipse:Myeclipseを割るための有料プラグインです**インストールディレクトリ要件:中国語とスペースはありません**インストールが完了した後、ワークスペースを選択します。 Java Project Webプロジェクト - 依存関係JDKを選択します。MyeClipseに付属のJDKを使用するか、インストールされたJDK*を使用してパッケージパッケージを作成できます。ボディまたはリターン値;} - メソッド仕様の命名小文字の最初の文字、例:addnum()*変数を定義する - 変数の命名仕様**最初の文字小文字、2番目の単語の最初の文字はユーザー名のような大文字でなければなりません*ネーミングする別の方法があります** basicinを使用することは、中国のピンを使用することができます。命名の原則:名前を参照してそれが何を意味するのかを知っている *コードをインデントする必要がある *プログラムを実行するとJavaアプリケーションデバグとしてJavaアプリケーションとして実行されます
2。デバッグデバッグモード(ブレークポイントデバッグモード)
*このモードを使用して、プログラムのデバッグ(プログラムのデータの変更を参照) *デバッグを使用する最初のステップでは、ブレークポイントを設定する必要があります(このラインで停止するプログラムを実行する必要があります) - 左にダブルクリックします、ドットが表示されます。実行されない *プログラムを実行することができます - ショートカットキーを使用してF6(シングルステップ実行) - 再開F8:デバッグが終了したことを示します。たとえば、現在のブレークポイントの後にブレークポイントがあり、次のブレークポイントにジャンプします。方法** f7ステップリターン:返品
3。髄突ースのショートカットキーの使用
*コードプロンプトALT /*クイックガイドパッケージCtrl Shift O*シングルラインコメントctrl /*シングルラインコメントctrl /*マルチラインコメントctrlシフト /*マルチラインコメントctrlシフト /*削除ラインctrl d
4。Junitの使用
*ユニットテスト*テストオブジェクトはクラスのメソッドです* JuintはJavaseの一部ではありません、私はインポートJARパッケージを使用したい**ただし、JUNITを備えたJARパッケージは最初にMyeClipse*に持ち込まれます* Junitバージョン3.x 4.x 4.x*ユニットテスト方法、メソッドネーミングルールパブリックメソッドname() @testpublic void testadd1(){testjunit test01 = new testjunit(); test01.testadd(2、3);} - メソッド名を選択し、右クリックして実行ランを右クリックします。クラス、as --- junit test ** @ignore:このメソッドが単位テストではないことを意味します** @before:各メソッドの実行** @after:@after:assert.assertequals(「期待値をテストする」、「ランニングの実際の値」)JDK5.0新しい機能JDK 1.1 1.2 1.4 5.0 **ジェネレーション、エクスペンスの輸入、排出、排気、パラメーター**反射5。ジェネリックの紹介
*なぜジェネリックを使用するのですか? - 通常、セットで使用されます**たとえば、文字列タイプの値をセットに入れます。この時点で、この値をセットに入れた後、その能力を失うタイプはオブジェクトタイプのみになります。この時点で、たとえば、この値を変換すると入力する場合、タイプ変換エラーを簡単に使用できます。この問題を解決する方法は、ジェネリックを使用してこの問題を解決するために使用できます*セットでジェネリックを使用する方法 - 一般的に使用されるリストセットマップ - ジェネリック構文コレクション<文字列>。 floatdouble -doublechar -characterboolean -boolean* list Arraylist linkedlistベクターコードで汎用リストを使用する3つの実装:@testpublic void testlist(){list <string> list = new arraylist <string>(); list.add( "aaa"); list.add( "bb");リストコレクションをトラバースします。//ordinaryfor loop iterator拡張//ループの場合は、(int i = 0; i <list.size(); i ++){string s = list.get(i); system.out.println(s);} system.out.println( "=============================================================================== ================================================================================ ================================================================================ ============================================================================ ================================================================================ ================================================================================ ================================================================================これらの3つの違い * set:// generics set set set @testpublic void testset(){set <string> set = new hashset <string>(); set.add( "www"); set.add( "qqq"); set.add( "zzz"); // set.add( "qq" "); //トラバーサルのために強化を使用する(文字列S2:セット)の拡張{system.out.println(s2);} system.out.println( "==================================================================== ========================================================================================== ========================================================================================== ============================================================================================ = set.iterator(); while(it1.hasnext()){system.out.println(it1.next());}}}}*キーバルフォームコード://マップでジェネリックを使用@testpublic void testmap(){Map <文字列、文字列>マップ=新しいハスマップ<文字列> "111"); map.put( "bbb"、 "222"); map.put( "ccc"、 "333"); // transip map transip traved to traverse // 1。キーを取得する方法を取得します。 (文字列キー:セット){// Valuestring値を取得= map.get(key); system.out.println(key+": "+value);} system.out.println(" ========================================================================= ============================================================================================================================================== ============================================================================================================================================== ============================================================================================================= {// entryはキーと値の関係の関係ですkeyv = entry.getKey(); string valuev = entry.getValue(); system.out.println(keyv+":"+valuev);}}}6.ジェネリックはメソッドで使用されます
*指定された位置で配列要素の交換を実装する配列を定義します*メソッドロジックは同じですが、データ型は異なります。現時点では、一般的な方法を使用* /**一般的な方法を使用して大文字を使用してタイプを定義してtを表します。このタイプはt*です。ここでは、このタイプt**/public static <t> void swap1(t [] arr、int a、int b){t temp = arr [a]; arr [a] = arr [b] = temp;} ** job 2:一般的なメソッドを実装し、配列を受け入れ、アレイのすべての要素を逆にすることができます。7。クラスでのジェネリックの使用(理解)
*クラスのタイプを定義します。このタイプはクラスで直接使用できます *パブリッククラスtestdemo04 <t> {//クラスでtタイプTAAを使用できます。 public void test11(t bb){} //クラスで静的メソッドで定義された汎用を記述します。8。列挙の紹介
*列挙とは何ですか? **特定の範囲内で値を取得する必要があります。この値は、範囲のいずれかにのみとなります。 **現実的なシーン:信号機には3色がありますが、3色の1つだけが明るいことができます* 1つのキーワード列挙*を使用します** enum color3 {red、緑、黄色;}* enum構築方法もプライベートです*特別な列挙の動作(理解)** enumクラスに構築方法があります**各インスタンスのパラメーターにはパラメーターがあります。 class **この抽象的なメソッドを列挙の各インスタンスで書き直します9。列挙されたAPIの動作
** name():enumの名前を返します** ordinal():enumのサブスクリプト、添え字は0 ** valueof(class <t> enumtype、string name)から始まります:enumのオブジェクト**他の2つの方法を取得します。列挙オブジェクト、列挙物オブジェクトサブスクリプト、および列挙オブジェクト名表現間の変換 - // enumオブジェクトを把握し、列挙@testpublic void test1(){// enumオブジェクトColor100 c100 = color100.-/ c100.ordinal(); system.out.println(name+""+idx);} - //列挙の名前を知り、列挙@testpublic void test2(){string name "; //オブジェクトColor100 c1 = colorof(name1); c1.ordinal(); system.out.println(idx1);} - //列挙の添え字を知って、列挙@testpublic void test3(){int idx2 = 2; //列挙オブジェクトColor100 [] cs = coler100.values(); cs [idx2]; //列挙name string name = c12.name(); system.out.println(name);}を取得します10。静的インポート(理解)
*コードの静的インポート方法を直接使用して静的メソッドまたは定数をインポートできます* static xx.xx.xxxをインポートしてくださいstatic java.lang.system.outをインポート; static java.util.arrays.sort;
11。自動開梱とアセンブリ
*ボックス**基本データ型をパッケージクラスに変換*ボックス化**パッケージクラスを基本データ型に変換します** // Autobox Integer i = 10; // autobox int m = i; // unbox int a = m.intvalue();} ** jdkは後方互換です - たとえば、jdk1.4で記述されたコードも5.0で実行できます**演習:後方互換==実行の結果は、dosomething(double m)==次の方法が呼び出された場合、タイプ変換が必要ですが、JDK1.4はJDKが後方互換であるため、JDK1.4がJDK1.4で呼び出される場合、JDK5.0 Public Static Void Main(String [] Args){doSomeThs(10);} public void void dosom -inhing(double m)でまだ呼び出されます。 {system.out.println( "double ...");} public static void dosomething(integer a){system.out.println( "integer ......");} **覚えておいてください:8つの基本データ型* integer* char ---文字に対応するラッパークラス12。ループ用に拡張(*****)
*(raversed:the set of to the set to traversed){} - for(string s:list){system.out.println(s);}* usage shenarios:array;反復可能なインターフェイスを実装するセットは、拡張されたループ*を使用できます*拡張されたループを使用して、セットでセットをトラバースするためにiteratorインターフェイスが実装されているため、拡張されたループを使用することができ、イテレーターインターフェイスを実装できないため、ループの拡張を使用できません。 Iteratorインターフェイスを実装できないため、ループを拡張することは使用できません。拡張されたループの目的が表示されます:イテレーターを交換する**の拡張の基礎となる層は、イテレーターによって実装されています13。コンテンツサプリメント
(1)一般的な消去*まず、ジェネリックはソースコード段階にのみ表示されます。コンパイルされた場合、ジェネリックは存在しなくなります(2)演習:ジェネリックメソッドを実装し、任意のタイプの配列を受け入れ、配列のpublic static <t> void void(t [] arr1){/**基本的なアイデア:最初の要素と最後の要素と交換し、2番目の要素を最後の要素と交換します。 。 。 。 *スワップ長/2**/// transweep(int i = 0; i <arr1.length/2; i ++){/*int temp = arr1 [0]; arr1 [0] = arr1 [arr1.length-1]; temp;}}14。変数パラメーター
*どのシナリオで変数パラメーターを適用できますか:** 2つの数値の追加を実装し、3つの数値と4つの数値の追加を実装します。複数のメソッドが実装されている場合、これらのメソッドのロジックは基本的に同じです。唯一の違いは、渡されたパラメーターの数です。変数パラメーターを使用できます*変数パラメーターの定義方法データ型...配列*の名前は配列として理解されます。これは、パラメーターコードパブリックコードパブリックvoid add1(int ... nums){// numsは、渡されたパラメータ// system.out.out.out.out.out); i = 0; i <nums.length; i ++){sum+= nums [i];} system.out.println(sum);}* note(1)変数パラメーターはメソッドのパラメーターリストに記述する必要があり、別々に指定することはできません。パラメーター-Add1(int a、int ... nums)15。反射の原則(***********)
*より高い汎用性のある一部のコードで適用*後で学習したフレームワークのほとんどは、フレームワーク開発で反射を使用して実装されます*構成ファイル**に基づいて開発され、クラス内のすべての内容は、クラスのすべてのコンテンツを実行するために使用できます。 Javaファイルをローカルハードディスクに保存する必要があります。Java* Javaファイルをコンパイルして.classファイルになります* JVMを使用してクラスファイルをクラスロードを介してメモリにロードします*すべてはオブジェクトです。クラスファイルはメモリでクラスクラスで表されます。このクラスを取得した後、属性コンストラクターを含むすべてのコンテンツをクラスファイルに入れることができます。通常の方法*属性がファイルされます*コンストラクター*コンストラクター*通常のメソッドはクラスメソッドを通過します
16.反射操作クラスでパラメーターレス構造方法を使用します(**書き込み**)
*最初にクラスクラスを取得 - //クラスクラスクラスClazz1 = persons.class; clazz2 = new person()。getclass(); clazz3 = class.forname( "cn.itcast.test09.person"); - // classclass c3 = class.forname( "cn.itcast.test09.person"); //人クラスの人のインスタンスを取得しますp =(person)c3.newinstance();* code //パラメーターなしでコンストラクターを操作@testpublic void test1()throw class.forname( "cn.itcast.test09.person"); //個人クラスのインスタンスを取得しますp =(person)c3.newinstance(); //値p.setname( "zhangsan"); system.out.println(p.getname());}を設定します
17.反射操作を使用してパラメーター構築方法を持つ(**書き込み**)
//パラメーターでコンストラクターを操作@testpublic void test2()throws exception {// get classclass c1 = class.forname( "cn.itcast.test09.person"); cs = c1.getConstructor(string.class、string.class); //パラメーターでコンストラクターを介して値を設定します18。反射操作プロパティを使用します(**書き込み**)
* //操作名属性@testpublic void test3(){try {// class class c2 = class.forname( "cn.itcast.test09.person"); // get name属性// c2.getdeclaredfields();属性このメソッドを介して、パラメーターは属性フィールドF1 = c2.getDeclaredfield( "name"); //操作は私有財産であり、操作は許可されていません。プライベートプロパティのセタアクセス可能(true)を設定する必要があります。これにより、私有地f1.setaccessible(true); //名前値設定メソッド、2つのパラメーター:最初のパラメーターインスタンス、2番目のパラメーターはset value f1.set(p11、 "wangwu")を設定する必要があります。 // p.name = "wangwu"; system.out.println(f1.get(p11))に相当します。 // p.nameに相当} catch(例外e){e.printstacktrace();}}19。一般的な操作方法を使用します(**書くことができます**)
*メソッドクラスを使用して通常の方法を表すために使用*コード//操作setName@testpublic void test4()throws exception {// get class class c4 = class.forname( "cn.itcast.test09.person")方法// c4.getDeclaredMethods(); //すべての通常の方法を取得// 2つのパラメーターを転送します:最初のパラメーター、メソッド名。 2番目のパラメーター、メソッドメソッドM1 = c4.getDeclaredMethod( "setName"、string.class); // setNameメソッドを実行し、set valueを実行し、invoke(p4、 "niuqi")を実行し、setnameメソッドを実行し、実行します。 2つのパラメーターを渡す:最初のパラメーター、個人インスタンス。 2番目のパラメーター、set value // Invokeメソッドを実行した後、SetNameメソッドを実行するのと同等であり、同時に、値はniuqim1.invoke(p4、 "niuqi")に設定されています。 system.out.println(p4.getName());}* //操作のプライベートメソッドをtrueに設定する必要があります* //m1.setaccessible);*操作方法が静的メソッドである場合、静的メソッドはクラス名と呼ばれるためです。メソッド名、クラスのインスタンスは必要ありません*反射を使用して静的メソッドを操作する場合、インスタンスは必要ありません* Invokieメソッドの最初のパラメーターで、Null-M1.Invoke(null、 "niuqi")を書き込みます。上記は、編集者が紹介したJava Web BasicチュートリアルのJava Basic Enhanced Editionです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!