トップページ⇒tech
1001コメント321KB

【初心者】Java質問・相談スレッド82【大歓迎】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/25(土) 23:38:06
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。

前スレッド
【初心者】Java質問・相談スレッド81【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1139654818/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりで。
0577デフォルトの名無しさん2006/03/07(火) 15:47:44
>>576
配列がなかったら… 配列クラスを自作して肝心な所は
native でやるしかないかな?
0578デフォルトの名無しさん2006/03/07(火) 15:48:46
リンクリストを配列とみなせば native なしでも行けるか…。
アクセスの仕方によっては無駄が多そうだが。
0579デフォルトの名無しさん2006/03/07(火) 15:52:23
ArrayListって配列で実装されてるからArrayなの?
0580デフォルトの名無しさん2006/03/07(火) 16:17:17
名前を付けた人に聞いてください。
0581デフォルトの名無しさん2006/03/07(火) 16:21:21
普通にArrayListのソース見ればええやん
0582デフォルトの名無しさん2006/03/07(火) 16:53:12
java.lang.ArrayIndexOutOfBoundsException

eclipseでやってたらこんなエラー出てきたんすけど
これって何?
0583デフォルトの名無しさん2006/03/07(火) 16:54:28
APIぐらい見ろ
0584デフォルトの名無しさん2006/03/07(火) 17:02:08
public class ArrayIndexOutOfBoundsException
extends IndexOutOfBoundsException

不正なインデックスを使って配列がアクセスされたことを示すためにスローされます。
つまり、インデックスが負または、配列のサイズ以上の場合です。
0585デフォルトの名無しさん2006/03/07(火) 17:10:20
>>582
java.lang.ArrayIndexOutOfBoundsException
↓
ArrayIndexOutOfBoundsException
↓
Array Index Out Of Bounds Exception
↓
array 配列
index インデックス(添字)
out of bounds 範囲外
exception 例外
0586デフォルトの名無しさん2006/03/07(火) 17:41:46
/*
お時間ある方、下のコード実行してみてもらえないでしょうか?
*/
String[] array = new String[1000000];
ArrayList arrayList = new ArrayList();

for(int i = 0; i < array.length; i++){
array[i] = "a";
arrayList.add("a");
}
System.gc();
System.out.println("wait 5 seconds...");
try{
Thread.sleep(5000);
} catch(InterruptedException ie){}

/*
05875862006/03/07(火) 17:42:17
つづき
*/
String tmp;

long time = System.currentTimeMillis();
for(int i = 0; i < array.length; i++){
tmp = array[i];
}
System.out.println("Array : " + (System.currentTimeMillis() - time) + " ms");

time = System.currentTimeMillis();
for(int i = 0; i < arrayList.size(); i++){
tmp = (String)arrayList.get(i);
}
System.out.println("ArrayList : " + (System.currentTimeMillis() - time) + " ms");

time = System.currentTimeMillis();
String[] tmpArray = new String[arrayList.size()];
arrayList.toArray(tmpArray);
for(int i = 0; i < tmpArray.length; i++){
tmp = tmpArray[i];
}
System.out.println("toArray : " + (System.currentTimeMillis() - time) + " ms");
05885862006/03/07(火) 17:44:25
ArrayListと配列を比べた場合、
圧倒的に配列が速いのは知っていたのですが、
そのため、わざわざtoArrayして回していたのです。

ためしに上記コードを実行してみたら、
ArrayListとtoArrayがほとんど同じ速度です・・・・
皆さんのPCでも同じような結果でしょうか?
05895352006/03/07(火) 17:59:40
>>586
PentiumM1.2GHz メモリ512MB Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
Array : 0 ms
ArrayList : 47 ms
toArray : 110 ms
0590デフォルトの名無しさん2006/03/07(火) 18:02:35
>>586さん
JDKのバージョンが抜けてますよ?
05915892006/03/07(火) 18:03:36
自分の名前間違えた589≠535
05925862006/03/07(火) 18:45:21
>>590
失礼しました。

C:\j2sdk1.4.2_11\bin\java -server Test
wait 5 seconds...
Array : 30 ms
ArrayList : 190 ms
toArray : 150 ms

C:\j2sdk1.4.2_11\bin\java -client Test
wait 5 seconds...
Array : 20 ms
ArrayList : 80 ms
toArray : 220 ms

C:\jrockit-j2sdk1.4.2_08\jre\bin\java -server Test
wait 5 seconds...
Array : 10 ms
ArrayList : 100 ms
toArray : 111 ms

C:\jrockit-j2sdk1.4.2_08\jre\bin\java -client Test
wait 5 seconds...
Array : 10 ms
ArrayList : 70 ms
toArray : 211 ms

この辺りでやってみました。
Pentium3 700MHz 512M です。
0593デフォルトの名無しさん2006/03/07(火) 20:59:49
要素数10倍でやってみた。
(home)>java -Xms192M -Xmx192M -showversion String9
java version "1.5.0_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_03-b07)
Java HotSpot(TM) Client VM (build 1.5.0_03-b07, mixed mode, sharing)

wait 5 seconds...
Array : 101 ms
ArrayList : 320 ms
toArray : 311 ms

>>588
>ArrayListと配列を比べた場合、
>圧倒的に配列が速いのは知っていたのですが、

単にArrayList#toArray()のオーバーヘッドで相殺されただけじゃね。

単純にArrayListと配列の速度比較したら配列が遅いかもしれんが、
だからって「ArrayListが遅い」わけじゃない。

99.9%の場面でArrayListのスピードで十分。
「配列と比べたArrayListの速度」が問題になるようなの極々わずか。
0594デフォルトの名無しさん2006/03/07(火) 21:59:34
ArrayList って名の通り、中身は配列だからな。
この場合もinitialSize設定しとけば、差はかなり縮まるはず。
0595デフォルトの名無しさん2006/03/07(火) 22:07:09
rockitってJBossのとこのJREだっけ?はえぇなおい。
インデクサや関数呼び出しのオーバーヘッドの差かな?
0596デフォルトの名無しさん2006/03/07(火) 22:21:48
>>595
jrockitはWebLogicのBEAのやつなん。
速度はすごく速い。
でも、地味にバグを見つけてしまった・・・・
0597デフォルトの名無しさん2006/03/07(火) 23:06:12
ArrayListが遅かったのはキャストのコストのせいじゃ?
最近のVMだとそのへんの最適化が進んでるって話だし。
0598デフォルトの名無しさん2006/03/07(火) 23:17:37
>>561
戻り値を明確にして、分かりやすいコードを書くために
以下のように、メソッドの引数と同じ変数名で戻り値を受け取るのは
よくないのでしょうか?

呼出し側
StringBuffer buf = new StringBuffer();
buf = methodA(buf);
System.out.print(buf); // ここで methodA() で書き変えた内容が出る。

呼び出される側
StringBuffer methodA(StringBuffer buf) {
buf.append("Hello");
retrun buf;
}
0599デフォルトの名無しさん2006/03/07(火) 23:24:21
よくなくはないとおもうが、無意味なコードじゃね?
↓これでも同じ動作だろ?

呼出し側
StringBuffer buf = new StringBuffer();
methodA(buf);
System.out.print(buf); // ここで methodA() で書き変えた内容が出る。
0600デフォルトの名無しさん2006/03/07(火) 23:27:48
>>598
呼び出し側からは、methodA の引数と戻り値が同じインスタンスなのか
判別できません。

# 個人的にはオカシイと思う点が少なくても二箇所あります。
# 自分向けの表現では気持ち悪い、気味が悪いかな
0601デフォルトの名無しさん2006/03/08(水) 00:28:32
>>598
>>StringBuffer buf = new StringBuffer();
>>buf = methodA(buf);
おい!!
0602エスパー2006/03/08(水) 01:17:54
インスタンス作ってからstaticよんでるんじゃない?
ちょっと変か
0603デフォルトの名無しさん2006/03/08(水) 01:54:22
>>598
メソッド引数と、その戻り値を受け取る変数が同じなんてことはざらに
あるぞ。別におかしくともなんともないだろ。

たとえば、ある文字列を渡すと、後ろに「hoge」とくっつけるメソッドが
あるとしたら

String testStr = "test";
testStr = appendHoge( testStr);
System.out.println( testStr);

って普通のコードだと思うけど?

ただな、StringBufferを引数で渡して、そのStringBufferを戻り値で返すって、
いったい何がしたいんだよ。俺も>>599と同じように思った。
0604デフォルトの名無しさん2006/03/08(水) 02:09:07
ArrayList の public <T> T[] toArray(T[] a) は同じインスタンスが
返されるかも知れないし、返されないかも知れない。
0605デフォルトの名無しさん2006/03/08(水) 03:02:20
>>603
StringBufffer sb = new StringBuffer().append( 1 ).append( -1.3 ).append( "hoge" );
例えばこういった append の連続使用は多いケースだろ。
0606デフォルトの名無しさん2006/03/08(水) 03:36:17
>>605
それ「StringBufferを引数で渡して」るわけじゃないし。
0607デフォルトの名無しさん2006/03/08(水) 06:11:02
>>604
toArray(Object[] nArray) の場合は、引数である配列の要素数が足りなかったとき、
メソッド内部で新しい配列を生成するので、違うインスタンスが返される。
足りてれば問題ない。
ただし、この場合にも、引数と戻り値は別物として扱ったほうが無難だと思う。
# 変数名の再利用はバグの温床になるからである。

>>605
appendの場合は、目的がハッキリしている。

返って>>598の場合は、「戻り値を明確に」するという目的はあるものの、
その目的とソースが一致していない。
目的を達成するためにそのように記述する必然性が全く無い。
0608デフォルトの名無しさん2006/03/08(水) 12:44:48
JTAを使ってトランザクション管理を行いたいのですが、
ドライバーマネージャーを使った接続でもJTAを適応できるでしょうか?
JTAに関する説明のサイトを見るとほとんどがデータソースを使っているので…
0609デフォルトの名無しさん2006/03/08(水) 13:29:02
>>586
バージョンや環境でえらく差が出るような。
こっちで実行した結果を挙げとく。
(ハードは PowerPC G4 800MHz, 640MBの iBook G4)
$ uname -a
Darwin xxxxx.local 8.5.0 Darwin Kernel Version 8.5.0: Sun Jan 22 10:38:46 PST 2006; root:xnu-792.6.61.obj~1/RELEASE_PPC Power Macintosh powerpc


$ java -Xms192M -Xmx192M -showversion ss
java version "1.4.2_09"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-232)
Java HotSpot(TM) Client VM (build 1.4.2-54, mixed mode)

wait 5 seconds...
Array : 47 ms
ArrayList : 174 ms
toArray : 99 ms
0610デフォルトの名無しさん2006/03/08(水) 15:29:09
最近、ロギング用のフレームワークのSimpleLogってのを
いじってるんだけど、なかなか良い感じ。
ttps://simple-log.dev.java.net/

ライセンスは、Apache License 2.0。
Log4jとの比較情報とかもある。
ttps://simple-log.dev.java.net/log4jComparison.html

簡単なオブジェクトダンプとかもやってくれるんで便利。
試しにネストさせたArrayListとかを放り込んでみたら、
ちゃんとネストしてログ出力されたス。
名前通り、設定もシンプル。
0611デフォルトの名無しさん2006/03/08(水) 16:07:03
なんかJavaの解説書とか解説サイトって
専門用語ばかり使ってて、お前ら初心者がプログラミングなんかやるのは100年早ぇんだよ
ってな空気プンプン漂ってない?
分かりやすく理解できるような参考書って無いよね
0612デフォルトの名無しさん2006/03/08(水) 16:09:22
2chと同じ
バカが近寄らないようにしてるだけ

2chはバカばっかりじゃねーかってツッコミは無しな
0613デフォルトの名無しさん2006/03/08(水) 16:13:57
真面目にやる気ある奴さえふるい落とすのはどうかと思うがな
0614デフォルトの名無しさん2006/03/08(水) 16:22:13
Cの基本文法くらいは覚えてこいってこった
0615デフォルトの名無しさん2006/03/08(水) 16:29:40
入学早々Javaから始めたうちの大学はかなりのバカってことか
0616デフォルトの名無しさん2006/03/08(水) 16:38:57
いや、ちゃんと説明してくれるならむしろそのほうがいい。

始めからオブジェクト指向に慣れたほうが。
0617デフォルトの名無しさん2006/03/08(水) 17:35:18
印刷について教えてください。
プリンターの用紙・トレイ一覧を取得する際、以下のような処理でMediaアトリビュートを
取得できるのですが、これの名称の取得をするにはどのようにすればよいのでしょうか?
(特に、MediaTrayの定数に無いものの名称が知りたいです)

Media[] media= (Media[])PrinterJob.getPrinterJob().getPrintService().getSupportedAttributeValues(Media.class,null,null);

javaのダイアログでは「トレイ1」といった名称が出ているので、取得できそうなのですが
方法がわかりません・・・・

