11.Number | |
Numberクラスは数値を表すクラス(Byte,Short,Integer,Long,Integer,BigDecimal,BigInteger)の親クラスである。その名の通り数値を具象化するクラスで、他の数値の型に変換したり、文字列に変換したりする機能が備わっている。 |
|
import java.lang.Number |
|
コンストラクタ | |
Number() 抽象クラスなので、実際にインスタンスは作れない。 |
|
メソッド | |
byte | byteValue() byte型に変換します。場合によって丸め込まれたり切り捨てられたりすることもある。 |
short | shortValue() short型に変換する。場合によって丸め込まれたり切り捨てられたりすることもある。 |
int | intValue() int型に変換する。場合によって丸め込まれたり切り捨てられたりすることもある。 |
long | longValue() long型に変換する。場合によって丸め込まれたり切り捨てられたりすることもある。 |
float | floatValue() float型に変換する。場合によって丸め込まれることもある。 |
double | doubleValue() double型に変換する。場合によって丸め込まれることもある。 |
Author: switch over
A big outdoor sports lover & A IT engineer.
14.有用クラス -1.Math
14章 有用クラス |
1.Math | |
import java.lang.Math |
|
メンバー変数 | |
static double | E 自然対数の底 e にもっとも近い double 値 |
static double | PI 円周とその直径の比 pi にもっとも近い double 値 |
メソッド | |
static double | abs(double a) double 値の絶対値を返す |
static float | abs(float a) float 値の絶対値を返す |
static int | abs(int a) int 値の絶対値を返す |
static long | abs(long a) long 値の絶対値を返す |
static double | acos(double a) 指定された角度の逆余弦 (アークコサイン) を、0.0 〜 pi の範囲で返す |
static double | asin(double a) 指定された角度の逆正弦 (アークサイン) を、-pi/2 〜 pi/2 の範囲で返す |
static double | atan(double a) 指定された角度の逆正接 (アークタンジェント) を、-pi/2 〜 pi/2 の範囲で返す |
static double | atan2(double y, double x) 直交座標 (x, y) を極座標 (r, theta) に変換する |
static double | ceil(double a) 引数の値以上で、計算上の整数と等しい、最小の (負の無限大にもっとも近い) double 値を返す |
static double | cos(double a) 指定された角度(ラジアン)の余弦 (コサイン) を返す |
static double | exp(double a) オイラー数 e を double 値で累乗した値を返す |
static double | floor(double a) 引数の値以下で、計算上の整数と等しい、最大の (無限大にもっとも近い) double 値を返す |
static double | log(double a) 指定されたdouble値の自然対数値(底は e)を返す |
static double | max(double a, double b) 2つのdouble値のうち大きい方を返す |
static float | max(float a, float b) 2つのfloat値のうち大きい方を返す |
static int | max(int a, int b) 2つのint値のうち大きい方を返す |
static long | max(long a, long b) 2つのlong値のうち大きい方を返す |
static double | min(double a, double b) 2つのdouble値のうち小さい方を返す |
static float | min(float a, float b) 2 つの float 値のうち小さい方を返す |
static int | min(int a, int b) 2つのint値のうち小さい方を返す |
static long | min(long a, long b) 2つのlong値のうち小さい方を返す |
static double | pow(double a, double b) 1番目の引数を、2番目の引数で累乗した値を返す |
static double | random() 0.0以上で、1.0より小さい正の符号の付いたdouble値を返す |
static double | rint(double a) 引数の値にもっとも近く、計算上の整数に等しいdouble値を返す |
static long | round(double a) 引数にもっとも近いlongを返す |
static int | round(float a) 引数にもっとも近いintを返す |
static double | sin(double a) 指定された角度(ラジアン)の正弦(サイン)を返す |
static double | sqrt(double a) double値の正しく丸めた正の平方根を返す |
static double | tan(double a) 指定された角度(ラジアン)の正接(タンジェント)を返す |
static double | toDegrees(double angrad) ラジアンで計測した角度を、相当する度に変換す |
static double | toRadians(double angdeg) 度で計測した角度を、相当するラジアンに変換す |
sample)Mathを用いて最大値と最小値を求める | |
import java.io.*;
class Test { for( int i = 0 ; i < a.length ; i++ ){ System.out.println("最小値は" + minimum + "です"); } |
|
C:\Java\>java Test 最小値は-4.1です 最大値は32.4です C:\Java\> |
13.ガーベージコレクター
13章 ガーベージコレクター |
1.ガーベージコレクターとは |
ガーベージ(garbage)とは、不要なデータのことである。不要になったデータを集めて処理する機能のことをいう。例えば、C++言語ではあるクラスのインスタンスを作成したら、プログラムでdeleteしないと不要データがいつまでもメモリー上に残ることになる。このことをメモリリークという。 また、削除してしまったインスタンスを参照したりするとエラーになりOSなどによってはそのまま暴走してしまうといったバグも発生する可能性がある。 しかし、javaではインスタンスを作成しても削除する必要がない。不必要になったインスタンスはこのガーベージコレクターがすべて処理してくれるからである。 |
class GarbageTest{ public static void main (String args[ ]){ String str1 = new String("abc); String str2 = new String("ABC); str2 = str1; // "ABC"という文字列はどこからも参照されなくなり、ガーベージコレクトの対象となる |
C:\java>javac *.java
C:\java>java GarbageTest C:\Mjava> |
2.ガーベージコレクターの実行 |
Java Virtual Machine(JVM)は、インスタンスの生成が行われた時など、メモリーを厳守監視している。これにより後でどのメモリー(インスタンス)が参照されていて必要なのか、あるいはもう参照されなくなって不必要になったのかを調べることができるようにしている。 しかし、不必要になったデータを探すのは、アプリケーションが大きくなればなるほど、時間がかかる処理になる。したがってJVMはデータが不必要になったらすぐにガーベージコレクトを行うのではなく、何もしていないときにガーベージコレクトを行うようにしている。 実際にガーベージコレクトが行われるタイミングはJVMの実装に任されており、プログラマやユーザがそのタイミングを関知しなくても良いことになっている。 |
Javaのメリットはプラットフォームを(OS)を選ばないことである。パソコンのようなメモリーの比較的豊富なプラットフォームで実行している分にはメモリーのことをそれほど意識しなくても良いのだが、携帯電話など比較的リソースの乏しいプラットフォームでJavaを実行する場合は、メモリーをできるだけ少なくして使用したい場合がある。このような場合、ガーベージコレクトをJVMに任せていてはメモリーが足りなくなってしまう。 もちろんメモリーを使用したい時に残りのメモリーが足りなくなればJVMはガーベージコレクターを起動させるが、もし時間的に余裕がない場合、実行されてしまっては困る。そこで、プログラマがガーベージコレクタを起動させるタイミングを指定することができる。それには、Systemクラスのgc( )メソッドを使用する。 それには、Systemクラスのgc( )メソッドを使用する。 このメソッドはガーベージコレクタを起動させてほしいとJVMに伝えるだけで、いつ実行させるかはJVM次第である。よくJavaの解説書のこのメソッドの説明に「ガーベージコレクタを実行する」とあるが、これは間違いである。あくまでもできるだけ早くガーベージコレクタを実行させてほしいとJVMに要求するだけである。 |
2.finalize |
C++にはデストラクタがある。デストラクタとはコンストラクタの逆でインスタンスが破壊される時に呼ばれる関数である。しかし、Javaにはデストラクタがない。これは、Javaのインスタンスの破壊はガーベージコレクタに任されていて、インスタンスがいつ破壊されるかわからないためである。しかし、これでは不便なことがある。例えばファイルを開いた場合はファイルをクローズするとか、通信ポートを開いたらそれを閉じるといったメモリー以外のリソースを解放したい場合である。このような場合は、Objectクラスのfinalize( )メソッドをオーバーライドする。finalize( )メソッドはガーベージコレクタによって、メモリが解放される前に呼び出されるメソッドである。このメソッドをオーバーライドしその中でリソースの解放を行う。このfinalize( )メソッドもいつ呼ばれるかは保証されていない。インスタンスが参照されなくなったことが確認され、実際にそのインスタンスが占有していたメモリーを解放される間のどこかで実行されることが保証されているだけである。また、ガーベージコレクタが不要になったインスタンスを発見し、まだfinalize( )メソッドを実行していない場合、SystemクラスのrunFinalize( )メソッドを実行することで、finalize( )の実行を促すことができる。しかしFinalize( )メソッドを実行することでFinalize( )メソッドを実行するのではなく実行するタイミングはJVMの判断に任されている。 |