今日はちゃっちゃと本題にはいります。

Javaで、intの数値をStringにするとき、

int i = 100;
String string = "" + i;

なんてやってしまうことありませんか?
(ないですか…ないですよね(T_T)


これ、実は時間がかかります。
(といっても少しですけどね・・・・)

時間がかかることを簡単にテストしたプログラムを書きました。


public class IntegerToStringTest{
public static void main(String[] args) {
long toStringTime = 0;
long plusTime = 0;

for(int j = 0; j < 100; j++){
long starttime = System.currentTimeMillis();

for(int i = 0; i < 200000; i++){
String s = Integer.toString(i);
}

long endtime = System.currentTimeMillis();

toStringTime += endtime - starttime;

starttime = System.currentTimeMillis();

for(int i = 0; i < 200000; i++){
String s = "" + i;
}

endtime = System.currentTimeMillis();

plusTime += endtime - starttime;
}

System.out.println("[toString] Average = " + (toStringTime/100.0f));
System.out.println("[\"\" + ] Average = " + (plusTime/100.0f));
}
}

実行すると以下のような結果がでました。
[toString] Average = 58.26
["" + ] Average = 143.77


この結果から、intをStringに変換するには、素直に
Integer.toString(int)を使用するべきだとわかります。

では、なぜ遅かったのか?
推測ですが、
""(空文字)にInteger.toString(int)の結果を
連結するので、遅くなるのだと思います。


今日はここまで。
でわでわ( ̄▽ ̄)/

おはようございます(^^)

今日は日曜ですが

雨ですね…


こんな日は、家でゴロゴロぬくぬく…


ではなく


ジミにコネタを探します(^^;)



さて、今日は、Javaのプロジェクトごとに作成する

フォルダの階層について書きます。


最近まで、適当に作っていたのですが、最近JUnitを

使う機会がありまして、「フォルダ分け大切やね…」とおもったので(^^;)



いままでは、Eclipseでプロジェクトの新規作成したあと、

その直下にプログラムのソースを

おくパッケージを作成していました。


しか~し


ソースを置くパッケージが、プロジェクト直下にあると、

テスト用のプログラムをソースと同じフォルダに

置かなければなりません。


テストのときだけ必要なのに、テストでないプログラムと一緒に

すると、ごちゃごちゃなります。ぱっと見たとき、どれが

テストでないプログラムなのかわかりにくいです。


これには、プログラムソース用、テストプログラムソース用と

フォルダを分けるのが一番!


ということで、以下のようにします。(画像が小さいかもしれませんね・・・)


src

src2

これですっきりしました。

src ・・・ ソース用

test ・・・テストソース用

bin ・・・classファイル用

lib ・・・ライブラリ用(*.jarとか)


わからないことがあったらコメントで質問して

くださいましm( _ _ )m



今日はここまで。

でわでわ( ̄▽ ̄)/

こんばんわ^^

今日の夜はちょっと寒いみたいです。。

みなさん、風邪をひかないように

気をつけてくださいね。



今日の話題は、私のデスクトップについてです。


実は最近、の~とPCを買いまして、

今日ようやくPC環境をほぼ整えることが

できました。


そこで、どんなソフトを普段使っているか


大公開(あは~ん♪)



top


う~ん、ジミ(`ω´)

でも、すっきりしていて自分好みです(><)

この状態が長く保てたらよいのですが、が、が…



今日はここまで。

でわでわ( ̄▽ ̄)/

ひさしぶりのカレンダーネタ。

(いつの間にかネタになってしまいました(・_・;



前回1ヶ月の日付を取得することができたので、

今回は取得した日付を表示するための

UI作りにはいろうと思います。


まずは日付を配置するテーブルから

作りますね^^


1ヶ月多いときで6週間あり、

1週間が7日なので、

6×7のテーブルを用意したら

OKです。


javaにはLayoutとという、

Componentの配置を手助けしてくれる

仕組みがあります。


その中のGridLayoutは

ある四角の中を、指定した数

に区切ることができます。


んでわ、早速ぷろぐらむ↓


import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
* 日付のレイアウトをする
*/

class Layout extends Frame{
/** 列(日) */
private static final int COLUMN = 7;
/** 行(週) */
private static final int ROW = 6;

/**
* コンストラクタ(テスト用なのでprivate)
*/

private Layout(){
super("layout");
// 大きさ指定(適当)
setBounds(100,100,400,400);

// 6x7の配置テーブルを作る
setLayout(new GridLayout(ROW,COLUMN));

// 閉じるためのwindow処理
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
dispose();
}

@Override
public void windowClosed(WindowEvent arg0) {
System.exit(0);
}
});

// 日にちを表示するためのLabel配置
for(int row = 0; row < ROW; row++){
for(int column = 0; column < COLUMN; column++){
// row-columnというラベルをテスト表示
add(new Label(row + "-" + column));
}
}
}


/**
* エントリポイント
* @param args
*/
public static void main(String[] args) {
new Layout().setVisible(true);
}
}



表示はこんな感じ。

sample00

これに日付を配置します。


今日はここまで。

でわでわ( ̄▽ ̄)ノ

ビーフとか言いつつ実は豚肉(●´ω`●)ゞ
一人暮らしに久々リッチな食生活ですよ~。
お肉ですよ~。

日ごろのパスタとパスタとパスタと野菜生活から

頭ひとつ出て見ました


!うま!!!


ほかほかご飯!うまかとです!!


う~~~~

切干大根うま!!!



(o⌒∇⌒o;)




そうなのです。なぜか一緒に切干大根の煮付けなんかを

してみたり。。

組み合わせがビミョーかとちょっと思ったりもしたのだけど

食べたかったんだもん仕方ないよね。。


一度で二度おいしい、今晩のおかずでした。

ちなみに混ぜて食べるのはあまりオススメしません(・ω・|l|)

ふぁ~~あ (>Οゝ)゜゜゜

おはようございます…



昨日は、ある月の最後の日を取得するには、

どうやったらよいのか書きました。


今日は、それを使って、1ヶ月分の日にちを

実際に表示してみます。



でわ、さっそくプログラム。(今日はちょっと長いですかな (--;)


import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;

public class February {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();

// 2006年2月を指定
CalendarUtil.setYearAndMonth(2006, Calendar.FEBRUARY, calendar);

// 1ヶ月のリストを作る
List monthList = CalendarUtil.makeMonthList(calendar);

// テスト出力
for(Iterator oneDays = monthList.iterator(); oneDays.hasNext(); ){
System.out.println(oneDays.next());
}
}

/**
* Utility
*/
private static class CalendarUtil{
/**
* 年月をCalenderにセットする
* @param year calendarに指定する年
* @param day calendarに指定する月
* @param year, dayを指定するCalendar
*/
public static void setYearAndMonth(int year, int month, Calendar calendar){
calendar.set(Calendar.YEAR, 2006);
calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
}

/**
* Calendarで指定したの年月の終わり日を取得
*/
public static int getLastDay(Calendar calendar){
calendar.set(Calendar.DATE, 1);
return calendar.getActualMaximum(Calendar.DATE);
}

/**
* 1ヶ月分のリストを作る
*/
public static List makeMonthList(Calendar calendar){
List monthList = new ArrayList();
calendar.set(Calendar.DATE, 1);

int lastday = getLastDay(calendar);

// 月の初め(1日)から月の終わり(lastday)までのOneDayを作り、
// monthListに入れる
for(int i = 1; i <= lastday; i++){
calendar.set(Calendar.DATE, i);
OneDay oneday = new OneDay(i, calendar.get(Calendar.DAY_OF_WEEK));
monthList.add(oneday);
}

return monthList;
}
}

/**
* 1日. 日付と曜日を持つクラス
*/
private static class OneDay{
/**
* toString用(曜日)
*/

private static final String DAY[] = {
"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};

/** 日付け 1~31 */
private int num;
/** 曜日 1~7 */
private int day;

public OneDay(int num, int day){
this.num = num;
this.day = day;
}

public int getNum(){
return num;
}

public int getDay(){
return day;
}

public String toString(){
return num + ", " + DAY[day-1];
}
}
}


とりあえず、日にちと曜日を

表示することができましたヨ♪


作ってみて、少しおもったのですけど、

曜日を使うこと、あるのかなぁ…?



うん、きっとあるさ!あるハズ(><)



そんな疑問をいだきつつ

今日は、ここまで!

でわでわ( ̄▽ ̄)/

今日は雨がしとしと降っていますね…


最高気温も、昨日と比べ、10度ほど

違うらしく、手がかじかんで

「プログラムかけないんじゃ~」

と叫びたくなるかたもいるでしょう(^^;



さてさてさて・・・

昨日は、どんなカレンダーを作るのか、

絵で書いてみました。

目標がきまれば、あとは作るのみです!



カレンダーは、ある年、ある月の

日にちを、見やすいように並べたものなので、

まずは、ある月が何日まであるか

知らないといけないですよね



ある月が何日まであるのかは、

Calendar.getActualMaximum(int)を

使うと取得することができます。



サンプルに2006年2月の最初の日と最後の日を

出力するものを書きました。



import java.util.Calendar;

/**
* 2006年2月の
* はじめの日と
* おわりの日を
* 表示する.
*/
public class February {

public static void main(String[] args) {
Calendar c = Calendar.getInstance();

//Calendarに2006年2月1日をセットする
//2006年

c.set(Calendar.YEAR, 2006);
//2月
c.set(Calendar.MONTH, Calendar.FEBRUARY);
//1日 ← 30日や31日などに、2月を指定されると、Calendarでは3月になってしまうため.
c.set(Calendar.DATE, 1);

//はじめの日
int firstday = c.getActualMinimum(Calendar.DATE);
//おわりの日
int lastday = c.getActualMaximum(Calendar.DATE);

System.out.println("FEBRUARY - " + firstday + " : " + lastday);
}

}


はい。このように、ある月の最後の日は

表示することができました(^ω^)


あとは、1から最後の日までならべたら

カレンダー完成!?でしょうか?



今日はここまで。

でわでわ( ̄▽ ̄)/

昨日・今日と暖かい日が続きますね(^^)

すごしやすい気候なのですが、

春のようで、眠くなってきてしまいます(--;



さて、昨日、カレンダーを作るのに

日付取得のために

Calendarクラスを使おう!

ということを決めました。



しかし、重大なことを決定し忘れていました。。。


それは…


どんなカレンダーを作るか決めていない!


ということです。



↑が決まっていないと、

何を作っていったらよいのか

さっぱりわからなくなってしまいますからね。。。


なので、今日は、これから作っていくカレンダーが

どんなものか、絵で書いてみました(`ω′)



見よ~~~~~~


calendar


はい、下手ですみません orz



でも、なんとなく感じはつかめていただいたのでは

ないでしょうか…




むりですか?むりですよね…



ようは、ブログの左、または右にあるカレンダーを作るのだと

思っていただければ、よいと思います。



今日はここまで!

でわでわ( ̄▽ ̄)/

「カレンダーでもつくってみよ~か」

という気分になったので、

これからカレンダーを作ります(><)

(気分屋で申し訳ないです(^^;)



まず、カレンダーを作るには、日付をどうにか

こうにかして知らなければなりません。



日付を知るには、java.util.Calendarクラスが

使えます。



まず、いまの時間を表示してみましょ~♪

import java.util.Calendar;


public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
}

}


出力結果は↓のような感じ。。

Tue Feb 14 12:06:26 JST 2006


出力は、

火曜日、2月、14日、12:06:26、Japan Standard Time、2006年

ということですね(^^)



うまいこと、日付を出すことができました(><b

これから、このCalendarを使って、

Myカレンダーを作っていきますヨ~(‘ ω ‘ )



今日はこのへんで。

でわでわ( ̄▽ ̄)/

JNIを勉強しようと

ネットで探していたら、

よさそうなものを発見したので。。。


jar → exeに変換してくれるツールだそうです。

http://www.ne.jp/asahi/web/ryo/exewrap/



このツール、プログラムが公開されています。

JNIをはじめようと思っている方には

最適かも…