よろしくお願いいたします。
0618デフォルトの名無しさん2006/03/08(水) 17:44:52
double d1 = Double.valueOf(args[0]).doubleValue();
と
double a = Double.parseDouble(args[0]);
の違いってなんですか?
0619デフォルトの名無しさん2006/03/08(水) 18:06:05
>>618
なんでそんなことが気になるのかわからんが…
前者はDoubleのインスタンスが生成されてて、後者は生成されない。
0620デフォルトの名無しさん2006/03/08(水) 18:11:09
>>619
チョイ待て。後者だってDoubleのインスタンスは作られないだろ。
0621デフォルトの名無しさん2006/03/08(水) 18:11:40
すまん。見間違えだった・・・
0622デフォルトの名無しさん2006/03/08(水) 18:15:32
>>618
好き嫌い
0623デフォルトの名無しさん2006/03/08(水) 18:25:09
好き嫌いもなにも前者はあきらかなオーバーヘッドだろ。
後者を使うべし
0624デフォルトの名無しさん2006/03/08(水) 19:08:32
>>620>>621
プギャー
0625デフォルトの名無しさん2006/03/08(水) 19:20:32
>>623
ところで↓こういうコード知ってる?
public static double parseDouble(String s) throws NumberFormatException {
  return FloatingDecimal.readJavaFormatString(s).doubleValue();
}
0626デフォルトの名無しさん2006/03/08(水) 19:37:38
オーバヘッドというか、オブジェクトが生成されているという
実装上の都合が、漏洩しているのが良くないのだろう。
0627デフォルトの名無しさん2006/03/08(水) 19:41:19
実装上の都合が漏洩って、こりゃまた難しい日本語を使う方が来ましたな。
0628デフォルトの名無しさん2006/03/08(水) 21:05:43
>>626
日本語でおk
0629デフォルトの名無しさん2006/03/08(水) 22:28:16
>>611
Eclipseスレにまで同じ質問しただろ。
コピペすんな馬鹿
0630デフォルトの名無しさん2006/03/08(水) 22:29:18
>>615
え、1年のときからJavaを教わることができる東大は馬鹿なのか?

うちは三流大で未だにCでやってる
0631デフォルトの名無しさん2006/03/08(水) 22:31:27
システム会社で硬い事務系のシステムをやってますが、
Javaをはじめようと思ってます。
Cはある程度できるけど、Web系のシステムは全然やったことありません。

どの本からはじめたらいいでしょうか。あるいは勉強法など。

※Sunのオンラインチュートリアルを途中まで進めましたが、
英語なのでやはり時間がかかってしまい。
0632デフォルトの名無しさん2006/03/08(水) 22:38:15
>>630
いいじゃないか、C。
Cでスタックとヒープのメモリ管理の仕方を覚えておくと、
JavaやC#に移行したときに原理が解っていいぞ。
0633デフォルトの名無しさん2006/03/09(木) 01:59:40
>>609
クラス名の先頭は大文字にしろや!!!
0634デフォルトの名無しさん2006/03/09(木) 02:14:18
>>632
Cをやることは大いに構わないと言うか
お勧めするが、それしかやらないのは非常にいたい。
オブジェクト指向一つ理解できないのが情報工学科を
卒業するなんて恥ずかしい。
0635デフォルトの名無しさん2006/03/09(木) 02:17:02
言語やんのは情報工学科だけじゃねぇだろ。
0636デフォルトの名無しさん2006/03/09(木) 10:06:51
データベースのコネクションを取得してオートコミットをOFFにして
SQLを発行して、コネクションをクローズした場合、発行したSQLはコミットされますか?

--
Connection con = コネクション取得処理
con.setAutoCommit(false);
//con に対してINSERTなどのSQL発行
con.close();
0637デフォルトの名無しさん2006/03/09(木) 10:28:09
No
06386362006/03/09(木) 11:08:16
>>637
質問しといてアレなんですが、実際に確かめてみたらコミットされるようでした。
(Oracle10g)


下記によると、DBによって異なるが必ずコミットかロールバックされる様ですね。
http://akimoto-jp.com/java/Database/Jdbc-api/Connection.html
0639デフォルトの名無しさん2006/03/09(木) 11:18:10
>>638
俺もされないと思ってた。
参考になった。サンクス。
0640デフォルトの名無しさん2006/03/09(木) 11:20:15
それにしても閉じたらcommitしちゃうのは危ない仕様だな・・・・
0641デフォルトの名無しさん2006/03/09(木) 11:21:24
DBは何使ってるのよ?
06426362006/03/09(木) 11:37:54
>>641 Oracle10gです。
ところで、データベースアクセスエラー時の動作検証などみなさんどうやって行ってますか?

僕の場合、SQL発行してるところでLANケーブル抜いてみる
->ただし、この場合コネクションオブジェクトごと壊れるみたいで、クローズもロールバックもきかない
ソースコード中にエラーが起こるようなコードを書く
->書き換えたコードを元に戻さないと大変なことになる

やってて、どうもスマートじゃないなぁと思う今日この頃です。
0643デフォルトの名無しさん2006/03/09(木) 11:48:54
>僕の場合、SQL発行してるところでLANケーブル抜いてみる

スゴスwwwwwwww
0644デフォルトの名無しさん2006/03/09(木) 12:14:15
>>642
うちのテストも似たようなものです。スマートじゃなくてもいいんじゃない?
直接関連する部分は広くない(例外あげりゃいい)し、そういうところは使いまわしてるし。
0645デフォルトの名無しさん2006/03/09(木) 12:39:02
任意の位置で SQLException 投げられる JDBC ドライバ作る。回帰テスト自動で
出来なきゃちょっと辛いでしょ。大体いつも設定ファイルの記述でデータソースと
JDBC ドライバ直呼びと選択できるよう設計するし。
06466372006/03/09(木) 13:04:56
おれはPostgreSQLでしたorz
0647デフォルトの名無しさん2006/03/09(木) 15:33:35
例外に関する質問です。あるthrows句もつメソッドを呼び出したときに呼び出し元で
例外処理を書かなければコンパイルを通らない場合と、例額処理を書かなくても
コンパイルを通る場合があるようですが、これは何がちがうんでしょうか?


public class TryTest
{
public static void main(String[] args)
{
ExThrowSQL();//これは例外を書かないといけないが
ExThrowOutBounds();//こっちは例外を書かなくてもコンパイルできる
}
public static void ExThrowSQL() throws SQLException
{
;
}
public static void ExThrowOutBounds() throws ArrayIndexOutOfBoundsException
{
;
}
}

06486472006/03/09(木) 15:34:38
激しく誤字してすいません。

あるthrows句もつメソッド⇒あるthriows句をもつメソッド

例額処理⇒例外処理

です
0649デフォルトの名無しさん2006/03/09(木) 15:40:02
>あるthrows句もつメソッド⇒あるthriows句をもつメソッド

( ´・ω・`)?
0650デフォルトの名無しさん2006/03/09(木) 15:43:57
>>647
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/RuntimeException.html
0651デフォルトの名無しさん2006/03/09(木) 15:48:10
もうお前は一生誤字してろw
0652デフォルトの名無しさん2006/03/09(木) 15:50:51
>>650 RuntimeExceptionクラスの派生クラスの場合キャッチしなくてもコンパイル通っちゃうってことですね
ありがとうございました。
0653デフォルトの名無しさん2006/03/09(木) 15:53:51
質問です。

JAVAの特徴の一つとして、よくマルチプラットフォームがあげられますが
それだった,NetmowrsoujaNpaidesukak fwfwqうえwwwwwwwwwd
0654デフォルトの名無しさん2006/03/09(木) 15:55:58
(#・∀・)カエレ!
0655デフォルトの名無しさん2006/03/09(木) 15:58:30
なんでそういうことを言うんですか?
ここは質問Wofesuresfzyanaidenasdうえeeawwwwwwwww
0656名無し募集中。。。2006/03/09(木) 16:02:32
VIPPERはあふぉばっかりで困る
0657653,6552006/03/09(木) 16:08:25
すまん。仕事があまりにも暇で遊んでしまいました。
正直すまんかった。
今では反seiSiterwurwreうえwaawwweefr
0658デフォルトの名無しさん2006/03/09(木) 16:11:39
キーボード 壊れてますよ
0659デフォルトの名無しさん2006/03/09(木) 16:50:07
GyRCJEokcyRAJDMkTiU5JWwkTxsoQj8K
0660デフォルトの名無しさん2006/03/09(木) 22:07:20
int count = 0;
int number = 2;
do{
boolean prime = true;
for(int i = 2; i < number / 2 + 1; i++){
if((number % i) == 0) prime = false;
}
if(prime == true){
System.out.print(number + " ");
++count;
}
++number;
}while (count < 10);
System.out.println("");

素数を書き出すプログラムなんですが、これの
for(int i = 2; i < number / 2 + 1; i++)
この部分で何をやってるのかよく分からないのですが…
0661デフォルトの名無しさん2006/03/09(木) 22:16:30
Javaとは全く関係ない。数学的な話。
0662デフォルトの名無しさん2006/03/09(木) 23:16:09
本当はnumber/2 ではなくて √number で良いんだけどな
0663デフォルトの名無しさん2006/03/09(木) 23:18:43
numberそのままでもいいぞ
0664デフォルトの名無しさん2006/03/10(金) 00:25:17
動的にテキストファイルを作って、クライアントにダウンロードさせる
サンプルってどこかにないでしょうか?
0665デフォルトの名無しさん2006/03/10(金) 00:48:07
テキストファイルを何が作るのか
何からクライアントにダウンロードするのか

話はそれからだ
0666デフォルトの名無しさん2006/03/10(金) 00:56:52
んーなの、入口出口がファイルかネットワークかの違いだけだから、いくらでもサンプルあるでしょ。
サーバ側でファイル作ったらFileOutputStreamで保存しておいて、クライアントの要求によって
それをstreamに書き出せばいい。
クライアントってぐらいだから、多分ネットワーク経由でデータを流したいんだろうけど
それはsocketからoutputStreamを読めばいいだけの事。 別に特別な事はない。
I/O関係とネットワーク関係のサンプル見れば解る。
0667デフォルトの名無しさん2006/03/10(金) 03:29:49
VC++で出力されたバイナリファイルをJavaで読み込みたいのですが、
float型の扱いに困っています。VC++で出力されたfloatの値は
4バイトで出力されますが、Javaでは8バイトで読み込まないと
いけないのですが、どう対処すればよいでしょうか?
0668デフォルトの名無しさん2006/03/10(金) 03:45:53
Javaでもfloatは4byteのはずだが。
どうやって読み込んでるの?
0669デフォルトの名無しさん2006/03/10(金) 03:54:15
public static float Float#intBitsToFloat(int)
0670デフォルトの名無しさん2006/03/10(金) 04:00:07
まずは、OSネイティブでは浮動小数点をどうやって実現しているかをチェックし、
次にJava に対しても同じようにチェックし、
両者の違いがないこと、または、違いを吸収できるような仕掛けを考える。

大抵は、IEEEのなんたらに「準拠」しているっぽい?が、
あまり、「だいたい上手く動く」というアプリケーションは使いたくない。
0671デフォルトの名無しさん2006/03/10(金) 04:20:05
http://www.microsoft.com/JAPAN/developer/library/vccore/_core_ieee_floating.2d.point_representation_and_microsoft_languages.htm
VC++限定でいいならfloatはJavaと同じIEEE 数値規格っぽいな。

>public static float Float#intBitsToFloat(int)
これってint読んでるんだから4byteじゃね?
0672デフォルトの名無しさん2006/03/10(金) 10:29:44
継承と委譲について下記のサイトで勉強しているのですが
http://www.nurs.or.jp/~sug/soft/java/java32.htm

文中の…

アクセスを禁止したい基底クラスのメソッドは、「委譲」されたクラスで定義しなければ、呼び出されようがないのである。

という意味がさっぱりわからないのですが、教えていただけないでしょうか。
0673デフォルトの名無しさん2006/03/10(金) 10:40:24
親子関係と使用人関係のちがいみたいな。
0674デフォルトの名無しさん2006/03/10(金) 10:41:36
起動する全てのJVMに特定のプロパティをつける方法ってないでしょうか。
具体的に付けたいプロパティは、swing.defaultlaf。
欲を言えば、JNI_CreateJavaVMで起動されるJVM全て、
無理なら、java.exe、javaw.exeのような、プラットフォーム毎のjvm起動コマンドで
作られるJVM。
環境変数とかで、なんとかなりそうなんですが。
0675672 2006/03/10(金) 10:59:18
ナニがわからないのか、自分の中で整理してみました。

委譲における
「基底クラス」って何なのかがわからないんです。

↓の場合Aが基底クラス?それともB?

class A{
 B b = new B();
 A.meth1()
 {
  b.meth1()
 }
}

Class B{
 public int meth1(){
  ......
 }
}
0676デフォルトの名無しさん2006/03/10(金) 11:13:10
>>675
基底クラスの意味を間違えてる。

クラス:Tabemono
↓
Tabemonoを継承して クラス:Kudamonoを作ったとする
↓
Kudamonoを継承して クラス:Apple とクラス:Orangeを作ったとする

この場合、Tabemonoが基底クラスとなるわけだ。
■ このスレッドは過去ログ倉庫に格納されています