System.out.println("Java学習中");

【Java / Spring Boot】UI/UXの視点を活かしたバックエンド開発の学習ポートフォリオ

【Java Silver対策】型変換とエラー⚠️Java Silver対策で学んだ3つの重要ポイント

🟢 はじめに

Javaの勉強をしていると、「あれ?なんでこれエラーになるの?」と首を傾げたくなる場面があると思います。

特にJava Silverなどの資格試験では、「文法チェックではじかれるエラーコンパイルエラー)」と、「動かした後に爆発するエラー実行時エラー)」の引っかけ問題がよく出題されると言われています。

今回は、私がJava学習中に「なるほど!」と腑に落ちた、3つの重要なポイントを例え話を交えて解説したいと思います。


1. 文字列専用の翻訳ロボットに「本物の数字」を渡してはいけない

Javaには、文字を数字に変換してくれる便利なメソッドがたくさんあります。

その一つが Double.parseDouble() です。

まずは、以下のコードを見てみてください。

どこが間違っているでしょうか?

// ❌ コンパイルエラーになるコード
double weight = Double.parseDouble(65.5);

一見すると、「65.5という数字をdouble型(小数)の変数に入れているだけ」に見えますよね。

でも、これはコンパイルエラー文法エラー)になって、実行すらできません!

🤔 なぜエラーになるのか?

Double.parseDouble() という命令は、「文字列Stringのデータ」を受け取って「小数doubleのデータ」に変換するための専用ツールだからです。

正しい使い方: Double.parseDouble("65.5");"で囲んで文字列として渡す)

間違った使い方: Double.parseDouble(65.5);小数の数値を直接渡す)

☕️ 例え話: このメソッドを「文字で書かれた数字」を「計算用の本物の数字」に翻訳してくれる専用ロボットだと想像してみてください。

最初から「本物の数字65.5)」を渡してしまうと、ロボットは「私は文字のメモ用紙しか受け取れない設定ですこれは処理できません!」とパニックを起こして停止してしまいます。


2. 恐怖の「実行時エラー」!文法は合っているのに動かない罠

次は、文字列の中から特定の文字を取り出す charAt() メソッドの罠です。

以下のコードは、コンパイルエラーになるでしょうか?

// ⚠️ コンパイルエラーにはならないが、実行するとエラーになるコード
String petName = "Cat";
char initial = petName.charAt(5);

実はこれ、コンパイル文法チェック)は無事に通過してしまいます。

しかし、いざプログラムを実行すると StringIndexOutOfBoundsException というエラーを吐いて強制終了します(これが実行時エラーです)。

🤔 なぜコンパイルエラーにならないのか?

charAt(5) は「5番目(※0から数えるので実質6文字目の文字を取り出してね」という命令です。

"Cat"3文字しかありません。

☕️ 例え話: レストランでメニューを見ながら「裏メニューの5番目を持ってきて」と注文する状況を想像してみてください。

注文すること」自体は日本語の文法として間違っていないので、店員さんは注文を受け付けます(=コンパイル通過)。

しかし、いざ厨房に行って確認すると「うちのメニュー3番目までしかないよ!」とパニックになり、料理は出てきません(=実行時エラー)。


3. 意外と優しい?大文字・小文字を気にしない変換メソッド

最後に、文字列booleantruefalse)に変換する Boolean.parseBoolean() メソッドの面白い性質を紹介します。

// 正しく変換されるコード
boolean isOk = Boolean.parseBoolean("TrUe");
System.out.println(isOk); // 結果は true と表示される

文字列"TrUe" と、大文字小文字がぐちゃぐちゃに混ざっていますよね。

普通ならエラーになりそうですが、実はこれ、正常に true に変換されます。

🤔 なぜちゃんと変換されるのか?

parseBoolean メソッドは、受け取った文字列が「true大文字小文字問わず)」であれば true を返し、それ以外の文字列(例えば "false""cat" など)はすべて false を返すという、とても寛容な性質を持っています。

☕️ 例え話: イベント会場の受付スタッフを想像してみてください。

参加証に「TRUE」「true」「TrUe」とどんな書き方で書かれていても、「あ、これはTrueさんですね、どうぞ!」と柔軟に笑顔で通してくれる、とても優しいスタッフです。

Javaの文法チェッカー(コンパイラ)は、「Stringに対してcharAtを使うのは文法的にOK!」と判断しますが、中身の文字数までは動かしてみるまで確認しません。


📝 まとめ

  • Double.parseDouble() には、必ず "文字列" を渡すこと!

  • charAt()存在しない文字数を指定すると、コンパイルは通るのに "実行時エラー" になるので注意!

  • Boolean.parseBoolean("tRUE") は、大文字小文字を無視して "true" に変換してくれる!

Java Silverの試験では、この「コンパイルエラー」か「実行時エラー」かを見極めることが重要だと言われています。

Java学習中の方の参考になれば幸いです🙌


【プロフィール・作品置き場】

kenichikamoi.com


🎵 Youtube(楽曲一覧)はこちら

www.youtube.com