忍者ブログ
[69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79]

DATE : 2025/01/20 (Mon)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/04/22 (Sat)

今日もいつも通り『東北大学未来科学技術共同研究センター川島隆太教授監修 もっと脳を鍛える大人の DS トレーニング』(任天堂)をプレイしました。

プレイするごとに少なくとも『漢字書取』・『四字熟語』・『英単書取』はトレーニングしているのですが、『四字熟語』を選択したとき、教授(このゲームのマスコットキャラクター(*´Д`))が次のようにおっしゃいました。

「四字熟語」は全問達成しました。他のトレーニングをしてください。

工工工エエエエエエェェェェェェ(゚Д゚)ェェェェェェエエエエエエ工工工

なんと、『四字熟語』がプレイできなくなっていました orz

しかし、去年の12月29日から始めてこれまで、プレイしなかった日も何日かありましたが、ものすごいボリュームですね(;・∀・)もっとも、毎日違う熟語が出てくるわけではなく、同じものも何度か混ざっていましたが

さて、この先『四字熟語』が再びトレーニングできるようになる日が来るのかどうか、そこが気になります。

PR

DATE : 2006/04/21 (Fri)

Java では、プリミティブ型として byte, short, int, long, float, double, char, boolean が用意されています。

そして、byte は1バイト幅、short は2バイト幅、int は4バイト幅――と、プリミティブ型のバイト幅は決まっています。

しかし、『Java 仮想マシン入門 Returns(2) バイトコード編1』の『データ型』の項によると、byte, short, boolean は実行時には int 型として扱われるそうです。また、int 型用の命令で処理されることが多いようです。

実際に『Java 仮想マシン仕様』(英語)を覗いてみると、『3.11.1 Types and the Java Virtual Machine』にそれらしき記述が見つかりました。

また、『型変換』の項によると、int 型で扱われている byte などの型は、値の範囲を合わせるために int → byte などへの型変換が行われるものの、再び int 型として扱われるそうです。

ここから、int 型に代わって byte 型や short 型を使ってメモリ消費を抑えようとしても、ほとんど無意味なことが分かります。むしろ、int 型から byte 型などへの変換が内部で行われる(そして再び int 型として扱われる)ため、無駄な処理を行っていることになります。

なお、『Java 仮想マシン入門 Returns(5) バイトコード編4』の『newarray』の項によると、配列に限っては、実行時に確保される配列が実装によって変わるそうです。例えば、boolean 型の配列は、ある仮想マシンでは int 配列として、別の仮想マシンでは byte 配列として確保するようです。

再び『Java 仮想マシン仕様』の『3.3.4 The boolean Type』を覗いてみると、 JDK 1.0, 1.1、Java 2 SDK 1.2 では boolean 型の配列は byte 配列として確保していたようです。この仕様書は Java 2 登場当時のものですから、今の JDK も byte 配列で確保しているのかもしれません。

参考文献


DATE : 2006/04/20 (Thu)

Java SE 5 から、総称型(Generics)が導入されました。

総称型を使うことで、 java.util.List などの要素の型をコンパイル時に保証できるようになりました。

しかし、 Java SE 5 からということは、それ以前の Java では総称型が使えなかったわけです。

そのため、Java SE 5 以前から存在するライブラリや、それ以前でもサポートするライブラリでは、総称型が使用されていません。

これは少々困ったことになります。Java SE 5 を使っている身としては、総称型を使ったコードと使っていないコードとはあまり混ぜたくありません。

しかし、簡単な方法で総称型に変換することができます。――というよりも、強引に総称型として扱うことができます。

具体的には、以下の通りです。ここで、 createList メソッドは、総称型を使用していない java.util.List を返すメソッドです。中身は、java.lang.String とします。

List<String> list = createList();

正直、身も蓋もありません orz

ただし、このままではコンパイラが『無検査変換です』と警告を出してきます。

そこで、次の注釈を付け加えます。

@SuppressWarnings("unchecked")
List<String> list = createList();

この注釈をつけると、無検査変換に関する警告が出なくなります。

ちなみに、このようなこともできます。

for (String s : (List<String>) createList()) {
    // 処理
}

この場合は、この処理を実行するメソッドに上の注釈を付けます。

参考文献


DATE : 2006/04/18 (Tue)

前回の記事

参考文献

(;^ω^)正直、参考文献を見たほうが正確で分かりやすいかもしれません。

(了)

DATE : 2006/04/17 (Mon)

ひょんなことから、 iアプリの開発に手を出すことになりました。

適当に開発資料を眺めていると、Java ME CLDC に対応していて、その上に iアプリの API がある模様。

とりあえず、Java ME について簡単にメモしておきます。

Java ME とは

Java ME (Java Platform, Micro Edition) とは、組み込みソフト用途の Java の規格です。

組み込み機器には様々な種類があるため、Java ME はいくつかのコンフィギュレーションに分かれています。その中でも CLDC (Connected Limited Device Configuration) は、低速度・省メモリ・低消費電力な機器向けのコンフィギュレーションです。主にケータイで使用されています。コンフィギュレーションによって、基本的な API や仮想マシンの仕様が定められています。

コンフィギュレーションには、プロファイルを追加することができます。プロファイルによって、その機器に特化した API を追加できます。例えば、iアプリの場合は CLDC に Doja プロファイルを追加した形で iアプリの実行環境を構成しています。

CLDC 以外のコンフィギュレーションには、多少速度やメモリ容量に余裕のある環境向けの CDC (Connected Device Configuration) があります。こちらは、 PDA やカーナビなどで使用されています。

また、CLDC のプロファイルとして、MIDP (Mobile Infomation Device Profile) というものもあります。これは、ケータイなどの情報端末で共通した API をプロファイルとしてまとめたものです。

手を出してみたものの

と、iアプリの開発に手を出してみたものの、大変なことに気が付いてしまいました。

CLDC 1.0.x では、浮動小数点数、要するに float 型や double 型を使用できません orz

ちなみに、 CLDC 1.1 では使用できます。しかし、 CLDC 1.1 をサポートしているのは Doja プロファイル 4.0 からで、それ以前のものは CLDC 1.0.x です。

Doja プロファイル 4.0 が公表されたのは 2005年の10月です。つまり、「古いケータイだから」と言って切り捨てるわけにもいかないんですよね orz

(;・∀・)iアプリで画像処理をやろうとしていたのですが、浮動小数点数が出てくるところは全て整数に変換して演算するほかなさそうです。

また、CLDC 1.0.x は Java 2 SE 1.3、CLDC 1.1 は1.4をベースにしています。個人的には、Java SE 5 で導入された新しい文法が使えないのは少し残念な気もします。

参考文献

忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
ブログ内検索
最近の状況
リンク
カレンダー
12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック