[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 03/30 12:48 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:52:10 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド115【歓迎】
pc11.2ch.net/test/read.cgi/tech/1210529127/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

267 名前:デフォルトの名無しさん [2008/06/17(火) 23:05:41 ]
>>258
オレの答えたcharAtじゃご不満なわけか

268 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:11:32 ]
>>265
Cに参照渡しはない

269 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:12:58 ]
FORTRANの引数やC++の参照型の引数は純粋な参照渡し。
Cのはポインタ渡し。

270 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:13:14 ]
用語は違うがあるけど?
Cやったこと無いくせにに、適当なこと言う言うな

271 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:14:51 ]
Cのはポインタの値渡し。
参照渡し使ってる言語をちゃんと知ってるなら
ポインタ渡しが参照渡しなんて口が裂けても言えないはず。

272 名前:デフォルトの名無しさん [2008/06/17(火) 23:16:28 ]
>>265

273 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:18:07 ]
>>267
たぶんこのjavaスレは呪われてんだろ

274 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:18:23 ]
多重継承とか参照渡しとか何時まで釣れるんだよw

275 名前:256 mailto:sage [2008/06/17(火) 23:18:54 ]
>>262,263
やっぱりサイト主に連絡しないとですか…
復元してるなんて、、言って大丈夫なのか心配です、、

いい方法があったら、教えてください。 
場違いを感じてきたので、ロムりながら勉強します。


アプレットは
作図の手順をクリックすると順番に線が現れるやつとか
比例反比例のグラフが点が多くなってゆき最後に線になる奴とか

なんかフラッシュでもできそうなやつです…




276 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:20:20 ]
>>264
「変数」に関する参照渡し(参照呼出し)はできない、と言っていい。
javafaq.jp/S012.html#S012-21

Cの場合、「参照による変数渡し」のような文法的概念はないけど、
変数への参照を明示的に渡すことによってほぼ同等のことができるという感じか。

277 名前:デフォルトの名無しさん [2008/06/17(火) 23:21:30 ]
>>275
初めの質問のときとだいぶ態度が違うけど、何で?

278 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:22:54 ]
>>272
仮引数の値をコピーして実引数に渡すのが値渡し。
仮引数に対する操作が(可能なら)実引数に及ぶのが参照渡し。
厳密に定義されています。

ポインタ渡しは単に値をコピーするだけなのであくまで値渡し。
参照渡しのエミュレートでしかありません。
残念でした。

279 名前:256 mailto:sage [2008/06/17(火) 23:27:14 ]
前スレ読まず、ただ教えてくれ〜の気持ちが強くて
ちょっと強気に言ってました。。。  気に障ったらごめんなさい。。

すげぇ場違いだったと今反省してます;;
オフラインで使用可能な方法がありましたら、よろしくです。
id表示ありませんがすべて自分ですのでよろしく。


280 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:30:36 ]
>>278
はぁ?

281 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:33:42 ]
>>279
十分教えてもらったのにまだ教えてもらいたいなどと考えてるし、
たぶん君が願っている事はもうかなわないと思う。

282 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:34:08 ]
まあなんていうか、「厳密には参照渡しじゃねーよ」というものも、
「実質的にはそーじゃねーか」とか言われてるね、みたいな空気を感じるあたりで手を打たないかw

283 名前:256 mailto:sage [2008/06/17(火) 23:38:02 ]
279
あ、前スレじゃなく このスレを読まず 
いきなり質問してしまいましたが、
レス入れていただいた方ありがとうございます。

では、<(__)> 

284 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:38:06 ]
そうやって甘やかすから
void foo(int *p) { p = malloc(sizeof(int)); }

int *p;
foo(p);
free(p);
とかして、ポインタに代入して参照渡しにしたのに
何かエラーになりますとか言う奴が現れるんだろ・・・。

285 名前:デフォルトの名無しさん [2008/06/17(火) 23:41:55 ]
Cをちゃんと勉強してからジャヴァやるもんじゃないですか?普通は



286 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:42:05 ]
>>256
はいさようなら

287 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:43:36 ]
Java の引数も値渡しだな。

288 名前:デフォルトの名無しさん [2008/06/17(火) 23:45:20 ]
>>283
個人的な意見で申し訳ないが、なんかアパマン・ショップの物件案内の社員(DQN)と似てるんだがw
やっぱりDQNはどの分野でもDQNであって、決してそのようなDQNに期待してはいけないのだろうかといつも悩んでいるんだけど、誰か教えてくれませんか?

289 名前:264 mailto:sage [2008/06/17(火) 23:47:24 ]
たくさんのレスありがとうございます。
まだモヤモヤしてるけど雰囲気は掴めました。
CもJavaも基本は値渡しだけどポインタとか使っちゃうと似た感じにできちゃうけど
でもそれは厳密には参照渡しじゃないぜ
って感じですね
面白そうだから純粋な参照渡しを仕様としてる言語を勉強してみます

290 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:47:30 ]
何か質問者も回答者も頭おかしいのがちらほら増え始めたな
>>288はそんな質問ここでして何がしたいんだ

291 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:48:23 ]
毎度のことながら値渡し/参照渡しで揉める理由が分からん

C, Javaには参照渡しはない。C++, C#にはある。

というだけの話しだろう

292 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:48:40 ]
>>289
正確に理解してくれて嬉しいぜ。

293 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:49:50 ]
>>289
というか、あなたの理解は根本的に間違ってますね。
少しCをかじったことあるみたいですけど・・

294 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:50:52 ]
>>293
^^;

295 名前:256 mailto:sage [2008/06/17(火) 23:52:20 ]
・・・すいません。失礼します。



296 名前:デフォルトの名無しさん [2008/06/17(火) 23:55:05 ]
>>256
>>286
おいでくさいまし

297 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:55:22 ]
C++でもint& b = a;を「参照」という言葉で表現するという罠があるし、
まあいいんじゃねそんな世界

298 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:57:04 ]
値渡しor参照渡しってのは、呼び元に影響を与えるかどうかだ。
int[] data = new data[5];
この変数dataには実体ではなく配列データが保存されたメモリを指す
だからf(data)と渡してf関数の中でdataをいじれば呼び元の配列に影響を及ぼす
よって参照渡しである。
OK?

299 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:57:09 ]
いや、それは参照で合ってるだろ。
b に対する操作が a に及ぶんだから。

300 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:58:20 ]
>>298
data の参照先に影響を及ぼすが
data には影響を及ぼさない。
仮引数をいくらいじろうが、data の中身が急に int[10] に変わることは無い。
よって値渡し。
OK?

301 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:59:32 ]
>>298
引数に指定した変数そのものを指すのが参照渡し
実体がどうとかじゃなくて,そういう風に見せる言語機能

302 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:00:39 ]
>>300
例えば関数の中でdata[0] = 1 と代入したら
呼び元のdataに入ってる配列の値も変わるんですが。
意味分かってる?

303 名前:デフォルトの名無しさん [2008/06/18(水) 00:00:50 ]
>>256みたいな人をここでバカにすると、今度は>>256みたいな人が他のところでjava技術者を馬鹿にするから、そういう事はやっちゃダメ!!

304 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:01:40 ]
298 = 馬鹿
ってことぐらいしか分からない

305 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:01:46 ]
>>302
分かってるに決まってるだろwww



306 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:02:12 ]
盛り上がって参りました(棒読み)

>>299
あれは参照渡しに使えるけど、参照そのものではない

307 名前:デフォルトの名無しさん [2008/06/18(水) 00:02:47 ]
もうツマンネー自演はいいから

308 名前:デフォルトの名無しさん [2008/06/18(水) 00:04:13 ]
>>288
をこのスレの方々はどう考えてるのか教えていただけないでしょうか・・

309 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:05:04 ]
void 参照渡し(ref int[] data) { data = new int[] { 4, 5 }; }

int[] a = { 1, 2, 3 };
参照渡し(ref a);
出力(a);//{4, 5}が出力される

C#だとこんな感じ

310 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:05:33 ]
ポインタの話と同様、
void foo(int[] hoge) { hoge = new int[10]; }

int[] data = new int[5];
foo(data);
とやっても data が参照してるのは new int[5] のままであって new int[10] ではない。
Java の引数が本当に参照渡しなら、data は new int[10] を指すようになる。

311 名前:256 mailto:sage [2008/06/18(水) 00:08:05 ]
一応、ロムしてましたが、

アプレットはオフラインはできない
という答えを受け取って消えます。

さようなら。

312 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:08:13 ]
>>309>>310 の差をきちんと理解し実感していれば
Java が参照渡しなんて口が裂けても言えなくなる。
「Java が参照渡し」 という言葉は初心者にいらぬ誤解を与える邪悪な言葉だ。

313 名前:デフォルトの名無しさん [2008/06/18(水) 00:09:48 ]
いつの時代でも、Cのポインタを理解するのは鬼門ってこと
char*manko=&tinpo

314 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:12:21 ]
>>310
それってdataはnew int[10]になるんじゃないの?

315 名前:デフォルトの名無しさん [2008/06/18(水) 00:12:59 ]
>>312
じゃ、何渡しがいいかな?



316 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:13:34 ]
「オブジェクトの参照値渡し」とか?w

317 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:14:07 ]
>>315
ポインタ渡しでいいよ。
ぬるぽとか言うくらいだし。

318 名前:デフォルトの名無しさん [2008/06/18(水) 00:14:30 ]
一応、ポインタを全快に理解してないと、GCを実装できないんだが・・

319 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:14:48 ]
お前らが頭いいのは分かったが
何言ってんのかがさっぱり分からん!

320 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:15:48 ]
>>314
ならないよ

321 名前:デフォルトの名無しさん [2008/06/18(水) 00:15:54 ]
>>316
あまり厳密に突っ込みを入れたくは無いだが、それは「インスタンスの」じゃないの?

322 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:17:34 ]
>>314 みたいなのが出てくるから
Java は参照渡しとか言うのは邪悪としか言いようが無いんだよな。

323 名前:デフォルトの名無しさん [2008/06/18(水) 00:19:12 ]
Javaやる前にCを勉強してください。それも鬼門とか超難関といわれる「ポインタ」(と参照)についてしっかりやっておかないとついてこれなくなります。

324 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:20:57 ]
>>315
参照の値渡しでいいんじゃね?

325 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:21:17 ]
Cに参照はないし
別にポインタは難関でもなんでもない。



326 名前:デフォルトの名無しさん [2008/06/18(水) 00:23:45 ]
アパマンの奴はDQNしかない。「とーちゃん。派遣面接受かったみたいだよー」のあの派遣会社のCMと同程度のDQNしかいない。

327 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:33:46 ]
>>326
なにいってんだ?同じ人間だし、確かに変なやつだとしてもな、どこかにいいところがあるだろ。
そういうところを互いに評価しないといけないんじゃないのか?

328 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:38:13 ]
>>321
java.sun.com/docs/books/jls/third_edition/html/typesValues.html#12028
> An object is a class instance or an array.

だから「オブジェクト」のほうが正確なんじゃないかな?

329 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:44:08 ]
いや、Java的にはね

330 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:00:22 ]
>>328
たぶん君もアパマンのDQNと同等と思ったけどね、そう噛み付きなさんなw

331 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:03:15 ]
「アパマン」「DQN」がマイブームの香具師がいるな

332 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:03:53 ]
オレ的解釈だと、C的にはオブジェクトの」、Java的にはインスタンスの」かな。
オブジェクトの単語自体があいまだからなんともいえないけど。>>328の引用は単なる君が権威主義(英語とかSUNとか)が好きなだけじゃないのかな?

333 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:05:57 ]
よくわからんw

334 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:09:26 ]
>>328は権威にあこがれるDQNってことじゃないの?

335 名前:デフォルトの名無しさん [2008/06/18(水) 01:17:09 ]
>>328,331,333
食わず嫌いはいけませんね。
そうなってしまったのは、あなたの人格が歪んでるからでしょうか?



336 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:55:47 ]
権威も何も、Sunが作った言語なんだから、
Sunの見解を参照するのは当然でしょ。

337 名前:デフォルトの名無しさん [2008/06/18(水) 02:26:01 ]
英語の文脈で使われるobjectと日本語の文脈で使われるオブジェクトは違うでしょ
javaを使うならJLSは当然第一に参考にすべき文書だけど日本語に訳する時に直訳はいかんよ

338 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 06:28:49 ]
>>268 >Cに参照渡しはない
>>270 >用語は違うがあるけど?
Javaでいう参照渡しはC/C++でいうアドレス渡し

ところで、
>>270 >Cやったこと無いくせにに、適当なこと言う言うな
??

339 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 09:11:17 ]
toStringで任意の型のオブジェクトを文字列に変換することができますが、
逆に、Type型の値と文字列からオブジェクトを作成するような枠組みは無いのでしょうか?

よろしくお願いします。

340 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:00:02 ]
>>339
意味がよく判らないんだけど、
 "int", "1" => int で 1
 "float", "1" => float で 1.0
