SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Android開発のためのJava SE再入門

java.langパッケージとグラフィックの基本処理

Android開発のためのJava SE再入門(4)

  • X ポスト
  • このエントリーをはてなブックマークに追加

基本数値演算

 Mathクラスは、指数関数、三角関数などの基本的な数値演算を提供しています。Androidであっても同様です。このクラスのメソッドも、Systemクラス同様、staticで定義されているため、インスタンスを生成することなく使用可能です。

Staticインポート

 Mathクラスや前述のSystemクラスなどのstaticメンバにアクセスするには、たとえば次のように、そのメンバのクラスから記述する必要があります。

double r1 = Math.toRadians(30); // 30°をラジアンに変換
double r2 = Math.PI/6;          // 30°をラジアンに変換( (30°/ 360°) × 2π )
double x = 10 * Math.cos(r1);   // コサイン
double y = 10 * Math.sin(r2);   // サイン

 J2SE 5.0で導入されたstaticインポートという機能を利用すると、staticな定数やメソッドをクラスをつけずに直接参照することができます。この機能は、クラス名の指定が長い、頻繁に利用するといったケースで便利です。たとえば、次のような記述が可能です。

import static java.lang.Math.PI;
import static java.lang.Math.cos;

public class Sample {
    double r1 = PI/6;
    double x = 10 * cos(r1);
    ...
}

 「import static java.lang.Math.*」とすれば、そのクラスのメンバをまとめて宣言することもできます。ただし、その場合は、どのクラスのメンバなのかわかりにくくなるため、できるだけ個別にインポートするほうがよいでしょう。

文字列操作

 Stringクラスは、もっともおなじみといってもよい文字列のクラスです。文字列の比較、検索、部分文字列の取得、大文字/小文字変換、文字列コピーなどを行うメソッドが用意されています。

 StringBuffer、StringBuilderは、可変の文字列を扱う文字列バッファのクラスです。文字列の追加(append)や挿入(insert)といったメソッドがあります。

 じつはStringクラスは、固定の文字列しか扱えず、+演算で連結する場合などは、内部的にStringBuilderやStringBufferのappendメソッドを使ったコードに変換されています。

StringBuilderとStringBufferの違い

 StringBuilderクラスは、Java SE 5.0で導入されたクラスで、機能はStringBufferクラスと変わりありません。異なるのは、StringBufferがスレッドセーフ(複数のスレッドが同時に実行しても問題が発生しない)に対して、StringBuilderはそうではない、という点です。スレッドを考慮しない分、StringBuilderのほうがメソッドの処理が高速になっています。そのため、スレッドを気にする必要がないケースでは、より速いStringBuilderクラスを使用するよう推奨されています。

 なおスレッドについては、後半でまた説明することにします。

ラッパークラス

 ラッパークラスとは、基本データ型(プリミティブ型)の変数やリテラルを、オブジェクトとして扱うためのクラスです。おもにデータの型を変換する場合に利用します。

基本データ型とラッパークラスの対応
基本データ型 ラッパークラス
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double

オートボクシング/アンボクシング

 Java SE 5.0から、基本データ型から自動的にオブジェクトに変換するオートボクシングと、反対にオブジェクトから基本データ型の変数に自動的に変換する自動アンボクシングの機能が導入されました(ラッパークラスのオブジェクトと基本データ型変数との暗黙の型変換)。そのため、明示的な型変換の記述は不要になりました。

 たとえば、コレクションクラスはオブジェクトしか登録できないため、基本データ型の変数をコレクションに登録/参照するには、従来は明示的な型変換が必要でした。AndroidのJavaでは、次のように省略した書き方が可能です。

List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(5));
list.add(5);                     // オートボクシングにより上と同じ
int a = list.get(0).intValue();
int b = list.get(0);             // アンボクシング

 なお、コレクションクラスについては、次回に説明する予定です。

次のページ
例外処理

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Android開発のためのJava SE再入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6078 2011/08/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング