Java

スポンサーリンク
Java

Java | Java 標準ライブラリ:Map / HashMap

Map / HashMap をざっくりイメージするまず「Map って何者?」からいきます。Map は「キー(key)と値(value)のペアを管理する入れ物」です。電話帳をイメージすると分かりやすいで...
Java

Java | Java 標準ライブラリ:TreeSet

TreeSet をざっくりイメージするまず全体像からいきます。TreeSet は「重複を許さない集合(Set)でありつつ、 中身を“常にソートされた順番”で持ってくれるクラス」です。前回の HashS...
Java

Java | Java 標準ライブラリ:Set / HashSet

Set / HashSet をざっくりイメージするまず感覚からいきます。List は「順番がある・重複を許す」コレクションでした。それに対して Set は、「順番は気にしない」「同じ要素を二度入れない...
Java

Java | Java 標準ライブラリ:LinkedList

LinkedList をざっくりイメージするまず感覚からいきます。ArrayList は「配列ベースで、連番の棚がズラッと並んでいるストレージ」です。それに対して LinkedList は、「前後の箱...
Java

Java | Java 標準ライブラリ:List / ArrayList

List と ArrayList をざっくりイメージするまずイメージからいきます。配列 int[] は「長さが固定の箱の列」でした。一方で List / ArrayList は「あとから増やしたり減ら...
Java

Java | Java 標準ライブラリ:Collections クラス

Collections クラスの全体像をざっくりつかむjava.util.Collections は、「List や Map など“コレクション”を扱うときの便利メソッドを集めたユーティリティクラス」...
Java

Java | Java 標準ライブラリ:Arrays.equals

Arrays.equals の役割をざっくりつかむjava.util.Arrays.equals は、「配列同士が “中身まで含めて” 同じかどうかをチェックするメソッド」です。ここでまず押さえたいの...
Java

Java | Java 標準ライブラリ:Arrays.copyOf

Arrays.copyOf の「役割」をざっくりつかむjava.util.Arrays.copyOf は、「今ある配列をもとに、“新しい配列”を作るためのコピー専用メソッド」です。ポイントは次の二つで...
Java

Java | Java 標準ライブラリ:Arrays.sort

Arrays.sort の役割をざっくりつかむArrays.sort は「配列を並び替えるための標準メソッド」です。int などの配列を、昇順(小さい順・辞書順)に一発で整列してくれます。自分でソート...
Java

Java | Java 標準ライブラリ:Arrays クラス

Arrays クラスの全体像をざっくりつかむjava.util.Arrays は、「配列を扱うときの“便利道具”をまとめたユーティリティクラス」です。配列は int などのあれです。配列を文字列として...
Java

Java | Java 標準ライブラリ:SecureRandom

SecureRandom は「セキュリティ用の本気の乱数生成器」java.security.SecureRandom は、一言でいうと「パスワード・トークン・認証コードなど、“セキュリティが絡む場面専...
Java

Java | Java 標準ライブラリ:Random

Random クラスの全体像をまずつかむjava.util.Random は、「それっぽくランダムな値をくれる“乱数生成器”のクラス」です。ゲームでダメージ値をランダムにしたいガチャの結果をランダムに...
Java

Java | Java 標準ライブラリ:BigDecimal の丸めモード

なぜ BigDecimal に「丸めモード」が必要なのか(全体像)BigDecimal は「小数を誤差なく扱う」ためのクラスですが、もう一つ大事なテーマがあります。「小数をどこかで“切り捨て・切り上げ...
Java

Java | Java 標準ライブラリ:BigDecimal の加算減算

なぜ BigDecimal の「加算・減算」が特別なのか(全体像)BigDecimal は「お金など誤差が許されない小数」を扱うためのクラスでしたね。その代わり、+ や - の演算子は使えません。+ ...
Java

Java | Java 標準ライブラリ:BigDecimal 比較(compareTo)

BigDecimal の「比較」がややこしく感じる理由BigDecimal を使い始めると、ほぼ必ずこう思います。「== じゃダメなのは分かるとして、equals と compareTo って何が違う...
Java

Java | Java 標準ライブラリ:BigDecimal の必要性

