続いて、指数関数、対数関数、平方根、および三角関数といった基本的な数値処理を実行するためのメソッドを含んでいるjava.lang.Mathクラスを見ていきます。
java.lang.Math#maxは、与えられた値のうち大きい方の値を返します。数学的な目的以外にも、処理の流れの中で2つの数値のうち大きい方の値を取得したい場合にも使われます。
java.lang.Math#minは、与えられた値のうち小さい方の値を返します。処理の流れの中で2つの数値のうち小さい方の値を取得したい場合に使われます。
java.lang.Math#absは与えられた値の絶対値を返します。与えられた値が負の値である場合に、正と負を逆にした値(マイナスを取り除いた値)が返されます。
java.lang.Math#powは1番目のパラメータで与えた値を、2番目のパラメータで与えた値で累乗した結果の値を返します。なお、powメソッドはパラメータとしてdouble型を与えるようになっています。
例えば、3の4乗を求めるには、下記PowSample.javaの(6)ように記載します。下記ソースコードを実行してみましょう。
PowSample.java | |
|
これ以外にも、数学的なメソッドが多数あります。数学が苦手でない人は、いろいろ試してみましょう。
ここまで、数に関するさまざまな型やクラスを説明してきました。では、これらプリミティブ型と参照型を、あるいはさまざまな数値型を、どのように使い分けるのでしょうか?
最初に利用を検討する型は、プリミティブ型でしょう。四則演算から繰り返しの際のループ変数など、幅広い用途において利用されます。
プリミティブ型のうちのいくつかは、多くのJava仮想マシンにおいて高速に計算できます。これは、Java仮想マシンの実装次第というところもあるのですが、プログラミング言語上の型が、実際のコンピュータ上のCPUが取り扱うことができる型に、直接対応付けられていることが多いためです。
では、参照型は不要でしょうか?
確かに、プリミティブ型と参照型の間の相互変換はプログラム上の記述が面倒なうえ、性能劣化の一因になることもあるので、なるべく避けておきたいところです。しかし、プログラムの中でいずれか一方に統一してしまいたいと思っても、現実的には、単純に統一できないことが多いです。むしろ、無理に統一しようとすると、思わぬ弊害を引き起こすことがあります。
このように、「数値型をどのように使い分けるか?」は意外に難しい問題です。このため、対象とする目的によって型を使い分ける、という視点が必要になります。私たちプログラマーは、実現しようとする目的に応じて、数を扱うための型を、例えば、次のように変えていきます。
いずれにしても、最終的にはプログラミングを行うチームでの規約やプログラマーとしての自身の経験などといったものから、総合的に型の適切な使い分けを判断していくしかないものと考えます。
次回は、時間や日付けの常識についてです。java.util.Calendarクラス、java.util.GregorianCalendarクラス、java.util.Dateクラスなどを使って、プログラム上の時間の概念について学んでいきましょう。
参考文献
▼『Java言語仕様 第3版』 ピアソンエデュケーション
▼『Javaプログラミング アプリケーション編 ステップアップラーニング』 技術評論社
blanco Framework(コミッタ)
伊賀 敏樹(いが としき)
ハンドル:いがぴょん
1968年生まれ。現在、NTTデータ ビジネスブレインズ 第一SI事業部 ソリューショングループ所属。システム開発の技術支援などに従事する。仕事におけるJava言語とのかかわりは1998年から。 現在 blanco Frameworkというオープンソースによるソースコード自動生成タイプの開発フレームワーク提供に取り組んでいる。 趣味はヴァイオリン演奏。アマチュアオーケストラで演奏することもある。
ホームページ
いがぴょんの日記ウェブページv2(1996年から続けているWeb日記)
主な著書
「やさしく学ぶ基礎からのJDBC」
「Javaプログラミング[アプリケーション編]ステップアップラーニング」
Copyright © ITmedia, Inc. All Rights Reserved.