さわぴかのなんでもノート!

学びのアウトプット!なにについて書くかはわかりません!なんでもノートです!

【今日学んだこと】未経験からエンジニアで転職「3週間目その2」

今日やったこと

  • 【スッキリわかるJava入門 第3版】
  • 【スッキリわかるJava入門実践編 第2版】~410Pまで
  • PCのデータ整理
  • おつかい

できなかったこと

明日やること

  • 本で勉強の続き

今週やること

  • 買ったJavaの本を進める done
  • もう1冊ポチったのでその本も進める
  • javaでの開発の流れを調べる
  • Javaでできてるサービス探してみてみる
  • 必要な機能、要素を書き出す
  • Eclipseの設定いじる、デフォルト少しみづらい

来週やること

めも

Javaのimportについて自分なりに整理 - さわらブログ

Javaのこと

【スッキリわかるJava入門 第3版】

17章、続き

・空文:ここでは何もしない、ということを明示するために使われる。;だけ

・try-with-resources文:tryの直後に丸カッコで囲まれた複数の文を記載することができる

try (closeによる後片付けが必要な変数の宣言) {
  本来の処理
} catch (例外クラス 変数名) {
  例外が発生した場合の処理
}

・例外の伝搬:例外がキャッチされずメソッドの呼び出し元まで処理をたらい回しにされる現象 →スロー宣言をすることで、発生するチェック例外をキャッチせずに呼び出し元へ伝搬できる

アクセス修飾 戻り値 メソッド名(引数リスト) 
  throws 例外クラス1, 例外クラス2, ... {
 メソッドの処理内容
}

スロー宣言をしていれば、try-catchがなくてもコンパイルエラーにならない →呼び出す側のメソッドは例外を伝搬してくる可能性があるメソッド呼び出しをtry-catch文で囲む義務が生まれる

18章

・ストリーム:小川の上流にあるファイルから1文字ずつ流れてくる、ようなイメージの考え方

Java.netパッケージ:同じ機能のプログラムを数行で書くことができる

・DB操作:SQL

・UI、GUI

・アプリ

・Webサーバで動くjavaプログラム

サーブレットJavaを使ってWebアプリケーションを開発する場合に開発するクラス

【スッキリわかるJava入門実践編 第2版】

1章

・文字列を調査、検索する、切り出す、変換するメソッドいっぱい

・文字列の連結:+は遅い

・StringBuilderクラスを使った連結 →appennd()メソッドを読んでバッファに文字列を追加していく →最後に一回だけtoString()を呼び、完成した連結ずみの文字列を取り出す

・メソッドチェーン:自身への参照を返すメソッドを連続して呼び出す方法

・Stringインスタンスが保持する文字列情報は、インスタンス化した際に初期化され、2度と変化することはない →このように設計されたクラスのことを不変であるという

・可変なクラス:StringBuilderやStringBuffer →append()メソッドの呼び出しのたびにnewをすることなく、バッファを拡大しながら新しい文字列を追記していく設計だから早い

正規表現の (.)は任意の一文字であれば良い →J.vaは、1文字目はJで、2文字目はなんでもよくて、3文字目がv、4文字目がaという条件になる

()は直前の文字の0回以上の繰り返し →ABは、1文字目がA、2文字目がB、それ以降はBが何文字でも続いていい(ABBBBとか)

{}は直前の文字の指定回数の繰り返し →HEL{3}Oは、HELLLOになる

は中のどれか1文字 →UR[LIN]は、3文字目がLかIかNであるとなる

のなかに-がある時、その両端にある文字を含む任意の1文字 →[a-z]はaからzまでのどれか1文字

2章、日付と時間の取り扱い

・日付情報を扱うには、java.util.Dateクラスを使う

・LocalDateTimeを利用:日常使う日時情報

・2つの日付の間隔が取れる:Durationクラス、Periodクラス

3章、コレクション

・リスト(list):順序通りに並べて格納する、中身の重複可、ArrayList

・マップ(map):ペアで対応づけて格納する、HashMap、キーと値の終え後して格納する、キーの重複は許されない

・セット(set):順序があるとは限らない、中身の重複不可、HashSet、重複が許されない、基本的に順序関係がない

それぞれにAPIが準備されている→コレクションフレームワークという

・コレクションにできないこと →インスタンスでないものは格納できない

ArrayListを使って、それを取り出す方法 →for文、拡張for文、イテレータ

・LinkedList:要素の挿入や削除が簡単。get()メソッドを使った要素の取り出しが苦手。箱に番号がついてない

ArrayListもLinkedListもListインタフェースを実装している

・格納したいデータがペアの集まり→Map
・格納したいデータがペアの集まりではないandデータの重複がありえない→Set
・格納したいデータがペアの集まりではないandデータの重複がありえる→List

4章、インスタンスの基本操作

Javaのクラスは、継承関係を親へと辿っていくとObjectクラスに行き着く →全クラスがObjectクラスで定義されたメソッドを持っていることが保証される →Object型変数にはあらゆるインスタンスを代入可能である

・5大基本操作 →toString():文字列表現を得る、Objectクラス →equals():等価判定を行う、Objectクラス →hashCode():ハッシュ値を得る、Objectクラス →compareTo():大小関係を判定する、Comparableクラス →clone():複製する、Objectクラス、Cloneableクラス

・クラスを作ったら必ずequals()をオーバーライドする →オーバーライドが不要なクラス:処理ロジックを持っているクラス、親クラスですでにオーバーライドされていてそのロジックで問題ないクラス

・equals()による等価判定には比較的大きな計算コスト(時間)がかかる

5章、様々な種類のクラス

ジェネリクスgenerics):で宣言されたクラスは<~>記法を利用できる、総称型、テンプレートと言われることも

・列挙型:enumを使うことでインスタンスを列挙した集合を定義できる、switchの分岐に利用できる

・インナークラス:クラス内部に定義できるインナークラスは「メンバクラス」「ローカルクラス」「匿名クラス」の3種類がある

6章、ラムダ式と関数オブジェクト

・関数とメソッドの違い →メソッドはクラスに属する一種の関数、関数にとって名前は重要ではない、必須でもない

ラムダ式の構文

(型 引数名 1, 型 引数名2, ...) -> {
  処理1;
  処理2;
..
  return 戻り値;
}

ラムダ式を用いることで、関数の実態をプログラム実行中に生成できる

・Stream API

7章、JIM制御とリフレクション

JVMに対する制御

・リフレクション

8章、非標準ライブラリの活用

・ライブラリ:第三者が作成したクラスファイルを集めたもの、通常JARファイルの形式で提供される、これを利用するにはJARファイルをクラスパスに含めなければならない

・代表的なライブラリ →Apacheプロジェクト、commons-langはJava言語の基本機能を強化する様々なクラスを備えている、SLF4Jは「他のライブラリを利用するライブラリ」

オープンソースとライセンス

2部、9章、ファイルの操作

・ファイルの読み書き方法 →ランダムアクセスとシーケンシャルアクセスがある。大量のデータを高速で扱えるのは後者

・ファイルに文字情報を書き込む→Java.ioパッケージのFileWriterクラスを利用する

・読み込み→FileReaderクラス

・バイナリファイルにバイト列を書き込むために、FileOutputStreamクラス

・読み込むのにFileInputSteamクラス

10章、様々なファイル形式

・データフォーマット:複数のデータをどのような形式、順序で保存するかということを定めたルール

・ファイルフォーマット:ファイル内のデータ構造を規定するもの

・メッセージフォーマット(電文フォーマット):ネットワーク経由で伝送されるひとかたまりのメッセージのデータ構造を規定するもの

XML(eXtensible Markup Language):タグとyバレる不等号記号で囲まれたラベルの中にデータを記述するフォーマット、親子関係の構造にすることもできる

・JAXP(Java API for XML Processing):XML形式のファイルを操作するためのAPI

・直列化機構:インスタンスを丸ごと保存できる、クラス設計の変化に備えるために、シリアルバージョンUIDの宣言を行う。

11章、ネットワーク通信

Java.net.URLクラス:アクセスしたい情報のURLがわかれば、コンテンツの取得ができる →URLクラスをインスタンス化(new)する →openStream()を呼び出して、データを取り出すストリームを取得する →read()を呼び出して、ストリームから1バイトずつ情報を取り出す

プロトコル:通信手順のルールのこと

TCP/IP:インターネットで使われているプロトコル

11章は改めてちゃんと読む

12章、データベースアクセス

JDBCJava DataBase Connectivity):Javaのデータベース操作専用のAPI

主に使われるクラス名 ・DriverManager:DBMSへの接続準備のために ・Connection:DBMSへの接続や切断の際に ・PreparedStatement:SQL文を送信する際に ・ResultSet:DBMSから検索結果を受け取る際に利用する

ここも改めてちゃんと読む

3部、13章、基本的な開発ツール

javadocツール:作成済みのプログラムのソースコードから簡単にプログラム仕様書を自動で生成できる

アノテーション:この部分は警告を出さなくて良いという指示をソースコードないいん記述すること、@から始まる記述

・@SuppressWarnings:一定の種類の警告を行わないように指示する

・@Override:そのメソッドが親クラスの同名のメソッドをオーバーライドすることを明示的に宣言できる

・@Deprecated:あるクラスに手を加えてより良いクラスを作成した結果、古い方のクラスを使って欲しくない時などに記述

・native2asciiツール:ASCⅡ文字をUnicodeエスケープ形式に変換するツール

・JAR(Java Archive):ファイル一式を一つにまとめるアーカイブ形式

マニフェストファイル:アーカイブ内に含まれる様々なファイルに関する追加情報を記述したもの

JVM(Java Vitual Machine):クラスファイルに含まれるバイトコードをCPUが実行できるマシン語に逐次変換することでプログラムが実行される

3部、14章、単体テストアサーション

・スコープ:開発すべき機能の範囲のこと、プロフェクトの専門用語 →期待されるスコープと品質の両方を満たして、かつ時間内にできて初めて完成する、

単体テスト(UT:Unit Test):一つの部品をテストする

結合テスト(IT:Integration Test):単体テスト済みの部品を複数繋いでテストする

・総合テスト(ST:System Test):結合テスト済みの全部品を繋いでテストする

単体テストのやり方 →テストしたい対象のクラスを動かすためだけに作るクラスをテストクラス、テストドライバという → 続きは明日

??ってなったところ

【スッキリわかるJava入門 第3版】

・P209~

JDKがつまりどれのことなのかわかってない

・javac

・6章だいたいわかってない


8章 ・インスタンスを型に入れて名前つけて作ると、たくさん作れば作るほど名前は増えるってことなら、ポケモンとかってなんて名前がついてるんだろう

11章以降は飛ばし気味、また戻ってくる ・インタフェースがビミョい

staticの付け所

Java正規表現

15章、16章は使う時にまた戻ってきて確認する。時間のところあたりとか

16章もめっちゃさらっと流し見

17章はなんとなくわかるけどちゃんと戻ってくる


18章 ・UI、GUIあたり、書いてみたけどいまいち動かない、importができなかった

【スッキリわかるJava入門実践編 第2版】

5章 ジェネリクス

紹介ばっかりで面白くない、使いたいときに辞書として戻ってこよ

6章 ・Stream API

11章は改めてちゃんと読む