XiaobaiはどのようにしてJavaを学習しますか?Java初心者へのアドバイス

この記事を書く目的は、主にJavaの基本的な知識に関連して、長年Javaを使用した私の経験の一部を要約することです。したがって、これを開発し始めたばかりのJavaプログラマーと共有したいと思います。 Javaで。業界の初心者になる可能性があるので、Javaをよりよく学び、使用できるように、経験を積んでいただければ幸いです。
ここに写真の説明を挿入
この紹介の主な内容はJ2SEに関連しています。また、今後、JavaのJ2EE関連およびさまざまなフレームワーク関連の内容をいくつか紹介します。

長年のJava開発の後、Java開発者への通常のインタビューでの経験と組み合わせると、J2SEの主な目的は次のコンテンツを習得することだと思います。

1. JVM関連(各バージョンの機能を含む)

Javaを初めて使用する場合は、JVMの知識を必ずしも深く理解する必要はありません。この概念を簡単に理解するだけで十分です。しかし、Javaの経験が3年以上ある上級開発者にとって、JVMを知らないことはほとんど受け入れられません。
  
  JVMはJava操作の基礎であり、JVMについて何も知らない人がJava言語を完全に理解できるとは信じがたいです。3年以上のJavaの経験を持つ開発者にインタビューしたとき、JVMはほとんど必見の質問でした。もちろん、JVMは技術的な能力を決定する唯一のインタビューの質問ではありませんが、Java開発能力のレベルを証明することができます。
  
  JVMカテゴリでは、習得する必要のある知識は次のとおりです
  
。JVMメモリモデルと構造

GCの原理、パフォーマンスチューニング

チューニング:スレッドダンプ、メモリ構造の分析

クラスバイナリバイトコード構造、クラスローダーシステム、クラスロードプロセス、インスタンス作成プロセス

メソッド実行プロセス

Javaのメジャーバージョンによって提供される新機能(簡単に理解する必要があります)

2. Java操作(基本必須)

これは非常に単純に見えるかもしれませんが、Javaプログラムの実行方法を知っているのは誰ですか?しかし、多くの場合、IDEを介してJavaプログラムを実行するだけですが、基盤となるIDEはどのようにJavaプログラムを実行しますか?多くの人が理解していません。
  
  この知識ポイントは、Java開発者が習得する必要のある最も基本的な知識です。Javaを学ぶ初心者にとって、最初の知識は間違いなくコマンドラインでJavaプログラムを実行する方法を教えることですが、多くの人がJavaを学び、IDEを使用すると、私はこれを忘れました。これを知ることが重要なのはなぜですか?Javaの最も純粋な起動方法を知った後、起動に問題が発生したときに起動されるディレクトリの数、実行の名前、パラメータ、かどうかを分析できます。不足等があります。これは、実際の開発における奇妙で起こりうる環境関連の問題を解決するのに役立ちます。
  
  ここで習得する必要のある知識は次のとおりです
  
。javacはjavaファイルをクラスファイルにコンパイルします

javaコマンドの使用方法とコマンドラインでpackageを使用してjavaクラスを開始する方法

Javaプログラムに関連するさまざまなパス(クラスパス、java.library.path、Javaが実行されるメインディレクトリなど)

3.データ型

これについて言うことはあまりありません。Javaの基本型とオブジェクト型の習得にすぎません。ボックス化やボックス化解除など、JDKを自動的に変換する方法について詳しく学ぶことができますが、ボックス化後の型の同等性の判断を回避することもできます。
  
  主な知識ポイント:
  
基本的な型:int、long、float、double、boolean

対応するオブジェクトタイプ:整数およびその他のタイプから基本タイプへの変換、ボックス化およびボックス化解除
オブジェクトタイプ:等しい、ハッシュコード

文字列型の特徴

4.オブジェクトとインスタンス、オブジェクトの作成

この点で、開発者はクラスとインスタンスの概念と、Javaのオブジェクト指向機能の基盤であるそれらの違いを理解する必要があります。主な知識のポイントは次のとおり
  
です。クラスとインスタンスの概念

インスタンス作成プロセス:

継承なし:メモリスペースの割り当て、変数の初期化、コンストラクターの呼び出し

継承:静的アクションの処理、メモリスペースの割り当て、変数を初期値として定義、基本クラス->サブクラスから、定義時に初期化を処理、構築メソッドを実行

注意点:
  
    静的プロパティなどは、基本クラス->サブクラスから初期化され
    
    ますデフォルトの非パラメータ構築メソッド関連機能

5.アクセス制御

これは、Javaカプセル化機能の基盤でもあります。習得する必要があるのは次のとおり
  
です。publicprotecteddefault privateクラス、メソッド、およびフィールドの変更

6.プロセス制御

Javaフロー制御の基本。ただし、一部の構文は必ずしも一般的ではありませんが、必要に応じて理解して使用する必要があります。
  
習得する必要があります:

If、switch、loop、for、while、およびその他のフロー制御構文

7.オブジェクト指向プログラミングの概念

これはJavaのコアコンセプトであり、Java開発者は習得する必要があります。Javaの多くの機能または知識ポイントは、Javaオブジェクト指向プログラミングの概念に関連しています。私の理解では、優れた開発者はこれらの特性(知識ポイント)自体を理解するだけでなく、これらのオブジェクトがJavaオブジェクト指向プログラミングの概念にどのように反映されるかを知る必要があります。これは開発者がJavaを習得するのに役立ちます。この開発言語、およびその他のオブジェクト指向プログラミング言語。ここに簡単なリストを示します。主な知識ポイントは次のとおりです
  
。3つのオブジェクト指向特性:カプセル化、継承、およびポリモーフィズム、それぞれの定義の概念、反映される特性、およびそれぞれの使用シナリオ

静的多重ディスパッチと動的単一ディスパッチの概念

オーバーロードの概念と使用

継承:インターフェースの複数の実装、基本クラスの単一の継承

抽象化、抽象クラス、インターフェース

ポリモーフィズム:メソッドカバレッジの概念と使用

インターフェイスコールバック

8.静的

静的プロパティは、Javaの日常の開発でもよく使用されます。静的キーワードに関連する使用法を理解し、abstract、final、その他のキーワードと組み合わせて使用​​できるかどうかなど、他のキーワードと組み合わせて使用​​する必要があります。
  
習得する主なものは次のとおりです。

静的プロパティの定義と使用、およびロード時にクラスを初期化する方法

静的メソッドの定義と使用

静的クラスの定義と使用

静的コードブロックの定義と初期化のタイミング

9.基本的な知識のポイント

これは主に、システムによって分類されていないいくつかの散在するいくつかのJava知識ポイントです。また、日常の開発にも多く使用されています。実際にはこのコンテンツはたくさんありますが、ここでは一時的に要約されています
  
  :
  
equals、hashcode、string / stringbuffer、final、finally、finalize

10.収集フレームワーク

これはもっと習得する必要のある部分です。Java開発の場合、コレクションフレームワークを使用する必要はないと言えます。これは非常に重要です。ただし、ここでの知識のポイントは難しくありませんが、コレクションの内部実装を理解することをお勧めします。これは、1W要素のコレクションなど、さまざまなシナリオで問題を解決するための適切なフレームワークを選択するのに役立ちます。コレクションの特性や内部実装を知っている判断操作が含まれているので、正しい選択をするのは簡単です。
  
  以下のコンテンツがここに含まれています(並行性関連は含まれていません):
  
コレクションフレームワークシステム:基本的なコレクション、マップ

特定のコレクション実装コンテンツ、リスト、セット、マップの特定の実装、内部構造、特別なメソッド、適用可能なシナリオなど。

コレクション関連のツール、コレクションなどの使用法。

11.例外フレーム

Javaの開発では、例外を真剣に受け止めない場合があります。一般に、例外が発生した場合、それは直接スローされるか、ランダムキャッチの後に、プログラムの全体的な操作に大きな影響を与えません。ただし、エンタープライズレベルの設計と開発では、異常な設計と処理の品質は、システムの全体的な堅牢性に関連していることがよくあります。開発者にとっては、優れたシステムの例外を均一に処理して、多くの例外処理ロジックがいたるところに散らばらないようにする必要があります。システムの場合、例外は制御可能で、操作と保守が簡単である必要があります。特定の例外が発生した後は、次の方法が必要です。例外フレームワークは非常に単純ですが、例外処理はエンタープライズアプリケーション開発全体にとって非常に重要です。例外を適切に処理するには、Javaの例外システムを理解する必要があります。
  
  この部分で習得する必要のある知識ポイントは多くありません。主に次のとおりです。
  
異常なシステム:

Throwable

         Exception

                   RuntimeException

         Error

RuntimeException 和 一般 Exception 的区别, 具体处理方法等

12.JavaI。

IOは、Javaでのファイルの読み取りと書き込みのように単純であるだけでなく、ソケットネットワークの読み取りと書き込みなどのすべての入出力操作も含みます。たとえば、標準のHTTPリクエストでPostのコンテンツを読み取ることも出力プロセスなどです...
  
  IOの場合、Javaは基本的な入力および出力関連のAPIを提供するだけでなく、リーダーやライターなどのいくつかのAPIを提供します。また、特定の開発(多数のIO操作を伴うプロジェクト)でも重要であり、通常は日常の開発(ログ、一時的なファイルの読み取りと書き込みなど)に関与します。
  
  ここでの主な知識ポイントは次のとおりです。
  
基本的なIOシステム:InputStream、OutputStream、Reader / Writer、ファイル読み取り、さまざまなストリーム読み取りなどが含まれます。

NIOの概念、特定の使用法および使用シナリオ

13.マルチスレッドの同時実行性

マルチスレッドは、一般的にJavaでは難しい部分と見なされています。マルチスレッドは、CPU使用率を効果的に高め、システム全体の効率を向上させることができます。特に、多数のIO操作がブロックされている場合はそうですが、それは両刃の剣でもあり、うまく使用されない場合、システムはわずかに改善するだけでなく、改善がないだけでなく、複数のスレッド間のデバッグなどの問題も発生します。
  
  マルチスレッドには多くのコンテンツがありますが、Javaでマルチスレッドを最初に使用する際に習得する必要のある知識のポイントを簡単に説明し、いくつかの高度な機能の使用シナリオを個別に紹介する機会があります。
マルチスレッドの実装と起動

呼び出し可能と実行可能の違い

syncrhoizedとreentrantLockの特性と比較

スレッドプール

実行結果を取得するための将来の非同期方法

並行パッケージ

ロック

14.ネットワーク

Javaは、TCPおよびUDPプロトコルを直接操作できるAPIも提供します。ネットワークパフォーマンスを強調する必要がある場合は、TCP / UDPを直接通信に使用できます。これらの関連APIの使用法は、Tomcatなどのソースコードで確認できます。ただし、一般的にTCPが直接使用されることは少なく、処理にはMINAやNettyなどのフレームワークが使用されます。この分野での開発はあまり行われていないため、詳細は説明しません。

15.日付と時刻の処理

ほとんどすべてのアプリケーションで、時刻と日付の処理をバイパスすることはできませんが、JDK8より前の時間関連のAPIの使用は適切ではありません。その時代には、城田のような時間枠を選ぶことができました。JDK8のリリース後、新しいtime APIは基本的に他のフレームワークの利点を組み込んでおり、すでに直接使用できます。
  
  Java開発者の場合、時間と日付を処理するためにAPIを上手に使用する必要があります。
  
  特定のナレッジポイントはリストされなくなりました。JDK8での日時APIの使用法を要約するために、後で特別な記事が作成されます。

16.XML解析/ JSON解析

実際、これら2つのコンテンツはJ2SEにはありませんが、日常の開発では、他のプログラムや構成ファイルとの相互作用は、これら2つの形式の分析からますます切り離せなくなります。
  
  ただし、開発者にとって、特定のXML / JSON解析の原則と方法のいくつかを理解できると、プログラムをより効率的かつ堅牢にするために、特定のシナリオごとに適切な方法を選択するのに役立ちます。
  
  XML:DOM解析とSAX解析の基本原則、およびそれぞれの適用可能なシナリオ
  を理解する必要があります。JSON:Jackson、FastJson、Gsonなどの一般的なJSONフレームワークの使用法を理解する必要があります。

17.Mavenの使用

MavenはJavaのコンテンツではありませんが、Mavenは革新的であり、Java開発に大きな利便性をもたらします。依存関係の導入と管理、開発プロセスの更新とリリース、さらにはバージョンの更新まで、Mavenを使用すると、開発プロセスの複雑さが大幅に簡素化され、多くの時間を節約できます。MavenはJava開発者の標準になっていると言えます。したがって、私はMavenをJava開発者にとっての基本的な知識ポイントと見なしています。将来的には、私の経験とスキルの一部をMavenの使用に取り入れますので、ここでは詳しく説明しません。

18.ジェネリック

これはJDK5の初めに導入された新しい概念です。実際には構文糖衣です。Javaコードを書くときに少し便利です。一般的なアプリケーションやビジネス開発では、単純に使用するだけでよく、必ずしもそのような操作を使用する必要はありません。ジェネリックスの定義として。ただし、開発ではいくつかの基本的なパブリックコンポーネントが使用されます。この部分は、必要なときに注意深く読むことができます。通常は、単純に使用できます。

19.ラベル

jdk5の後にも導入されました。Springは優れたフレームワークです。XMLは最初から標準の構成ファイルとして使用されていました。ただし、Spring 3以降、特にspring-bootの登場後、xml構成ファイルを単純化するためのアノテーションの使用がますます一般的になっています。開発者にとっては、xml構成の時間を大幅に節約できます。ただし、すべての構成をグローバルに理解して管理できるxmlとは異なり、注釈がさまざまなクラスに分散しているため、すべてのxmlを完全に置き換える方法がないという欠点があります。一般的な開発者の場合は、注釈を使用するだけです。一部の公的機関の開発者は、注釈の定義と実装を理解する必要がある場合があります。必要なときに注意深く見ることができます。

20.RMI

Java言語の独自のリモート呼び出しインターフェースであるRemoteMethodInvocationは、比較的シンプルで使いやすいです。ただし、言語をまたがる必要がある場合は、サポートするためにWebサービスなどの他の方法を使用する必要があります。一般的に、プログラムはRMIを使用する必要はありませんが、特定の状況で使用できます。私はRMIを使用して、プロジェクト内のプログラムのリモート開始と停止を制御しました。

21.JNI

Java Native Interfaceを使用すると、ネイティブインターフェイスメソッドをJavaで呼び出すことができます。これは、通常、C / C ++コードの呼び出しに使用されます。Javaでso / dllファイルをロードする際のパスの問題は、インターフェイス自体を呼び出すのに複雑ではありませんが、必要なローカルインターフェイスライブラリをロードするのに多くの時間がかかることに注意してください。

22.まとめ

上記は、Javaの基本的な知識と技術的なポイントについての私の見解と紹介の一部を簡単に紹介したものです。これらの内容は、長年にわたるJavaの使用の要約の一部から派生しています。 Javaを初めて使用するか、Javaから開発する予定です。人々は、Javaをより効率的に学習して使用し、迂回を避け、貴重な時間を無駄にすることを望んでいる経験があります。コンテンツが完全ではない領域がまだいくつかあります。これは今後の記事で追加される予定です。

個人的な能力が限られているため、もちろんいくつかの間違いや脱落があります。私を訂正し、一緒に話し合い、ゼロファンデーションでJavaを学び、私のJava学習分野に参加することができます

おすすめ

転載: blog.csdn.net/weixin_49794051/article/details/111912753