みたいな感じ?
で、それは既存の組み込み型だけでいいの?

341 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:32:46 ]
sprintf() の 逆なら atoi()
static Integer Integer.valueOf(String s)
<指定された String の値を保持する Integer オブジェクトを返します。>
Type型と文字列から、じゃなくて? 表現は正確に。

342 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:56:44 ]
Cのscanf()に相当する関数が欲しいって話かな。

343 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:15:23 ]
スクリプト系言語のeval相当のものが欲しいようにも読める

344 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:34:41 ]
そこでJson-libですよ。

345 名前:339 mailto:sage [2008/06/18(水) 13:50:08 ]
説明がわかりにくくてすみません。

Object a = fromString(java.util.Date.class,"2008/1/1");
System.out.println(a.getClass()); // class java.util.Date
System.out.println(a); // Tue Jan 01 00:00:00 JST 2008

Object b = fromString(Integer.class,"10");
System.out.println(b.getClass()); // class java.lang.Integer
System.out.println(b); // 10

上のfromStringのように、文字列と変換後の型を指定すると、
文字列を指定した型のオブジェクトに変換できるような物が欲しいのです。

.NETのTypeConverterのように、
既存の組み込み型や標準ライブラリで定義された型に対して使用でき、
さらに、自分で作成したクラスに対する動作も指定できるような枠組みがあればよいのですが
このようなものはありませんでしょうか?



346 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:51:30 ]
JDK6でrhinoでevalすればいいだろ

347 名前:346 mailto:sage [2008/06/18(水) 13:53:03 ]
>>343-344あてね

348 名前:デフォルトの名無しさん [2008/06/18(水) 13:57:57 ]
Class.forName()

349 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:59:30 ]
>>339
「toStringの逆」という変換が一般には無理だとわかった上で?
具体例をどうぞ

350 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:59:51 ]
やべ遅れたw

351 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:32:23 ]
リフレクションで出来そうじゃない?

352 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:35:23 ]
よくわからんけど、インターフェースが統一されないとやなのか

353 名前:デフォルトの名無しさん [2008/06/18(水) 15:20:13 ]
いやいや、単なるC#宙でしょ

354 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:00:56 ]
自分で作ればいいんじゃない
Object fromString(Class c, String s) {
if (c == Date.class) return DateFormat.getInstance().parse(s);
if (c == Integer.class) return Integer.parseInt(s);
if (c == Float.class) return Float.parseFloat(s);
以下略
}

355 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:52:10 ]
toStringが返す文字列からオブジェクトを復元することは汎用的には無理



356 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:42:53 ]
Object#toString()ってサブクラスの実装依存じゃなかったっけ?

357 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:41:28 ]
うん。というか、
Object#toString()がオーバーライドされていないと、
クラス名とハッシュ値しか返ってこないから、
インスタンスの内部状態を知ることができない。

358 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:58:04 ]
ttp://msdn.microsoft.com/ja-jp/library/ayybcxe5(VS.80).aspx
Windows フォームのプログラミング
方法 : 型コンバータを実装する

ここなんかを見ると、GUI要素のプロパティをいじる時に文字列を経由したりするよねっていう感じの
用途がかいま見える

359 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:02:03 ]
TypeConverterってそういうもんだよ
実装したらメタデータとして型やプロパティに指定しといてリフレクションで取ってくるの

360 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:39:10 ]
これは邪道かな(あとPnutsですまん)
pe = class java.beans.PropertyEditorManager::findEditor(Integer.TYPE)

pe.setAsText("100")
println(pe.value - 1) // 99

pe.value = 200
println("200".equals(pe.getAsText())) // true

361 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:27:12 ]
だからそれならrhinioで出来るって

362 名前:デフォルトの名無しさん [2008/06/18(水) 20:36:38 ]
このスレでは、String.charAtやClass.forNameじゃ不満なのか?
もう答えるつもりないし、どうでもいいけど

363 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:45:44 ]
>>361
ぐぐったら前立腺マッサージャーが出たYO

364 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:44:13 ]
>>362
Class.forNameは外していると思うけど、String.charAtはまあまあかな。桁数チェックにもなるし。

365 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:09:43 ]
だれだ、おまえ?



366 名前:デフォルトの名無しさん [2008/06/18(水) 22:50:54 ]
>>364
ここではあなたの評価を気にしながら質問に答えなければいけないのですか?

367 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:14:03 ]
>>366
どこからそういう疑問が湧いたのですか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef