新規記事の投稿を行うことで、非表示にすることが可能です。
2012年06月14日
文字列の比較について
今まで勘違いしていたので、ここに書かせていただきます。
文字列はオブジェクトのため、文字列の比較は、以下のようにしなければなりません。
String aaa = "123";
String bbb = "123";
if(aaa.equals(bbb)) {
System.out.println("aaa = bbb");
}
以下のようにすると、インスタンスの比較になるので、
文字列の検索ができません。
if(aaa == bbb){
System.out.println("aaa = bbb");
}
文字列はオブジェクトのため、文字列の比較は、以下のようにしなければなりません。
String aaa = "123";
String bbb = "123";
if(aaa.equals(bbb)) {
System.out.println("aaa = bbb");
}
以下のようにすると、インスタンスの比較になるので、
文字列の検索ができません。
if(aaa == bbb){
System.out.println("aaa = bbb");
}
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
2012年06月10日
配列のコピーについて
DoJa の開発で困ることの第一位は、配列の編集機能が乏しいことだと思います。
可変配列など、Vactor でなければなりませんし、通常の配列ではたいしたことはできそうにありません。
先日、オブジェクトを探している中で見つけたのですが、
System オブジェクトに arraycopy メソッドがあります。
これは、配列を新しい配列にコピーするためのメソッドのようなのですが、
自作処理で、可変配列をシミュレートしている部分があったので、
そのまま入替えてみました。
今まで for ループで処理していたものが、ネイティブの1処理で用事が済むようになりました。
ネイティブといっても、まあコンパイルするので、大きく速度に差が出るとは思えませんが、
それでも、配列についてのサポーだけでも幸いです。
ちなみに、配列の clone メソッドはエラーで、正常に使えたためしがありません。
おそらくですが、基本型の配列コピーしかサポートしていないのでしょう。
(実験していません。)
可変配列など、Vactor でなければなりませんし、通常の配列ではたいしたことはできそうにありません。
先日、オブジェクトを探している中で見つけたのですが、
System オブジェクトに arraycopy メソッドがあります。
これは、配列を新しい配列にコピーするためのメソッドのようなのですが、
自作処理で、可変配列をシミュレートしている部分があったので、
そのまま入替えてみました。
今まで for ループで処理していたものが、ネイティブの1処理で用事が済むようになりました。
ネイティブといっても、まあコンパイルするので、大きく速度に差が出るとは思えませんが、
それでも、配列についてのサポーだけでも幸いです。
ちなみに、配列の clone メソッドはエラーで、正常に使えたためしがありません。
おそらくですが、基本型の配列コピーしかサポートしていないのでしょう。
(実験していません。)
2012年06月07日
ListBox について
今回は ListBox についてご紹介します。
LstBox は、その引数によって、表示形態が変わります。
ListBoz list = new ListBox( [ダイアログの形], [ダイアログのタイトル文字] );
list.setText("あいうえおかきくけこ")
list.show();
さて、[ダイアログの形]引数は以下の種類があります。
すべて ListBox の静的プロパティです。
・RADIO_BUTTON
ラジオボタンです。ひとつだけ選択できます。
・CHOICE
プルダウン式のリストです。
クリック時に項目が展開されて表示されます。
・SINGLE_SELECT
ひとつだけ選択しますが、全項目が展開されて表示されています。
・NUMBERED_LIST
数値リストです。
・MULTIPLE_SELECT
複数選択できるリストです。
LstBox は、その引数によって、表示形態が変わります。
ListBoz list = new ListBox( [ダイアログの形], [ダイアログのタイトル文字] );
list.setText("あいうえおかきくけこ")
list.show();
さて、[ダイアログの形]引数は以下の種類があります。
すべて ListBox の静的プロパティです。
・RADIO_BUTTON
ラジオボタンです。ひとつだけ選択できます。
・CHOICE
プルダウン式のリストです。
クリック時に項目が展開されて表示されます。
・SINGLE_SELECT
ひとつだけ選択しますが、全項目が展開されて表示されています。
・NUMBERED_LIST
数値リストです。
・MULTIPLE_SELECT
複数選択できるリストです。
2012年06月04日
配列について(続)
配列について、より詳しくわかったことを書きます。
DoJa で扱える配列は3種類あります。
それぞれ、やりたいことに合わせて使います。
・配列
通常の配列です。一番処理が速いといわれています。
整列されている処理に向いています。
・Hashtable
ハッシュテーブル、つまり、連想配列です。
キーについても Object 型を使います。
データ検索に向いています。
・Vector
可変長配列です。
頻繁に項目数が変動するものに向いています。
DoJa で扱える配列は3種類あります。
それぞれ、やりたいことに合わせて使います。
・配列
通常の配列です。一番処理が速いといわれています。
整列されている処理に向いています。
・Hashtable
ハッシュテーブル、つまり、連想配列です。
キーについても Object 型を使います。
データ検索に向いています。
・Vector
可変長配列です。
頻繁に項目数が変動するものに向いています。
2012年05月27日
コメントの書き方
javadoc のコメント記述方法についてご紹介します。
Java で関数を作成したときに、一定の法則で定義したコメントを一緒に記述しておくと、
この関数についての簡易的なヘルプを参照することができるようになります。
コードの再利用性を考えると、ぜひ作成しておきたいものです。
やり方ですが、以下のコメントを入れます。
/**
* 関数の定義です。
* 2行目です。
*/
コメント開始を「/**」にするだけです。
コメント中では、以下の主な記述が使用できます。
・@param 引数の解説
・@return 戻り値の解説
なお、これは、変数定義にも使用できます。
/** ダミー値(初期値は -1) */
private int dummy = -1;
Java で関数を作成したときに、一定の法則で定義したコメントを一緒に記述しておくと、
この関数についての簡易的なヘルプを参照することができるようになります。
コードの再利用性を考えると、ぜひ作成しておきたいものです。
やり方ですが、以下のコメントを入れます。
/**
* 関数の定義です。
* 2行目です。
*/
コメント開始を「/**」にするだけです。
コメント中では、以下の主な記述が使用できます。
・@param 引数の解説
・@return 戻り値の解説
なお、これは、変数定義にも使用できます。
/** ダミー値(初期値は -1) */
private int dummy = -1;
スクラッチパッドについて(続)
即起動モードで、スクラッチパッドが読込できなくない制限があるという
お話をしたと思いますが、どうやら、設定に問題があるようです。
詳しくはまだわかりませんが、ADF で一緒に行なっている設定が原因なのかもしれません。
引き続き調査します。
お話をしたと思いますが、どうやら、設定に問題があるようです。
詳しくはまだわかりませんが、ADF で一緒に行なっている設定が原因なのかもしれません。
引き続き調査します。
Internet Explorer で jQuery ajax
今回は文字コードのお話です。
Internet Explorer で ajax を使う場合、文字コードに気を付けなければなりません。
ajax は仕様上、UTF-8 で送信しなければならないようですが、
Internet Explorer で shift_jis ページ内に javascript を置いた場合、
shift_jis で ajax 送信してしまうようです。
ajax を受け取るプログラムで、UTF-8 を期待していたために、
文字が化けてしまい、困った現象になりました。
対応方法ですが、送信ヘッダに UTF-8 で要求するように設定します。
jQuery では、以下のように設定します。
jQuery.ajax({
…
contentType:"application/x-www-form-urlencoded; charset=utf-8"
});
contentType の初期値は "application/x-www-form-urlencoded" ですが、
これに、UTF-8 であることを明記します。
これで、送信時に UTF-8 で送られることになり、Internet Explorer 独自の
文字化け問題にも対応できると思います。
Internet Explorer で ajax を使う場合、文字コードに気を付けなければなりません。
ajax は仕様上、UTF-8 で送信しなければならないようですが、
Internet Explorer で shift_jis ページ内に javascript を置いた場合、
shift_jis で ajax 送信してしまうようです。
ajax を受け取るプログラムで、UTF-8 を期待していたために、
文字が化けてしまい、困った現象になりました。
対応方法ですが、送信ヘッダに UTF-8 で要求するように設定します。
jQuery では、以下のように設定します。
jQuery.ajax({
…
contentType:"application/x-www-form-urlencoded; charset=utf-8"
});
contentType の初期値は "application/x-www-form-urlencoded" ですが、
これに、UTF-8 であることを明記します。
これで、送信時に UTF-8 で送られることになり、Internet Explorer 独自の
文字化け問題にも対応できると思います。
新品価格
¥2,919から
posted by FJT at 01:12| javascript
クラスの定義について(続)
以前、クラスは1ファイルにまとめるべきだと書きましたが、
クラスを分割したほうが使いやすいですね。
iアプリの容量制限に引っかかりそうな時だけ
ビルド時に気にすればいいかなと思います。
クラスをファイルごとに分けることについて、以下のメリットがあります。
・再利用が可能になる。
・コードエディタのレスポンスが早い。
・コードの独立性が高くなる。
クラスを1ファイルにまとめると、親クラスのオブジェクトが private であっても参照できたり、
クラスでは定義していない広域変数などが参照できる。
ということで、クラスファイル化推進に寝返りました。
クラスを分割したほうが使いやすいですね。
iアプリの容量制限に引っかかりそうな時だけ
ビルド時に気にすればいいかなと思います。
クラスをファイルごとに分けることについて、以下のメリットがあります。
・再利用が可能になる。
・コードエディタのレスポンスが早い。
・コードの独立性が高くなる。
クラスを1ファイルにまとめると、親クラスのオブジェクトが private であっても参照できたり、
クラスでは定義していない広域変数などが参照できる。
ということで、クラスファイル化推進に寝返りました。
2012年05月25日
for in 構文は使わない
久しぶりにハマりました。
モダンブラウザでは使えるようになりましたが、
IEの8以前では、for in の構文が使えなかったんですよね。
for(var item in collection)
VBScript の for each と似ていますが、javascript では少々使いづらい構文です。
たとえば配列の列挙を行ったとして、length などのプロパティも一緒に
ループに入ってくる場合があります。
まだ、普通の for が無難でしょうね。
モダンブラウザでは使えるようになりましたが、
IEの8以前では、for in の構文が使えなかったんですよね。
for(var item in collection)
VBScript の for each と似ていますが、javascript では少々使いづらい構文です。
たとえば配列の列挙を行ったとして、length などのプロパティも一緒に
ループに入ってくる場合があります。
まだ、普通の for が無難でしょうね。
posted by FJT at 06:16| javascript
2012年05月24日
Sprite について
今回は、スプライト機能についてご紹介します。
通常、Canvas に描画をする際は、Image で画像を貼り付けたり、
Graphics で線などを描いたりしますが、
キャラクタものについては、Sprite を使用します。
昔懐かしい、8ビットの MSX から存在していた機能ですが、
MSX のころは、完全にグラフィックと分離していました。
画面をクリアしても、スプライトはしぶとく残っているような状態だったのですが、
DoJa では、Canvas に上書きする要素として定義されているようで、
Graphics.clearRect などで画面クリアすると、一緒に消えてしまうようです。
そうすると、何もメリットが内容に思えますが、
Sprite は、描画する際には SpriteSet として書き込みます。
つまり、Sprite をまとめて描画するわけです。
そして、Sprite どうしで重なっているのかどうかを判定して返してくれる機能があります。
これで、たとえばシューティングゲームの障害物接触判定などに使えるわけです。
Sprite を定義する際には、Image が必要です。
画像を入れておくか、createImage で領域を決めておいて
Graphics で描画するかですね。
// 画像を適当に定義します。
Image i = Image.createImage(10, 10);
// Sprite を作成します。
Sprite s = new Sprite(i);
// もうひとつ、Sprite を作成します。
Sprite s2 = new Sprite(Image.createImage(1, 1));
// SpriteSet を作成します。
SpriteSet sst = new SpriteSet(new Sprite[]{s, s2});
//Graphics(g とします) に描画します。
g.drawSpriteSet(ss);
通常、Canvas に描画をする際は、Image で画像を貼り付けたり、
Graphics で線などを描いたりしますが、
キャラクタものについては、Sprite を使用します。
昔懐かしい、8ビットの MSX から存在していた機能ですが、
MSX のころは、完全にグラフィックと分離していました。
画面をクリアしても、スプライトはしぶとく残っているような状態だったのですが、
DoJa では、Canvas に上書きする要素として定義されているようで、
Graphics.clearRect などで画面クリアすると、一緒に消えてしまうようです。
そうすると、何もメリットが内容に思えますが、
Sprite は、描画する際には SpriteSet として書き込みます。
つまり、Sprite をまとめて描画するわけです。
そして、Sprite どうしで重なっているのかどうかを判定して返してくれる機能があります。
これで、たとえばシューティングゲームの障害物接触判定などに使えるわけです。
Sprite を定義する際には、Image が必要です。
画像を入れておくか、createImage で領域を決めておいて
Graphics で描画するかですね。
// 画像を適当に定義します。
Image i = Image.createImage(10, 10);
// Sprite を作成します。
Sprite s = new Sprite(i);
// もうひとつ、Sprite を作成します。
Sprite s2 = new Sprite(Image.createImage(1, 1));
// SpriteSet を作成します。
SpriteSet sst = new SpriteSet(new Sprite[]{s, s2});
//Graphics(g とします) に描画します。
g.drawSpriteSet(ss);