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

このエントリーをはてなブックマークに追加
905デフォルトの名無しさん:2006/09/30(土) 22:30:30
>>904
いや、たぶん コンパイラの解釈は

Object obj = (v == 1 ? "A" : Integer.valueOf(v));
System.out.println("引いたカードは" + obj + "です");

みたいな感じになってると思う。
ってか、boxing された後の v が単体で文字列変換できるなら
int の v からでも文字列変換できるはずだから String と互換性がある事になると思うし。
906デフォルトの名無しさん:2006/09/30(土) 22:36:25
>>905
ほう。Stringもアップキャストされるのか。
そのうちjadで覗いてみるとしよう。
907デフォルトの名無しさん:2006/09/30(土) 22:45:45
>>867
Javaにはポインタがある。
オブジェクトは最初からポインタになる。
908デフォルトの名無しさん:2006/09/30(土) 22:46:37
ウホッ
909デフォルトの名無しさん:2006/09/30(土) 22:47:34
>>906
いや、v が変換されて Integer.valueOf(v).toString() になってるかどうかは、
int v = 0;
String s = v == 1 ? "A" : v;

が コンパイル通るか調べた方がマシだと思うよ。
コンパイラが必ず言語仕様に従ってるって前提なのが、
警察官が必ず法律守ってるはず、みたいな前提なのでアレだと思うけど。

言語仕様の事を調べたかったら、最新版は英語しかなくても言語仕様読もうよ。
910デフォルトの名無しさん:2006/09/30(土) 23:07:25
とりあえずjadっとくのは基本中の基本。
911デフォルトの名無しさん:2006/09/30(土) 23:14:36
>>910
頭悪い方法だけどね。

時間も能力も無いなら仕方が無い。
912デフォルトの名無しさん:2006/09/30(土) 23:18:20
意味の無い煽りで自己満オナニーするほど頭悪かないよ
913デフォルトの名無しさん:2006/09/30(土) 23:20:15
>>909
>String s = v == 1 ? "A" : v;
これコンパイルエラーになる >>904は間違いだな
914デフォルトの名無しさん:2006/09/30(土) 23:21:33
>>913
せめてエラー説明くらい書け
915デフォルトの名無しさん:2006/09/30(土) 23:24:12
別にいらんだろ。コード書くときに確かめりゃいいことだ。
916デフォルトの名無しさん:2006/09/30(土) 23:25:45
>>914
そんぐらい自分で調べろよ。
917デフォルトの名無しさん:2006/09/30(土) 23:26:43
>>915はeclipse派
>>916はクソユーザ
自演って大変ですね
918デフォルトの名無しさん:2006/09/30(土) 23:29:41
>>916
いや、調べたけど分からなかったんだろう、たぶん。
919デフォルトの名無しさん:2006/09/30(土) 23:30:08
Javaのオブジェクトは、Stringオブジェクトと+で連結すると暗黙のうちに
Object#toString()メソッドを呼び出しているから、ああなる。

Integer.valueOf(int)は、Java5から登場したオートボクシングにすぎない。
920デフォルトの名無しさん:2006/09/30(土) 23:30:59
>>911
Jadは頭悪いのか?
勉強になると思うんだが。

しかしまともなのは、EclipseのBytecode OutLineプラグインで
バイトコードを覗くことかな?
921デフォルトの名無しさん:2006/09/30(土) 23:31:34
>>913
JDKのバージョンによってエラーになるならないが違うってことはないか?
922デフォルトの名無しさん:2006/09/30(土) 23:31:56
Java in the Boxの中の人が心を痛めていらっしゃる。
923デフォルトの名無しさん:2006/09/30(土) 23:32:15
>>914がいいたいのは、どの環境でコンパイルしたのかじゃないの?
924デフォルトの名無しさん:2006/09/30(土) 23:34:29
すみませんioToolsというのはどうやって取り込むのでしょうか‥
学校でも一応やり方を教えてもらったのですが、何故かエラーが出てどうしてもうまくいきません‥
どなたかちゃんとしたやり方を教えて下さい
本当に困ってるのでお願いします
925デフォルトの名無しさん:2006/09/30(土) 23:35:06
>>920
話がかみ合ってないようだが、おまえが頭悪いじゃないか?
926デフォルトの名無しさん:2006/09/30(土) 23:37:22
>>924
ioToolsがどういうのかわからん俺はとりあえずググることから始めると思う
927デフォルトの名無しさん:2006/10/01(日) 00:17:27
>頭悪いじゃないか?
だって。あたまわるそww。
928デフォルトの名無しさん:2006/10/01(日) 00:19:46
頭わるいじゃないか。いいじゃないか。
929デフォルトの名無しさん:2006/10/01(日) 00:21:03
45分たってやっとか>>927という文句を思いついたんだ
生暖かく>>927を見守ってやろうぜ… (´;ω;`)ウッ
930デフォルトの名無しさん:2006/10/01(日) 00:22:52
>>926
頼みます…
931デフォルトの名無しさん:2006/10/01(日) 00:28:49
>>920== >>927
m9(^Д^)プギャー!!
932デフォルトの名無しさん:2006/10/01(日) 00:31:05
なに一生懸命連投してんだ
933デフォルトの名無しさん:2006/10/01(日) 00:39:58
>>930
実行時に必要なライブラリをクラスパスに通していない可能性があるとか
934デフォルトの名無しさん:2006/10/01(日) 01:03:57
>>933
ちょ‥理解できませんorz
すみませんJava初心者なので‥
935デフォルトの名無しさん:2006/10/01(日) 01:20:12
>>873
public static final int だと、int型の「定数」になっちゃうよ。
クラス変数を定義するなら、finalはいらないよ。
public static intでint型のクラス「変数」。
936デフォルトの名無しさん:2006/10/01(日) 01:22:35
>>935
class hoge{
private static final int PI;
public static void piyo(){ PI=3; }
}
って出来なかったっけ?
937デフォルトの名無しさん:2006/10/01(日) 01:26:44
>>936
それはやったことないな〜。普通は、finalメンバの定義と同時に値の代入やっちゃうよね。
一回目のメソッド呼び出しだけなら大丈夫なんだろうか?
コンパイルしてみないとわからんわ。
938デフォルトの名無しさん:2006/10/01(日) 01:29:39
staticブロックじゃなくて?
939デフォルトの名無しさん:2006/10/01(日) 01:32:48
>>936
そもそも、なんでfinalにするの?
動的に定数値を決定したいっていう意味?それが出来るのかはわからないけど。
940デフォルトの名無しさん:2006/10/01(日) 01:36:08
>>939
動的に定数値を決定したい、という意味でfinalを使ってるわけじゃないぉ
こういうことも出来るんじゃないか、という意味でプログラム書いたんだぉ

<rem>
>>935が変数と定数の違いでのみ public static final int を論じてたから
代入できるんだったら変数になるよねー、という意味で・・・
</rem>
941デフォルトの名無しさん:2006/10/01(日) 01:40:11
>>940
確かに、一回代入できるってのを変数と見ることも出来なくはないかもね。
ただ、一回代入してそれ以降代入できないなら、その後値を変えることが出来ないんだから、変数としての機能がないと思う。
942デフォルトの名無しさん:2006/10/01(日) 01:44:32
んだね、人によって判断が違うところかも

ところでfinalって、参照型(配列型とかオブジェクト変数とか)の場合は何に対してfinalされるん?
VB厨の俺にひところでおせーて
943デフォルトの名無しさん:2006/10/01(日) 02:01:39
>>942
どうなんだろ〜。考えたこともなかったな。
最初に代入した参照アドレスで固定されるのかね。
これも、コンパイルして実験してみるのが一番早いな。
ただ、実際それが出来たとして、どういうときにそういう宣言が役立つのかが
いまいち思い浮かばないわ。
944デフォルトの名無しさん:2006/10/01(日) 02:05:46
ふぅむ・・・たとえばVBのStringは値型だけど、Javaは参照型だったよね
で、
 private final String Programmer="hoge";
ってできるのなら、
やっぱりProgrammerが指し示すモノが固定されるのが一番だね…おk、把握しました

あ、そうそう
参照アドレス(hashCode()の戻り値?)ってメモリアドレスじゃなくてハンドルでいいんだよね?
javaの実装ってそこまで決めてないと思ってる俺
945デフォルトの名無しさん:2006/10/01(日) 02:16:04
>>944
参照アドレスってhashCode()の戻り値なの?
少なくともhashCode()の戻り値はメモリアドレスではないと思うよ。
正直Javaの実装についてはわからないや。すまん。
946デフォルトの名無しさん:2006/10/01(日) 02:27:37
>>922
スキンヘッドのお方が痛める?

そういえば彼はJavaOne Tokyo2005で弦楽器を持ってきていた。
演奏しているところを見てみたかった。
947デフォルトの名無しさん:2006/10/01(日) 02:28:43
>>925
なんで?
できれば頭悪い方法だとする根拠を説明して欲しい。
948デフォルトの名無しさん:2006/10/01(日) 02:29:05
>>931
違う。おれは>>927じゃない
949デフォルトの名無しさん:2006/10/01(日) 02:30:57
>>935
定数だけどクラス変数ともいえるよ。
クラス定数って言うべきか?
しかしfinalがつくと、最初の一回だけは代入できるし。
950デフォルトの名無しさん:2006/10/01(日) 02:32:56
>>942
配列型や、オブジェクト変数?ではんくてコレクション系は
finalにしても根っこの部分しかfinalにならず、配列やコレクションの中に
入っている個々の要素はそのままではfinalにはならないよ。
Collectionsクラスに個々の要素をfinalにするメソッドがあるよ。
951デフォルトの名無しさん:2006/10/01(日) 02:41:30
>>944
> 参照アドレス(hashCode()の戻り値?)ってメモリアドレスじゃなくてハンドルでいいんだよね?

ハンドル? Javaにはそんな用語はないが、メモリアドレスでもない。
メモリのパリティチェック(誤り検出)機構みたいなものだ。
WinnyのハッシュやMD5などのハッシュを想像してみれば解る。

主にコレクションインタフェースにそのオブジェクトを入れるときに使う。
二つのオブジェクトのハッシュ値が一致するとき、かならずその二つのオブジェクトは同値、
つまりObject#equals()がtrueを返さすよう満たさなければならない。
しかしObject#equals()がtrueを返したからといって二つのオブジェクトに対してObject#hashCode()
したときその値が一致しなければならないとは限らない。

実装方法が解らなければ、Jakarta Commons Lang のHashCodeBuilderクラスと
Eclipseのプラグイン、Commons4Eを使え。
952デフォルトの名無しさん:2006/10/01(日) 03:19:23
>>944,951
ハッシュとJavaの変数の参照については全く関係がないので混乱しないように。
953デフォルトの名無しさん:2006/10/01(日) 03:53:19
>>949
正確には、
インスタンス定数はコンストラクタ内でのみ、クラス定数は静的コンストラクタ内でのみ、
1回までならば代入できる、だな。
954デフォルトの名無しさん
>メモリのパリティチェック(誤り検出)機構みたいなものだ。

あほですな