なぜ BigDecimal が「わざわざ」必要になるのか(全体像)BigDecimal は、ざっくり言うと「お金や桁数が重要な数値を、ちゃんと正確に扱うためのクラス」です。初心者が最初にハマるポイント...
Java

Java | Java 標準ライブラリ:Math クラス

Math クラスの全体像を直感でつかむjava.lang.Math は、「よく使う数学系の処理をまとめてくれている“道具箱”」です。わざわざ自分で実装しなくていいように、基本的な計算用メソッドが一式そ...
Java

Java | Java 標準ライブラリ:NumberFormatException

NumberFormatException は「数字に変換できなかったときの例外」NumberFormatException は、ざっくり言うと「文字列を数字に変換しようとしたけど、数字としておかしい...
Java

Java | Java 標準ライブラリ:Integer キャッシュ

Integer キャッシュってそもそも何かInteger キャッシュ は、Java が「よく使われる小さい整数については、Integer オブジェクトを使い回す」という最適化の仕組みです。もっとざっく...
Java

Java | Java 標準ライブラリ:auto-unboxing

auto-unboxing は「ラッパークラスから中身を自動で取り出す仕組み」まず前提から整理します。Java には、値そのものの 基本型(プリミティブ型) とそれをオブジェクトとして包んだ ラッパー...
Java

Java | Java 標準ライブラリ:auto-boxing

auto-boxing は「基本型 ↔ ラッパー型の自動変換」まず前提として、Java には基本型(プリミティブ型)int, long, double, boolean, char などラッパークラス...
Java

Java | Java 標準ライブラリ:ラッパークラス全体像

ラッパークラスとは何かをざっくりつかむJava の「ラッパークラス」は、int や double のような プリミティブ型(基本型)を “オブジェクトとして包んだクラス” です。対応はこうなっています...
Java

Java | Java 標準ライブラリ:Optional.ifPresent

ifPresent は「値があるときだけ処理するためのスイッチ」Optional.ifPresent は、「Optional の中に値が“入っているときだけ” この処理を実行してね」と言うためのメソッ...
Java

Java | Java 標準ライブラリ:Optional.orElse / orElseGet

Optional.orElse / orElseGet は「無いときどうするかを決めるメソッド」Optional は「あるかもしれないし、ないかもしれない値」を入れる箱でした。では、その箱が「空だった...
Java

Java | Java 標準ライブラリ:Optional.of / ofNullable

Optional.of / ofNullable の役割をざっくりつかむOptional を「値を入れる箱」と考えると、Optional.of と Optional.ofNullable は「箱に値を...
Java

Java | Java 標準ライブラリ:Optional の目的

Optional は「null をそのまま渡さないための箱」java.util.Optional は、簡単に言うと「あるかもしれないし、ないかもしれない値」を入れて渡すための“箱”です。それだけ聞くと...
Java

Java | Java 標準ライブラリ:文字コード(Charset)

文字コードと Charset を直感でつかむまず前提から整理します。コンピュータの中では、文字は「バイト列(0と1の並び)」として保存・送信されます。一方、Java の String は「文字そのもの...
Java

Java | Java 標準ライブラリ:split の落とし穴

split は「正規表現で区切る」メソッドだという前提String#split は、 「文字列を区切り文字で分割する」メソッド ですが、まず一番大事なポイントは「引数は“ただの区切り文字”ではなく、“...
Java

Java | Java 標準ライブラリ:Matcher の使い方

Matcher は「正規表現パターンを文字列に当てていく実行役」前回の Pattern の話とつなげると、役割分担はこうです。Pattern「正規表現(パターン)そのもの」を表す。何度も使い回せる“型...
Java

Java | Java 標準ライブラリ:正規表現(Pattern)

正規表現と Pattern クラスの関係をざっくりつかむ「正規表現(regex)」は、「文字列の **“パターン” を言葉で書くための小さな言語」だと思ってください。「数字3桁‐数字4桁の電話番号」「...
Java

Java | Java 標準ライブラリ:文字列比較の正解

なぜ「文字列比較」はつまずきポイントなのかJava 初心者がほぼ確実に一度はハマるのが、文字列比較でのミスです。見た目は同じ "abc" なのに、なぜか比較結果が false になる、if が通らない...
Java

Java | Java 標準ライブラリ:文字列結合のパフォーマンス

なぜ「文字列結合のパフォーマンス」を気にする必要があるのかJava では文字列を扱う機会がとても多いです。ログ、SQL の組み立て、メッセージ生成、CSV 出力など、気づけばどこも文字列だらけになりま...
Java

Java | Java 標準ライブラリ:StringBuffer

StringBuffer はどんなクラスか(まず全体像)StringBuffer は、ざっくり言うと「中身を書き換えられる文字列バッファ」「スレッドセーフな StringBuilder」です。役割自体...
Java

Java | Java 標準ライブラリ:StringBuilder

なぜ StringBuilder が必要になるのかまず前提として、String は「イミュータブル(不変)」です。一度作られた String の中身は絶対に変わりません。その結果、こういうコードを書く...
Java

Java | Java 標準ライブラリ:String のイミュータブル性

「イミュータブル」ってそもそも何?まず言葉から整理します。「イミュータブル(immutable)」は「不変」という意味です。Java の String はイミュータブルなので、一度作られた Strin...
Java

Java | Java 標準ライブラリ:String クラスの特性

String クラスは「特別扱い」されているクラスString は、Java で文字列を扱うためのクラスです。でも、ただのクラスではなく「言語レベルで特別扱い」されている存在です。ダブルクォーテーショ...
Java

Java | Java 標準ライブラリ:clone の注意点

まず「clone は基本おすすめされない」という前提からいきなり結論から言うと、Object#clone() は「あるけど、できれば使わない方がいい API」です。理由はシンプルで、挙動が分かりにくい...
Java

Java | Java 標準ライブラリ:getClass

getClass は「そのオブジェクトの正体を教えてくれるメソッド」getClass() は、Object クラスが持っているメソッドで、「このオブジェクトは、実際にはどのクラスのインスタンスなのか」...
Java

Java | Java 標準ライブラリ:hashCode 契約

hashCode 契約って何のこと?hashCode() は「オブジェクトを、整数の“番号”に変換するメソッド」です。主に HashMap や HashSet などの「ハッシュを使うコレクション」で使...
Java

Java | Java 標準ライブラリ:equals の正しい使い方

equals は「同じインスタンスか?」ではなく「意味として同じか?」を見るequals は「この2つのオブジェクトは“意味として”同じものと言えるか?」を判定するメソッドです。ここでまず大事なのが=...
Java

Java | Java 標準ライブラリ:toString の使いどころ

toString は「中身を一瞬で覗くための窓」toString() は「このオブジェクトを、人間にとって読みやすい文字列にするとしたら、どう表現するか?」を返すメソッドです。System.out.p...
Java

Java | Java 標準ライブラリ:Object クラスの役割

Object クラスってそもそも何者かjava.lang.Object は「Java に登場するすべてのクラスの“ご先祖さま”」です。あなたがこう書いたクラスもpublic class User {}...
Java

Java | Java 標準ライブラリ:java.lang パッケージ概要

java.lang パッケージとは何かjava.lang は、「Java でプログラムを書くときに、ほぼ必ず使う“基本中の基本”がまとまったパッケージ」です。特徴としてimport を書かなくても、勝...
Java

Java | オブジェクト指向:小規模アプリの設計演習

この演習で目指すことここでは「小さいアプリ」を題材にしながら、オブジェクト指向でどう設計していくかを、最初から最後まで追体験してもらいます。難しいフレームワークは使いません。シンプルな Java のク...
Java

Java | オブジェクト指向:実務でよくある設計ミス

実務でよくある「設計ミス」とは何か実務でよく見る設計ミスは、「一発でシステムが壊れるような爆発」ではなく、最初は普通に動くけれど、時間が経つほどコードが重く・遅く・触りたくなくなっていく、そんなタイプ...
Java

Java | オブジェクト指向:オブジェクト指向的リファクタリング

オブジェクト指向的リファクタリングとは何かリファクタリング自体は「外から見た動きを変えずに、コードの中身(設計・構造)だけを良くしていく作業」です。オブジェクト指向的リファクタリングというときは、単に...
Java

