【初心者】Java質問 ..
[2ch|▼Menu]
892:デフォルトの名無しさん
08/09/01 20:41:34
>>889
日本語でおk

893:デフォルトの名無しさん
08/09/01 20:46:29
>>888
そこまでソース追いかけても分からないならタコでしょw
Reader.read():Iが何でnativeでなくてnew char[1]なのかで十分分かると思うけど・・・
もしセンスがあればだけど、多分君はお勉強はできるけど・・・あんまし・・・ってタイプでしょうか?

というよりも、それならいつready()を使うわけ?


894:デフォルトの名無しさん
08/09/01 20:49:54
東大の教授になりたかった・・・

895:デフォルトの名無しさん
08/09/01 20:51:40
>>893
バカには一生わかんねーよ

896:デフォルトの名無しさん
08/09/01 20:52:54
>>894
共産党に入れ

897:デフォルトの名無しさん
08/09/01 20:57:20
>>895

なんみょう〜
なんみょう〜
なんみょう〜


898:デフォルトの名無しさん
08/09/01 20:59:49
まずJavaの本読むより、「バカの壁」を読んでからじゃね?

899:デフォルトの名無しさん
08/09/01 21:01:12
ListってCでいうとこのstructみたいなもんすか?

900:デフォルトの名無しさん
08/09/01 21:09:26
>>899
リストはCでもつかうだろ。

901:デフォルトの名無しさん
08/09/01 21:38:21
ready()なんか使う奴こそ糞だな!

一生ナンミョウ〜やってろよww

902:デフォルトの名無しさん
08/09/01 21:49:04
>>901
いや、使う用件はあるだろ。

903:デフォルトの名無しさん
08/09/01 21:52:35
ready?

904:デフォルトの名無しさん
08/09/01 21:54:11
ストリームわかんねーの奴は「Cが難しすぎてJAVAに逃げてきました」って程度だろ。そういう奴はJAVAも無理無理。VBAかVBぐらい丁度いいよw

905:デフォルトの名無しさん
08/09/01 21:56:58
ストリームもそうだけど、スレッドも分からない奴がいたよな。
スレッド・セーフがどうとかこうとか適当な妄想を言ってたけど、アレはC#のスレだったか?

906:デフォルトの名無しさん
08/09/01 21:57:22
>>833はまったくの嘘だから気にしなくていいよ

907:デフォルトの名無しさん
08/09/01 22:05:57
StringBufferクラスの必要性をご教授ください。
Stringだけで十分だと思うのですが・・・

908:デフォルトの名無しさん
08/09/01 22:10:59
それなら、char[]で間に合うから、Stringも必要ないね

909:デフォルトの名無しさん
08/09/01 22:11:55
StringBuilderで間に合うから、StringBufferは要らないね。


910:デフォルトの名無しさん
08/09/01 22:18:08
ここは一応 初心者歓迎 となってるのを忘れてないか?

911:デフォルトの名無しさん
08/09/01 22:24:49
うん歓迎してるぜ。


912:デフォルトの名無しさん
08/09/01 22:28:42
充分にヒントになっているかと思うが?

913:デフォルトの名無しさん
08/09/01 22:34:35
>>908
悪いがそれは違うな。もう一度JAVAのオブジェクト指向プログラミングの技法とやらから初めて、一からやり直したらどうだろか? 

914:デフォルトの名無しさん
08/09/01 22:38:00
>>907
StringBufferはreverse()するとき良く使いますw

915:デフォルトの名無しさん
08/09/01 22:39:56
Stringクラスは代入するたびに新しいStringオブジェクトを作るので、
メモリ的にも処理速度的もコストが高いんよ。
例えば、aとbとcの文字列を連結する場合に以下のような処理があったとすると
--------------------
String buffer = a;
buffer += b;
buffer +=c;
--------------------
StringBuffer buffer = new StringBuffer(a);
buffer.append(b);
buffer.append(c);
--------------------
Stringでは、 += bをしている処理は a に b の文字列を連結してる
のではなく、 aとbを連結したStringオブジェクトを新しく作ってる。
同様に +=c の処理でも 新しいStringオブジェクトを作ってる。
一方StringBufferでは、 .append(b) では 文字列を連結しているので
新しいStringBufferオブジェクトは作っていない。
つまり、新しいオブジェクトを作っていない(newしていない)分
メモリも速度も節約できるということ。

916:デフォルトの名無しさん
08/09/01 22:45:57
>>906
答えられもしないくせに適当なこと言うな

917:デフォルトの名無しさん
08/09/01 22:46:22
>>915
文字列の操作を行う場合は、って前提が抜けてなければ完璧な回答だったのにな

918:デフォルトの名無しさん
08/09/01 22:54:39
まぁ今はコンパイルする時点で文字列の結合はStringBuffer#append()に置き換えてくれるから単純な結合は無視しちゃっていいけどね

919:デフォルトの名無しさん
08/09/01 22:56:28
0と1を反転させる方法を教えてください。
かっこいい方法は無いですか?


920:デフォルトの名無しさん
08/09/01 23:00:00
文字列の0と1なのか別のモノの0と1なのかくらい示せ

921:デフォルトの名無しさん
08/09/01 23:01:09
かっこいい方法…俺には無理だ

922:デフォルトの名無しさん
08/09/01 23:01:30
アセンブラの頃は良く XOR したな…

923:デフォルトの名無しさん
08/09/01 23:03:47
int型でお願いします。


924:デフォルトの名無しさん
08/09/01 23:09:04
>>915
そんな数十行にもわたって書くことじゃないと思うけど、お前が噂のニートだろ?それに友達も一人もいない自宅警備員で、実際は、プログラムも作ったことない無能だろww

925:デフォルトの名無しさん
08/09/01 23:15:03
おー、こわい、こわいw

926:デフォルトの名無しさん
08/09/01 23:17:44
> 893
ひとまず、標準入力の件に関しては
java ReaderClass < data.txt
といったデータの与え方をした場合の事なのではないかと理解しました。
確かに、この場合には間違いなく ready() の使い所と思います。
この理解は間違っているでしょうか?

927:デフォルトの名無しさん
08/09/01 23:18:52
>>915の性格はキモイ説明サイトと同類だな。
もう、そういうサイトはいっぱいあるし、一見丁寧に説明しているようでどうでもいいところが長いだけだし、その程度の説明じゃ人は来ないだろうけどww

たとえば、x=1; new StringBuffer(x)とかだと、その説明の効率的の指摘からすれば、逆に非効率になるんじゃないの?
知ったかぶっりの雑学知識を披露したのは、わからないでもないんだけどねぇ・・・それじゃ文系のITジャーナリストと同じムジナだな・・・

928:デフォルトの名無しさん
08/09/01 23:23:01
文系といえば、確かにALL ABOUTの記事かいてるのはキモイ奴の多いよな。
「どこにも就職できなかったけど、All Aboutで拾ってもらいました!!」て感じのオーラが強いって言うか…
早稲田みたいなところの心理学科卒業で、All Aboutで「アロマがどうとかは心理的に〜」とか専門術語を使って妄想記事かいてるのは吹いたww

>>915は結局それと同じムジナ。もう無理しないで死んでいいよ。


929:デフォルトの名無しさん
08/09/01 23:24:08
>>919
!

930:デフォルトの名無しさん
08/09/01 23:25:14
>>929それはboolean

931:デフォルトの名無しさん
08/09/01 23:29:51
妄想ならせめて旧帝大レベルじゃないとだめだろ。といっても、この前の東工大の学生は、左手腕に刺青みたいな模様をさらけ出してて、危ないやっちゃなと思ったけど、東工大は旧帝レベルだから少しは聞いてやったw
その話の真意よりも、たぶん自宅警備員候補だろうし、人生苦労する奴なんだろうなと思った。

932:デフォルトの名無しさん
08/09/01 23:30:17
>>926
そんな場合だからといってready()を使う必要なんてないよ。

10年ぐらいJava触ってて一度もready()を使ったことないけど、「入力が
なければ他の処理をする」という感じの疑似マルチスレッドぐらいしか
用途が思い付かない。で、そういうときは素直にマルチスレッドにする。



933:デフォルトの名無しさん
08/09/01 23:32:10
雑談したいなら他行け。

>>926
そうか?
標準入力を使うのは、その元が手入力だろうがファイルだろうがttyだろうがとにかく
何かが送られてくるのを受けたいだけだからだろう。
ファイルからだから ready を使うとか考えるのは違うんじゃないか。

934:デフォルトの名無しさん
08/09/01 23:35:41
つまり、>>915の説明はString/StringBufferの違いを本質的に指摘してないってことですね。実はそんな風に思ってましたがスッキリしました!

935:デフォルトの名無しさん
08/09/01 23:39:39
文系のITジャーナリストってのは、堀江豚と友達だったメガネで蝶ネクタイの30代ぐらいでキモイ奴か?
あいつは正に素早く死んで欲しい。いつもおれは、寝る前には必ず神棚で手を合わせて「早く死んでくれって」祈ってるぐらいだし。

936:デフォルトの名無しさん
08/09/01 23:41:15
それそろすれ違い

937:デフォルトの名無しさん
08/09/01 23:55:54
>932, 933
リダイレクトで渡せば EOF が取れないだろうから ready() の出番・・・と思ったのですが、書き込んでから試したらきちんと EOF になりました(阿呆です)
何か根本的に道を間違えているようです。
標準入力 + ready() というキーワードにこだわり過ぎているのでしょうか。
(その辺りを離れて単純に ready() の使い道を考えるのであれば、932 さんの仰るような nio っぽい使い方が一番の使い所であるような気がします。)


938:デフォルトの名無しさん
08/09/02 00:03:55
Stringをだな。阿呆みたいに+=で連結しまくってるコードがあったんだ。
あんまりにもあんまりだと思って、StringBufferで書き換えてみたんだ。
でもベンチマークを取ってみると、1msも変わらなくてだな。
そのメソッドのほんの数行、DBをアクセスしてる部分が、処理時間の99%
以上を持っていってたんだ……。


939:デフォルトの名無しさん
08/09/02 00:15:58
つまりStringBufferの利用価値は自己満足が大半ってことですね?

940:デフォルトの名無しさん
08/09/02 00:18:38
それで結局StringとStringBufferの違いは何?

941:デフォルトの名無しさん
08/09/02 00:19:36
Bufferって付いてるか付いてないか

942:デフォルトの名無しさん
08/09/02 00:20:07
確かによほど下手なことせん限り大差ないよな。でも演算途中でnew,new,new....ってのは気持ち悪い・・・

943:デフォルトの名無しさん
08/09/02 00:22:33
もう夏は終わったんだぜ?


944:デフォルトの名無しさん
08/09/02 00:23:20
でたでたでた。

945:デフォルトの名無しさん
08/09/02 00:23:47
ちなみにStringBufferとStringBuilderとかHashTableとHashMapとかだと
実際の所どの程度速度に影響するもの?

946:デフォルトの名無しさん
08/09/02 00:33:23
>>916
夏の終わりの駆け込みかと思ってたけど、オマエ、本気なんじゃないのか?

947:デフォルトの名無しさん
08/09/02 00:34:48
>>926
間違ってるな。

948:デフォルトの名無しさん
08/09/02 00:36:48
>>945
そいつらへのアクセスが処理の多くを占めてたら、それなりに効いてくるんじゃないか?
特にマルチコア/マルチCPUだと、synchronizedの部分でメモリの同期化が行われるから、それなりに馬鹿にならないコストがかかるような気がする。
とは言え、Java7あたりだと、JITコンパイラが不要なロックを省略するような最適化をぶちかましてくれるらしいからな……。

949:デフォルトの名無しさん
08/09/02 00:36:50
>>945
それは自分でやってみれば分かる事じゃん・・・

950:デフォルトの名無しさん
08/09/02 01:19:11
String:不変オブジェクト
StringBuffer:可変オブジェクト
っていう教科書にありそうなのではどうだw

951:デフォルトの名無しさん
08/09/02 03:03:11
>>945
今となっては多分そんなには変わらない。


952:デフォルトの名無しさん
08/09/02 03:14:15
まだやってんのか。違いは、効率じゃないんだよね。

953:デフォルトの名無しさん
08/09/02 03:27:17
ぼくらはreadyなんかなくても幸せ!

954:デフォルトの名無しさん
08/09/02 09:35:52
RandomAccessFileは、ソースを見てもnativeばかりですが、
実際(実装上)のところ多少はバッファがきいているから、BufferedInputStreamと同じように考えてよいのでしょうか。
他に気になるところはありますか?

955:デフォルトの名無しさん
08/09/02 09:39:19
EclipseってJavaでできてるみたいですが
Eclipseはexeにするのに何使ってるんですかね?

956:デフォルトの名無しさん
08/09/02 10:48:08
>>954
どうしてバッファされていると期待できるのかが理解できない。
ソースは見てないけど、バッファされないと思うぞ。バッファリングと
ランダムアクセスは相性悪いから。


957:デフォルトの名無しさん
08/09/02 10:53:37
いや、逆にバッファされていないと考える方がおかしいんだけど…
問題はバッファされているか・いないかじゃなくて、実用上問題ないかどうかだと思うが?

それと、ランダムアクセスとバッファが相性悪いのはどの辺りに根拠があるの?

958:デフォルトの名無しさん
08/09/02 11:07:42
相性とかそういうレベルの話でVMが作られてたら笑えるw

959:デフォルトの名無しさん
08/09/02 11:09:37
いつも通り>>956の思い込みが根拠じゃね?

960:デフォルトの名無しさん
08/09/02 11:17:54
>>958
そろそろ死んだ方がいいんじゃないか?人生疲れただろ。

961:デフォルトの名無しさん
08/09/02 11:21:53
そうだよな…なんで俺は生きてるんだろう…

962:デフォルトの名無しさん
08/09/02 13:09:56
ぼくらはEclipseなんかなくても幸せ!

963:デフォルトの名無しさん
08/09/02 16:01:00
ローカルでグラフィック描画する時は
Graphics gr = img.getGraphics();
gr.drawLine(x1,y1,x2,y2);
gr.dispose();
と毎回設定して廃棄しますが

グローバルで
Graphics gr = img.getGraphics();
としておいて、ローカルで
gr.drawLine(x1,y1,x2,y2);
だけで、ずっとgrを使いまわしてはだめですか?

964:デフォルトの名無しさん
08/09/02 16:23:10
いいよ
ずっと同じimgに描画するのなら

965:デフォルトの名無しさん
08/09/02 16:26:23
そうですか

966:デフォルトの名無しさん
08/09/02 17:39:54
ぼくはJCPADだよ!
みんな何使ってるの?

967:デフォルトの名無しさん
08/09/02 17:42:07
eclipse

968:デフォルトの名無しさん
08/09/02 17:43:36
今JCPADからEclipseに変えたとこ
閉じるのがいいね

969:デフォルトの名無しさん
08/09/02 23:22:31
30過ぎてJava覚えてJavaの資格とったらプログラマーの就職先見つかりまつか?

970:デフォルトの名無しさん
08/09/02 23:27:10
ちょっとの学歴あれば30ならまだ余裕で就けるよ

971:デフォルトの名無しさん
08/09/03 00:00:03
>>969
おでも三十で就職目指してます。
お互い頑張りましょう。

972:デフォルトの名無しさん
08/09/03 00:06:21
2つの別のクラスで同じ値を共有したいと思っています
ClassA、ClassBはループさせていて常に結果を出力しています。

ClassA{
if(hoge>0)
ClassF.setX(true);
else
ClassF.setX(false);
}

ClassB{
test.setEnable(ClassF.getX());
}

ClassF{
static boolean f;
static void setX(boolean bl){
 f = bl;
}
static boolean getX(){
 return f;
}
}

こんな感じのプログラムを書いたんですが、ClassBに反映されません
どこが間違っているんでしょうか?
それとも、別のクラスで同じ値を共有するのは無理なのでしょうか?

973:デフォルトの名無しさん
08/09/03 00:19:08
もうちょっと意図が分かるように書けよ。
ClassBに反映されないってどういう意味だ?
test.SetEnabledで思った値が取れてないってことか?

こんな擬似コードじゃ分からんけど、
もしループとやらが複数スレッドで同時に回し続けてるって意味なら、
ClassF.fへのアクセスを同期化する必要がある。
volatileにするかメソッドにsynchronizedつける。


974:デフォルトの名無しさん
08/09/03 00:19:34
>>972
別スレッドならsynchronizedかvolatile必須だぞ。
要素が1個かつJava5.0以上なら、AtomicBoolean等でもいい。

975:デフォルトの名無しさん
08/09/03 00:24:53
大量のUDPパケットを受信して、処理したいんですが、
どうしても、幾つかのパケットを取りこぼします。
何か、効率良く処理できる方法はありませんか?


976:デフォルトの名無しさん
08/09/03 00:32:18
>>973-974
ありがとうございます。
volatile static boolean f;
で望み度通りの結果を出すことができました。

977:デフォルトの名無しさん
08/09/03 00:37:50
>>975
どーやってんだ

978:デフォルトの名無しさん
08/09/03 00:44:18
>>976
変数が1個ならそれでいいけど、複数個ある場合はちゃんと同期取らないと変更途中のデータが読み出される可能性があるぞ。
詳しくは、マルチスレッドプログラミングに関する本を読んどけ。

979:デフォルトの名無しさん
08/09/03 00:46:00
>>975
UDPならパケットが取れないことがあるのは前提じゃないのか

980:975
08/09/03 00:46:50
DatagramSocketを使って、普通にポートを開いて受信しています。

981:デフォルトの名無しさん
08/09/03 01:26:19
>>979
答えは、UDPを使わないってことだな・・・

982:デフォルトの名無しさん
08/09/03 01:56:38
>>980
効率良くポートを開いて効率良く受信しろ

983:デフォルトの名無しさん
08/09/03 02:23:25
動的なキャストはどうやるんでしょうか?
windows95/98のプラットフォーム向けのアプリなんでjdk1.2相当なんですが。
よろしくお願いします。


984:デフォルトの名無しさん
08/09/03 02:26:08
動的キャストは、

Object obj;
...
val=(???)obj

ですが、???がコンパイル時未定の時のキャストです。

985:デフォルトの名無しさん
08/09/03 03:03:37
で、それに何の意味があるの?
???が未定なのにキャストした後でどうやって使うわけ?


986:デフォルトの名無しさん
08/09/03 03:15:12
>>984
valの型にキャスト

987:デフォルトの名無しさん
08/09/03 03:34:55

jdk1.5にある、val.getClass().cast(obj)

といった方が早いですね。これを1.2でやるにはどういうコードになるんでしょうか。


988:デフォルトの名無しさん
08/09/03 03:46:03
最近プログラムを勉強しはじめてわからないことだらけなのですが
キャストとパースの違いがよくわかりません
どなたか教えてください

989:デフォルトの名無しさん
08/09/03 04:35:02
>>987
>>985 >>986 は無視かい・・・
Class#cast() は
>public T cast(Object obj) {
>if (obj != null && !isInstance(obj))
>throw new ClassCastException();
>return (T) obj;
>}
となってるから generic が無いと無理なんだと思っとけ。
それよりもこれを使うようなのは相当面相なプログラムだと思うが、
これを使わないですむようにするほうが後々の為になると思うぞ。

990:デフォルトの名無しさん
08/09/03 04:49:15
無視というより、val=val.getClass().cast(obj) 程度で分かりませんでしたか。

使わないで済むように方法を探したんですけど、後々のためというより、ももともとターゲットが古くてこれしかないので聞いてるんですが?

知らないなら無理に御答えにならなくて結構ですけど、あなたはだいぶ妄想好きなんですねw

他に良い施策はありませんか?


991:デフォルトの名無しさん
08/09/03 04:59:34
>>984
val=(???)objのあと、valをどう使うつもりなの?
型が決まっていなければvalのメソッドとかを呼び出すコードもvalを他のクラスに渡すコードも書けないんじゃない?
というかval自体の型はval=(???)objの前でどう宣言しているの?
objになりうるクラス共通にインタフェースを実装させて、そのインタフェースにキャストするとか、
全体のクラス設計を見直した方がいいと思う。

992:デフォルトの名無しさん
08/09/03 05:01:45
単なるキチガイだったのか……

993:デフォルトの名無しさん
08/09/03 05:03:36
>>990
お前の問題だから自分で捜せ
そんな態度じゃまともな人のレスも付かないよ

994:デフォルトの名無しさん
08/09/03 05:07:05
そう思うんだけど、このスレの態度の方が酷くない。正しく真正糞スレだと思うが?

995:デフォルトの名無しさん
08/09/03 05:09:42
次スレ?

996:デフォルトの名無しさん
08/09/03 05:13:02
>>991
あなたは、答えらず、それにたいした能力もないのに、そんなに人の庭が好きなんですか?

その設計とやらを知って、あなたは手伝ってくれるんですかねw
一つ忠告しておけば、首突っ込むのは程ほどにした方がいいですよ。

997:デフォルトの名無しさん
08/09/03 05:16:24
>>998>>988に答えてやって>>999は次スレ立てて誘導>>1000は俺が踏む

998:デフォルトの名無しさん
08/09/03 06:02:25
ジェネリクスは静的処理...
コンパイル時に決定できない型は、キャストするのも代入するのも不可能也。

パース...parse...castに似ている部分もあるのか...

【初心者】Java質問・相談スレッド119【歓迎】
スレリンク(tech板)

999:デフォルトの名無しさん
08/09/03 07:51:27
999

1000:デフォルトの名無しさん
08/09/03 07:53:53
1000get!

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4362日前に更新/268 KB
担当:undef