独習Javaゼミ第10回

独習Javaゼミ第10回
セクション1~3
発表者
直江 宗紀
Javaクラスライブラリ

クラスライブラリとは


Javaプログラムに利用できる様々な機能を提供する
クラスやインターフェイス集のこと
java.utilパッケージ


今回用いるユーティリティクラスが集約されたクラスラ
イブラリのパッケージ
乱数、カレンダー等の日付、時間や、ベクトル、ハッ
シュ表、スタック等のデータ構造を扱える
10.1 Randomクラス(1)

Randomクラス


boolean型,double型,float型,int型,またはlong型の
乱数を生成するクラス
乱数関数を用いる乱数以外に、ガウス分布に則る乱
数を生成することも可能
10.1 Randomクラス(2)

Randomコンストラクタ


コンストラクタとして、以下2つが用意されている
Random()
Random(long seed)
(seedは乱数ジェネレータに渡される初期値)
引数無しでRandomコンストラクタを呼んだ時

現在時刻をseed(種値)とする
10.1 Randomクラス(3)
表1 Randomクラスに定義された主なインスタンスメソッド
boolean nextBoolean()
真または偽のどちらかを返す
void nextBytes(byte buffer[])
bufferを乱数で埋める
double nextDouble()
double型の乱数を返す
float nextFloat()
float型の乱数を返す
double nextGaussian()
double型の乱数を返す。このメソッド
を繰り返し呼び出すと、平均0と標準
偏差の1のガウス分布の乱数が得ら
れる
Int nextInt()
int型の乱数を返す
Long nextLong()
long型の乱数を返す
void setSeed(long seed)
乱数ジェネレータに種値を与える
10.1 Randomクラス(4)
適当な乱数を発生させるプログラム例
import java.util.*;
class RandomInts{
public static void main(String args[]){
//乱数ジェネレータを作成する
Random generator=new Random() ;
//10個のint型の乱数を生成する
for(ing i=0;i<10;i++){
System.outo.println(generator.nextIng()) ;
}
}
}
10.2 Dateクラス(1)

Dateクラス


特定の日付と時刻に関する情報を扱える
Dateコンストラクタ

以下の2つのコンストラクタが用意されている
Date()
Date(long msec)
(msec:グリニッジ標準時で1970年1月1日午前0時か
らの経過時間をミリ秒で表した数値)
10.2 Dateクラス(2)
表2 Dateクラスに定義されている主なインスタンスメソッド
boolean after(Date d)
dが現在の日付よりも後の場合に真を返す。
それ以外の場合は偽を返す
boolean before(Date d)
dが現在の日付よりも前の場合に真を返す。
それ以外の場合は偽を返す
boolean equals(Date d)
dが現在の日付と同じ場合に真を返す。それ
以外の場合は偽を返す
long getTime()
基準時からの経過時間をミリ秒単位で返す
void setTime(long msec)
基準時からmsecミリ秒経過した日付と時刻
を現在のオブジェクトに設定する
String toString()
日付を文字列にして返す
10.2 Dateクラス(3)
Dateクラスを利用したプログラム例
import java.util.*;
class DateDemo{
public static void main(String args[]){
//現在の日付/時間で初期化
Date currentDate=new Date() ;
System.out.println(currentDate) ;
//基準時(1970/1/1)に初期化する
Date epoch=new Date(0) ;
System.out.println(epoch) ;
}
}
10.3Calendar,GregorianCalendarクラス(1)

抽象クラスCalendar


このクラスにより、日付と時刻の情報を交換可能
カレンダーの要素の取得または設定に使用できる、
int型の定数がいくつか定義されている。
(例:AM,AM_PM,PM,HOUR_OF_DAY,等)
10.3Calendar,GregorianCalendarクラス(2)

Calendarコンストラクタ


パブリックなコンストラクタは無い
静的メソッドgetInstance()を用いることにより現在の
日付、時刻で初期化されたカレンダーを取得できる
例:
Calendar now=Calendar.getInstance() ;
10.3Calendar,GregorianCalendarクラス(3)
表3 Calendarクラスに定義されている主なインスタンスメソッド
boolean after(Object calendarObj)
呼び出し元Calendarオブジェクトの日
付がcalendarObjの日付よりも後の
場合は真を、それ以外は偽を返す
boolean before(Object calendarObj)
呼び出し元Calendarオブジェクトの日
付がcalendarObjの日付よりも前の
場合は真を、それ以外は偽を返す
boolean equals(Object calendarObj) 呼び出し元Calendarオブジェクトの日
付がcalendarObjの日付と同じ場合
は真を、それ以外は偽を返す
int get(int calendarField)
呼び出し元オブジェクトの要素の値を
返す。目的の要素はcalendarFieldで
指定する
10.3Calendar,GregorianCalendarクラス(4)
表4 Calendarクラスに定義されている主なインスタンスメソッド(続き)
static Calendar getInstance()
既定の場所とタイムゾーンに設定さ
れたCalendarオブジェクトを返す
final Date getTime()
呼び出し元オブジェクトの時刻に相当
するDateオブジェクトを返す
final void set(int year,int month,int
date,int hour,int minite,int second)
呼び出し元オブジェクトのさまざまな
日付/ 時刻要素を設定する
final void setTime(Date d)
呼び出し元オブジェクトのさまざまな
日付/ 時刻要素を設定する。設定する
情報はDateオブジェクトdから取り出
される
10.3Calendar,GregorianCalendarクラス(5)

GregorianCalendarクラス



Calendarの有形サブクラス
グレゴリオ暦に則って日付/時間を管理できる
GregorianCalendarコンストラクタ

主なコンストラクタとして以下の物がある
GregorianCalendar()
GregorianCalendar(int year,int month,int date)
GregorianCalendar(int year,int month,int date,int
hour,int minute,int sec)
10.3Calendar,GregorianCalendarクラス(6)

GregorianCalendarクラスに定義されたメソッド



Calendarクラスで定義されたメソッド全てある
追加されたメソッドもある
isLeapYear(int year)
指定した年がうるう年の場合に真、そうでなければ偽
を返すメソッド
演習問題
1.
2.
3.
ガウス分布に従う乱数を100個生成し、それ
が本当にガウス分布に従うのか平均と分散そ
れぞれの値を計算するプログラムを作成せよ。
基準時から現在までの間にうるう年が何度あっ
たのかを調べるプログラムを作成せよ。
コマンドライン引数により、年、月、日にちが入
力された時、その年月日がその年が始まって
何日目なのか、そして何曜日なのかを示すプ
ログラムを作成せよ。