Java | オブジェクト指向:パッケージ命名規則

パッケージ命名規則って何のためにあるのかパッケージ名は「このコードはどこの誰が書いた、何のグループなのか」を表すラベルです。クラス名が「1人の役者の名前」だとしたら、パッケージ名は「その人が所属してい...
Java

Java | オブジェクト指向:メソッド名の付け方

なぜメソッド名がそんなに大事なのかメソッド名は「このメソッドが何をするか」を一言で表すラベルです。ここが雑だと、コードを読むたびに「これ何してるんだっけ?」と中身を開いて確認する羽目になります。逆に、...
Java

Java | オブジェクト指向:クラス名の付け方

クラス名をつける前に知っておきたいことクラス名は、「このクラスは何者か」を一言で説明するラベルです。クラス名だけで、そのクラスの役割や意味がある程度イメージできるのが理想です。逆に言うと、クラス名があ...
Java

Java | オブジェクト指向:命名の重要性

なぜ命名がそんなに重要なのか命名は、プログラムの「言葉」です。コードは機械のためのものに見えて、実際には「人間が読む時間」の方が圧倒的に長いです。だから、変数名・メソッド名・クラス名は、そのまま「設計...
Java

Java | オブジェクト指向:モックしやすい設計

「モックしやすい設計」とは何かモックしやすい設計は「テストのときに、本物の代わりの“ニセモノ(モック)”を簡単に差し込める設計」のことです。たとえば、実際にはメールを送らずに「メール送信が呼ばれたかだ...
Java

Java | オブジェクト指向:テストしやすい設計

「テストしやすい設計」とは何かテストしやすい設計は「そのクラスやメソッドを、単体でサクッと動かして結果を確認できる設計」のことです。もっと言うと、テストを書くために余計な準備がいらないテストしたい部分...
Java

Java | オブジェクト指向:再利用しやすいクラス設計

「再利用しやすいクラス」とは何か再利用しやすいクラスは「別の場面・別のプロジェクトでも、ほとんどそのまま使えるクラス」です。もう少し噛み砕くと、特定の画面・特定の DB・特定のフレームワークにベッタリ...
Java

Java | オブジェクト指向:public フィールドの問題

public フィールドがなぜ問題になるのかpublic フィールドは「この変数は、どこからでも読み書きしていいです」と世界中に宣言しているのと同じです。一見「楽」「コードが短い」で済みますが、その代...
Java

Java | オブジェクト指向:可視性を最小にする

可視性を最小にするとは何か「可視性を最小にする」は、クラス・フィールド・メソッドのアクセス範囲(public / protected / なし / private)を「必要な場所にだけ見えるよう、でき...
Java

Java | オブジェクト指向:defensive copy

defensive copy とは何かdefensive copy(防御的コピー)は「オブジェクトの中身を、外から勝手に壊されないように、防御のためにコピーを取るテクニック」のことです。特に List...
Java

Java | オブジェクト指向:コレクションをフィールドに持つ設計

「コレクションをフィールドに持つ」とは何を意味するかコレクションをフィールドに持つ設計というのは、クラスの中に List や Set、Map などを「メンバー」として抱える設計のことです。例えば、注文...
Java

Java | オブジェクト指向:値オブジェクトの比較

値オブジェクトの「比較」とは何を意味するか値オブジェクトは「中身の値が同じなら、同じものとして扱うクラス」です。お金 1000円、メールアドレス x@example.com、日付 2025-01-01...
Java

Java | オブジェクト指向:Entity の同一性

Entity の「同一性」とは何かEntity の同一性とは「そのオブジェクトが“誰なのか”を決める軸」のことです。もっと噛み砕くと、・中身(名前や住所)が変わっても「同じ人」として扱いたいもの・「同...
Java

Java | オブジェクト指向:DTO と Entity の違い

DTO と Entity は「役割」がまったく違うDTO と Entity は、どっちも「フィールドを持ったクラス」なので見た目が似ていますが、役割がまったく違います。DTO(Data Transfe...
スポンサーリンク