Q. javac コマンドを実行したときに、
『コマンドまたはファイル名が違います』や
『'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
と表示されてコンパイルできません。
A. javac.exeへのPATHが通っていません。
http://java.sun.com/j2se/1.4.1/ja/install-windows.html を良く読んで、javac.exe のあるディレクトリ(例: C:\j2sdk1.4.1_01\bin )のパスを
環境変数PATHに追加してください。
その後、
Windows98/MEの場合はOSを再起動、
Windows2000/XPの場合はコマンドプロンプトを新たに立ち上げなおしてください。
設定したパスが正しければ、javacが使えるようになります。
それでも同じエラーが出る場合は、設定した値が間違っています。よく見直してください。
Q. javac Hello.java でコンパイルはできるのですが、
java Hello を実行しようとすると
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』
と表示されて実行できません。
A. カレントディレクトリ(.)がクラスパス(classpath)に含まれていません。
コマンドプロンプトで、
set CLASSPATH=%CLASSPATH%;.
と設定する。最後の「;」と「.」を見落とさないように!
または、
http://www.gimlay.org/~javafaq/S004.html#S004-02 を読んでカレントディレクトリ「.」を環境変数CLASSPATHに追加してください。
クラスパスとはなにか(JavaFAQ 基礎知識)
http://www.gimlay.org/~javafaq/S004.html
3 :
デフォルトの名無しさん :03/03/26 23:31
5 :
デフォルトの名無しさん :03/03/26 23:31
6 :
デフォルトの名無しさん :03/03/26 23:32
一個ずれた つд`)
|д゚)ダレモイナイ… ウマースルナライマノウチ | ゚д゚) | ( ゚д゚) | (゚д゚) | (゚д゚)ウマー |ミ サッ
つд`)ヤラナキャヨカッタ
過去ログ一覧をホームページにまとめたり、 namazu検索出来るようにしてくれる神はいないの?
前スレ、最後の方の例外の捕まえ方の話だけど、 いちいち返り値チェックしなくてはいけないとなると、例外のメリットが薄れるね。 「connがnullでない場合=ちゃんと実行されている」 よりも、 「openConnectionが例外を投げない場合=ちゃんと実行されている」 であるべきだと思うのだけど。 実際には腐った実装のものが多いって事なのかな。
19 :
デフォルトの名無しさん :03/03/27 07:30
ループ内で一時的な変数を使って処理をしたい場合 xが一時的な変数だとすると for () { int x; x = ・・・; } とするのと int x; for () { x = ・・・; } とするのと、どちらが好ましいですか? ループ内の一時的な変数という意味としては、前者の方が好ましいですが 処理を中心に考えると、ループ毎に変数を定義するのは無駄ではないでしょうか?
当然後者だろう。 どうしても一時変数として定義したいなら処理の前後をブロックで囲むとか
>>19 Java の前にやっていた言語は何ですか?
むしろ、関数で定義しちゃって、ローカル変数で処理するのが、一時的使用だと思われる。 つまり、 function loop() { var x = 0; for(;;) { x++; if(x == 999) { break; } } return 0; } 最近 パール系が多いので、スクリプト言語ですまん。 でも、やってることは、わかるはず。
俺は前者だな。最適化に期待。
>>19 意味的にもスコープ的にも前者が良い。個人的に。
>>19 出力されるバイトコード的には同じ。
要は好みだろうけど前者の方が間違いが少なそう。
>>22 >でも、やってることは、わかるはず。
Perl系にJavaScriptが含まれることとかな。
本当・・・、これは、好みだね。 僕は、ようは後者派なんだけどな(-.-:)
>>26 すまん、、伝え方がまずかったかな??
ようは、一時的なら、ローカル変数が良いかなっと思って…。
ただ、そこだけ伝われば、O.K。邪魔だったかな?
>>19 Cではこういうことできなかったけどこれじゃ駄目?
for(int x, y, z, a, b, c ; ; ){
x = ....;
}
>>29 何がしたいのか分からない・・・。
って言うかforの中にカンマ区切りって入れて良いの?
無駄にスコープ広げるのもなんだかねぇ。
>>22 >むしろ、関数で定義しちゃって
ループの度に?
classファイルが存在するパスを取得することは可能なのでしょうか? java Testという感じで実行された場合、Test.classの存在する場所を知りたいのですが。
>>30 変数宣言をいちいちfor文スコープの外でやって
for文を書くたびにインクリメント変数を別名で宣言し直す、という手間が省けると言うこと。
カンマ区切りはO.K. やってみればわかる。
あー、どうも。前スレの768です。 今、ふと疑問に思ったのですが、 自分はCからなので、ブロックを public class Test { こんなカンジで書いてしまうのですが、普通は public class Test{ って書くんですよね? 走らせてみたら、実行結果は変わらないようですが、 やっぱり郷に入ったワケですから、後者で書いた方がいいのでしょうか? どうでもいい疑問なのですが、答えて頂けたら幸いです。
>>36 >public class Test{
どっちかというとCがこっちじゃない?
>>37 でも、自分はいつもCでは前者ですよ。
本とかもほとんど
int main(void)
{
ですし。
JTreeの各ノードにJCheckBoxを表示させてチェックあり/なし+ラベル表示をさせたいのですが うまくいきません。 TreeCellRendererをimplementsさせてJCheckBoxを継承したクラスを作って public Component getTreeCellRendererComponentでsetTextで ラベルを表示させる事はできたのですがチェックボックスをクリックしても 何の反応もなく、チェックあり/なしを実現できません。 どうやったらチェックできるようになるのでしょうか?
BufferedReader でファイルを一行ずつ読むと、改行記号は含まれませんが、 改行記号も含めて一行ずつ読みたいときはどうすればいいのですか?
>>32 確かに、なんだよ。たかが一時ループの為に関数組むのは、非常に無駄だと、さっき思った。
やはりな、一番、良い意見としては、
>>20 ↑けっきょく、考えた末、彼の意見に到達してしまった。
それ以外なかろ~?ってか、手っ取り早いし。
しかも、『一時的な』っていう動作のとらえ方に、そもそもの問題がある。
>>40 System.getProperty("line.separator"); で改行文字列を得て,末尾に
くっつけてやれば良いのではなかろうか。
43 :
デフォルトの名無しさん :03/03/27 14:10
フロート掲示板CGIの設置方法教えてくらはい。
>>36 わしゃ、C言語の時代から後者を選択しておったよ
今でもJavaでは後者を選択しておる
45 :
デフォルトの名無しさん :03/03/27 14:46
Webのホスト名から、ドメイン名?だけ抜き出す方法ってありまつか? たとえば、 ・www.yahoo.co.jp ・rd.yahoo.co.jp ・help.yahoo.co.jp なんていうホスト名から、"yahoo.co.jp"だけ抜くと。 (String操作で、というのは無しで。) InetAddressクラスやらURLクラスやらを漁ってるんですけど、 うまいぐあいにいかないですね。。。
>>45 たとえば、さいたまさいたまのwww.pref.saitama.jpだと、なにをドメイン名というのでしょうか?
>>45 Stringクラスやら正規表現やらを使ったほうがいいかど
>>36 たしか、Sun のコーディング規約だと
public class Test {
みたいに Test と { の間にスペースが必要だったような…
つまり、ホストアドレスからFQNを得たいと。
>>48 いや、たとえばwww.lib.saitama-u.ac.jpだとsaitama-u.ac.jpが欲しい、とかさぁ、なにが欲しいの、実際?ってことがあるじゃん。
>>51 ソレ。そういう情報がホスィ。
FQDNってやつ?
>>53 FQDN(完全就職ドメイン名)ってwww.lib.saitama-u.ac.jpのほうなんだけど。
で、www.pref.saitama.jpだとなにが欲しい?
・・・スマソ 回線切って首吊ってきまつ。。。 ホスト名に関する基礎から勉強し直したほうがいいわけでつね。。。(;´Д`) www.lib.saitama-u.ac.jp だったら、 saitama-u.ac.jp が欲しいでつ。
www.pref.saitama.jp だったら、 saitama.jp なのかな・・・? やはり、文字列処理の世界?
真面目にやろうとすると各国 NIC の命名規則を調べて,いちいち対応しなきゃ ならんので大変だろうな。 汎用 JP ドメインみたく,後付けの規則も増えてくだろうしな。
>>56 www.city.saitama.saitama.jpだったらsaitama.saitama.jpが欲しい、だったらほんとに回線切ってイラクで人間の盾になってください。
結局ドットで区切って、最後の節と、あとは最後から二番目の節から3文字以上のものがくるまで、って感じか。
>>25 を読んで、実際に試してみたら本当に同じだった。
int x;
for(int i=0; i<10; i++){
x = i * 2;
}
for(int i=0; i<10; i++){
int x = i * 2;
}
みたいなコードをコンパイルしてJADで逆コンパイルしたら、どっちも
for(int j=0; j<10; j++){
int i = j * 2;
}
になった。毎回変数宣言するコストが減るかと思ったら全然関係
なくなるようなので前言撤回しますわ。これならfor文の中で宣言
したほうが絶対良い。
>>44 >>49 そうなのですかー。色々な意見ありがとうございます。
全体的には後者の方が多そうですね。
自分も後者で書いてみようかと思います。
なんだか後者で書かないとソースがJavaっぽくないですしw
>>58 DNS サーバに投げればドメイン名ってとれないっけ?
>>39 javax.swing.tree.TreeCellEditorも必要なんじゃないの?
64 :
デフォルトの名無しさん :03/03/27 22:34
アクションビーンとフォームビーンの違いがわかりません
>>65 どっちもjavaじゃないのか?
初心者だし
>>66 初心者以前のバカが回答するスレでは断じてないわけだが。
仕切り屋キモイ
>>68 でかいツラできる唯一のスレなんだから大目に見てやれや
>>64 アクションビーンはアクションを管理するビーンでフォームビーンはフォームを管理するビーンです。
たぶん。
75 :
デフォルトの名無しさん :03/03/28 00:55
>>18 あんたはtry{}catch{}finally{}の挙動わかってる?
例外が発生しないなら。の条件は意味がない。
それに、オープン時に例外発生するか、同try節の後続処理で例外発生するかわからない。
リソースがnullかどうかを判断するのは、どう考えても正当で安全な実装。
例外のメリットを言ってるわけじゃない。終了時に、finally節でリソースを解放
することの重要性。
>>75 18ではないが。
とりあえずこれね。
try {
URL url = new URL("
http://www.google.com/ ");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
try{
conn.setRequestMethod("GET");
}
finally{
try{
conn.disconnect();
}
catch(IOException e){
}
}
} catch(IOException e) {
}
で、conn.disconnect();のときにはconnはnullではないと思うのだけど。
それを前提にしてはだめなら例外の意味が激しく薄れるとおもうのだが。
77 :
デフォルトの名無しさん :03/03/28 01:12
ごめん、漏れの負けです。激しく強気ですた。 ソース見かえしたらfinally節でconnがnullはありえない。。 パッと見で意見した漏れがバカですた。 一番外側のtry{}finally{}でクローズした方がよくない?
>>77 てめぇだけは謝っても許さねぇ・・・・・・・。
クリリンの仇・・・・ィヤェィヤィヤィヤィヤ!
ループの先頭に戻るだけなら次のがいっちゃん正しいかと。
>>77 くりりんの仇は
>>78 がとったのでいいとして。
>一番外側のtry{}finally{}でクローズした方がよくない?
このへんの話題も前スレの987-で。
81 :
デフォルトの名無しさん :03/03/28 04:02
可変長引数を受け取る関数(メソッド)は定義できますか?
>>81 言語仕様で定義されてないので可変長引数は無理。
引数型 List にして Vector やら ArrayList で代用とか。
できませぬ。 java-house.jp/ml/archive/j-h-b/016188.html
84 :
デフォルトの名無しさん :03/03/28 04:20
>>60 そうなんですか。
出来たクラスファイルを、ファイル比較コマンドで比較したら
少し違っていたので、意味が変わっているのかと思っていました。
逆コンパイルしてきちんと中身を観るところまでやらないと駄目ですね。
同じになるなら、私もこれからは前者を使う。
テーブルを作るとき、いちいち byte[] hoge = { (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,} とキャストするのだるいし、読みづらい。 Cみたいにつづけてできないもんかね char hoge[] = { 0xFF,0xFF,0xFF,0xFF,} ってさ。
CですらできるのにJavaではできないのか。
a
aa
aaa
aaaa
94 :
デフォルトの名無しさん :03/03/28 05:38
おい、
>>19 の選択で
前者がイイって言ってる人いるけど
for文のなかで毎回、int x;って定義するっておかしくないか?
ばらして考えると
int x;
・・・・・
int x;
・・・・・
int x;
・・・・・
って書いてるのと同じだと思うんだが・・・
>>94 なぜ初期化してないローカル変数を参照しようとするとコンパイルエラーになると思うね?
は?intとかってデフォルトで初期化されるんじゃないの?
>>94 概念的にはむしろこうだな。
{
int x = ...;
...;
}
{
int x = ...;
...;
}
{
int x = ...;
...;
}
ループのそれぞれのxの内容は独立しているので、別の変数として扱う方が概念的に
より適切だと思う。
それに、コンパイラが最適化してくれるので、
ループの回数分メモリを消費したりメモリの確保/開放を繰り返すような
ことにはならない。
ならないよね?コンパイラのソースみた訳じゃないから知らないけど。
同じレジスタか、無理でも同じスタック領域を使い回すようにしてくると期待。
>>95 それは94には遠回りすぎる答えじゃないかな。きっと94はわからないよ。
98 :
デフォルトの名無しさん :03/03/28 07:21
だってローカル変数はまだインスタンスがつくられてない状態(の可能性が高い)だから
外からだったらOK
外からの場合何らかの形でインスタンスが出来上がって
初期化されている状態だからOK
ただ、その問題と
>>94 の話とはちょっと違うぞい
99 :
デフォルトの名無しさん :03/03/28 07:25
Java perlの連想配列みたいなことできますか?
102 :
デフォルトの名無しさん :03/03/28 08:05
103 :
デフォルトの名無しさん :03/03/28 08:17
ポインタは使えないのですか?
perl 知らんけど hashMap とか?
105 :
デフォルトの名無しさん :03/03/28 08:48
JavaとC#ってどっちがいいんですか?
106 :
宿題アリコ :03/03/28 08:55
107 :
デフォルトの名無しさん :03/03/28 09:01
引数の参照渡しはどうやるのだ?
>>107 引数がクラスの場合、Cのポインタ引数と同じく事実上の参照渡しとなります。
intとかcharはラッパークラスがあるんでそれを使用してみてください。
>>107 できません。
Java では全て値渡しです。
対象がオブジェクトの場合はオブジェクトへの参照が値渡しされます。
110 :
デフォルトの名無しさん :03/03/28 10:38
スレッドプールのイイ実装を教えて下さい マルチスレッドにしても一気にスレッドを実行しようとするので
>>110 sleep(Math.random() * 100000)
112 :
デフォルトの名無しさん :03/03/28 10:59
JavaとJava2って何が違うんですか?
114 :
デフォルトの名無しさん :03/03/28 11:09
>>113 ということは
1.3ならJava3ということですね
>>114 1.3 も 1.4 も Java2 のまんま。
119 :
デフォルトの名無しさん :03/03/28 12:13
スレッドを再利用したいんです スレッドを16迄に制限して 待ち行列で・・・
123 :
デフォルトの名無しさん :03/03/28 12:48
JavaBeansっておいしいコーヒー豆の一種ですか?
>>123 そう、乾いた空気のjava島でとれたうまい豆だ。
126 :
デフォルトの名無しさん :03/03/28 12:53
風呂釜洗うのってなんでしたっけ?
127 :
デフォルトの名無しさん :03/03/28 13:07
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
Javaは最近景気が悪いんだってね
もうJavaやっても稼げないよ。 まさかこのスレは好きでJavaやってる香具師なんていないよね? 仕事だから嫌々仕方がなくでしょ?
.NETの方が勢いがあっていいよね。
249 名前:デフォルトの名無しさん[] 投稿日:03/03/26 01:07
先日ソニーと三洋の2機種が発売されたんですが、
今までの機種で再生できた"自作着うた"が再生されなくなりました。
現在、携帯板で一部の人が解析作業を行っています。
しかし…うまい具合には進んで無いみたいです。
そこでプログラム板のBREWスレの皆さんにお願いがあります。
携帯板の発展のためにも力を貸して下さい。
お願いします。
詳しくは…
ついに「着うた」規制!
http://etc.2ch.net/test/read.cgi/phs/1048267361/ まで…。
250 名前:携帯板出張人[] 投稿日:03/03/26 14:09
解析作業の協力求む!!
ちょっとマルチですが、覗いているだけでもイイのでお願いします。
Javaの仕事がなくなったらみんなどうするの? そう遠い先の話じゃないよ。
>>140 その「人は生涯1言語しか同時に使えない」とか言うふざけた前提を捨てることから始めなさい。
FUD が得意なところを見ると M$ の下請けか (藁
143 :
デフォルトの名無しさん :03/03/28 15:47
>>141 禿同、
使い分ければいいわけだし
「プログラマ(自分)は1言語しか扱えない」って思ってるやつが危機を感じて
死滅スレとか立てて、同意を求めて安心したいだけだと思う
別に、Javaがたとえなくなったとしても
プログラマの仕事なくなるわけでもないし
それに、Javaを取り巻く環境考えても死にそうに無い
>>143 私も禿同
>140の言うように近いうちにJava案件がなくなり、
現在稼動しているJavaで作られたシステムが、
別の言語でのシステムに変更となったら、
大型案件が大量に受注できるので、それはそれでいいね。(w
146 :
デフォルトの名無しさん :03/03/28 18:13
Javadoc について質問です。 @seeタグを使いこなすのが大変です。 皆さんはどのように利用していますか?
サーブレットで、IDを重複させることなく生成させたいのですが、 シンクロを使わずにうまくできる方法はないでしょうか? 現在考えているものは以下の通りです。 前提条件:サーブレットのフィールドには int id=1と宣言されている。 int yourIdはスレッドごとに独立した変数。 1・誰かがサーブレットにアクセス 2・ yourId = id; //個人idを決定。 3・id++; //idをインクリメント。 この方法ですと、ほぼ同時にサーブレッドにアクセスされた場合yourIdが被る可能性があります。 なにか、もっとスマートな方法はないでしょうか。 わかる方いらっしゃいましたら、ご教授ください。
148 :
デフォルトの名無しさん :03/03/28 19:00
>>147 IDを生成するBeanを作って、ServletからはそのBeanを呼び出す。
そんで、BeanのID生成メソッドはシンクロナイズドにしておけばいいんでないかい?
おくんねえよ。
151 :
デフォルトの名無しさん :03/03/28 22:57
>147 Oracleがあるならシーケンスを使ってみるとか
private static int id = 0; public synchronized static int getId(){ id++; if(id == Integer.MAX_VALUE)id = 0; return id; } //... yourId = getId(); 一番単純なのはこうだけど… クラスの寿命をまたげないよ。クラスロードやJVM再起動のたびに idが0に初期化されてまう。それでもいいのなら。
>>147 データベースの機能使いそう。
最終的にデータベースに、そのデータを格納するなら。
どうも、前スレの768です。 質問なのですが、コンソール入出力で、 String ss; InputStreamReader isr=new InputStreamReader(System.in); /*(1)*/ BufferedReader kbd=new BufferedReader(isr); /*(2)*/ ss=kbd.readLine(); /*(3)*/ っていうのは、 (1)でSystem.in(キーボード入力)からisrへ入力して、 (2)で入力されたデータisrをkbdでバッファリングし、 (3)でString型のssにデータをバッファから渡す。 と言った流れなのでしょうか? Cと違って入力が一発で出来ないのですね。
>>155 readerに渡さずinputstreamのレベルで片を付ければ。
>>156 それって、
BufferedReader kbd=new BufferReader(new InputStreamReader(System.in));
ってコトですか?
すみません間違えました。 ・BufferedReader kbd=new BufferReader →BufferedReader kbd=new BufferedReader
>>159 すみません・・・。
言ってる意味が全然理解出来てないです。
161 :
デフォルトの名無しさん :03/03/29 00:50
欧州では「Java」の読み方は「ヤバ」?
162 :
デフォルトの名無しさん :03/03/29 00:52
163 :
デフォルトの名無しさん :03/03/29 00:56
>>161 オランダでは通りの名前で"Java Straat"という通りがあるが、
読みは"やーふぁ すとらあと"。
でも、プログラミング言語としての"Java"は"じゃわ"って感じで発音してる。
public FFX2 get(int num);
じゃヴぁ
167 :
デフォルトの名無しさん :03/03/29 01:07
J builderでWebアプリをつくるとき、 servlet・Beanはプロジェクト作成時にできたフォルダ下に置き、 JSPはtomcatのROOT下に置くようにしています。 問題なく動きはするのですがJSPだけTomcat下にもっていくのはわずらわし過ぎます。 JSPもJbuilderで作成したプロジェクト下に置けたりするのでしょうか? 拙い文章で申し訳ございません。 よろしくおねがいします。
Tomcatの設定をよく読め
170 :
デフォルトの名無しさん :03/03/29 01:45
林晴比古氏の新JAVA言語入門シニア編のエラッタってWebで公開されてるのでしょうか?
部長がエレベータ内で屁をこいた。ワロタ。 明日から経理部です。がんがります。
ウェブアップレットが見れないという人が多すぎる。 ・OSはXPではなく2000. ・JavaJITコンパイラもコンソールもログも有効にしてある。 ・すべてのクラスもHTMLもちゃんとアップロードしてあり、実際に見れる人もいる。 ・インターネット一時ファイルやクッキーなどをすべて消しても映らない。 ・JavaWebStartもインストール済み。 この条件以外で原因わかりますか? なにせ素人なもんで、これくらいしかワカリマセン。誰か教えてください。
ちなみにみられない人は ***.class not found って出るらしいです。 でもみられる人もいるので見つからないってのはおかしい・・・。
175 :
デフォルトの名無しさん :03/03/29 04:37
>>174 JVMの種類によって、HTMLのアプレット呼び出しタグの文法が違います。
調べれ。
176 :
デフォルトの名無しさん :03/03/29 05:25
>>107-108 サンクス。
ソート部分で毎回作り直さないといけないのかとか思ってました。
>>147 JAVAだけでやるのであればsynchronized文を使うしかないでしょう。
必死だな
String の文字列が与えれたときに、それを ',' などで分割して、 String の配列にしたい場合、 何を使えばいいのですか? String ,StringBuffer をみても、適当なものが見つからなかったのですが。
>>180 java.util.StringTokenizerが目的に合いそうです。
>>182 split がありますね。^^;
見逃してました。
StringTokenizer でもいけそうです。
184 :
デフォルトの名無しさん :03/03/29 11:52
北米版でJAVA質問相談専用スレ立ちました。 どうか北米の悩める留学生を助けてください。(今のところ救世主はいません。) 英語のままの場合が多いので英語にすこし自信がある方お願いします。
保守
>>175 HTMLタグが違うんですか?呼び出し方って
<applet code="****.class" width="300" height="50">
でいいんじゃないんですか?調べたけど分かりませんでした・・・。
>>175 >>188 W3C標準にあわせて、
appletタグの代わりにpbjectタグかな?
appletでも問題ないはず。classファイルとhtmlファイルの場所が異なるとか?
まず、appletviewerで動いた?
クラスを複数使う場合はjarで圧縮することをお勧めします。
>>189 手持ちの本で
>>190 見られる人もいるのでclassとHTMLの場所が違ったりすることもないです。
もちろんappletviewerでも動きます。
>>190 jarで圧縮って2つだったら2つまとめるんですか?
>>184 英語つかえるんだったら
JavaRanchかSun DeveloperServiceのForumに逝くほうがよさそうだけど。
デフォルトのファイルエンコーディングを変えたいとか、 そう言う時にいちいちjavaコマンドに-Dオプションを渡さずに済むような ドットファイルみたいなプロパティファイルの置き場所ってありますか?
195 :
デフォルトの名無しさん :03/03/29 18:06
クラスメソッドやクラスフィールドっていつ、どういった 使うのですか? staticある時とない時の違いがいまいちわかりません
>>192 Webでは複数のファイルをまとめてjarで圧縮した方がダウンロード速度が高まります。
詳しくは、jarコマンドについて調べてみてください。
197 :
デフォルトの名無しさん :03/03/29 18:21
「メソッドを呼び出すときは必ずインスタンスを呼び出さなければならない」 とありますが 本やサンプルなど見ると、 必ずしもそうとはおもえないのですが。
198 :
デフォルトの名無しさん :03/03/29 18:34
他のクラスのメソッドから文字列を戻り値としてもってきたいんですが、 途中で改行が入ったものをString型で持ってくることってできますか?
>>197 「インスタンス」メソッドを呼び出すときは必ずインスタンスを呼び出さなければならない
ですよ。
「クラス(static)」メソッドはインスタンスいりません。クラス名だけで呼び出せます。
>>198 \nとか\rとか(環境によります)がはいっているだけですよ。
>>200 インスタンスは作るもののような気がしないでもない。
>>200 インスタンスは指定するもののような気がしないでもない。
>>202 必ずプログラマがnewをコールしなきゃいけないわけでもないので、
感覚として作るオンリーということはないな。Factoryパターンとかあるし。
>>204 じゃあ彼はインスタンスメソッド?を呼び出す際は必ずFactoryパターンを使ってるってこと?
>>205 しらんよ。つうか、そんなこと突っ込んで意味あるの?
>>206 >そんなこと突っ込んで意味あるの?
良い暇つぶし。
208 :
デフォルトの名無しさん :03/03/29 19:19
インスタンスメソッドとクラスメソッドの違いって何ですか? 参考書はインスタンス情報とクラス情報を保持としか書いてない・・・
クラスメソッドはCの関数と同じだろ
>>208 実行時の違いは、インスタンスメソッドは、インスタンスのthis参照を暗黙に渡してる。
だから、インスタンスメソッド内でthis.ホゲとやると、thisのインスタンスフィールドとか
をよびだせるのよ。
クラスメソッドは、(渡すべきthis参照も無いので)thisを渡さない。
違いはそんだけ。
>>208 GoFのSingletonパターンというものを調べれば
その違いがよくわかる
213 :
デフォルトの名無しさん :03/03/29 19:47
拡張子.javaが無いんですけどどこでインストールすればいいんですか?
216 :
デフォルトの名無しさん :03/03/29 19:51
テキストでTest.javaとやって保存するとTest.java.txtになってしまいます。 フォルダオプションで調べても.javaが見つかりませんでした。 どうすればいいですか?
>>216 登録されている拡張子を表示しないオプションを外しましょう。
218 :
デフォルトの名無しさん :03/03/29 19:53
220 :
デフォルトの名無しさん :03/03/29 19:56
>>214 ,215,27,219さん
ありがとうございます
222 :
デフォルトの名無しさん :03/03/29 20:00
やっぱ解決しませんでした
223 :
デフォルトの名無しさん :03/03/29 20:05
何をどうしても*.java.txtになってしまいます。
末尾の .txt を消せばいいじゃん
225 :
デフォルトの名無しさん :03/03/29 20:09
保存するときに勝手に付いてしまいます。
>>223 じゃああきらめるしかないな。
「すべてのファイル」で.txtがついてしまうなら、そのソフトはOSごとあぼーんしたほうがいい。
だから保存した後で末尾の .txt を消せばいいだろデブ
229 :
デフォルトの名無しさん :03/03/29 20:11
>>223 メモ帳はファイルを保存する時、ファイルの種類がデフォルトで
テキスト形式になっているから.txtが付く。
ファイルの種類ですべてのファイルを選んで.javaという拡張子を
つけて保存。
保存するときダブル区ぉーとで囲め "Test.java"
フォルダオプションで拡張子表示してる?
232 :
デフォルトの名無しさん :03/03/29 20:14
ある時点で、それまでいくつのインスタンスが作成(new)されたかを 返すようなメソッドを実装しようとしてみれば、static method の意味が わかるかも。
>>234 パフォーマンスのチューニングとか、
インスタンス毎にID振りたい時とか。
生き残ってるインスタンスをダンプしたりとか。
237 :
デフォルトの名無しさん :03/03/29 21:19
dogetやdopostメソッドって メソッド名を変えたら駄目でしょうか? メソッド名って決まってるのでしょうか?
>>237 デザインパターンのテンプレートメソッドパターンです。
メソッドオーバーライドで振る舞いを変更するのです。
メソッド名を変えてしまうとオーバーライドになりません。
239 :
デフォルトの名無しさん :03/03/29 21:21
>>237 スーパークラスのメソッドをオーバーライドしてるってことわかってる?
240 :
デフォルトの名無しさん :03/03/29 21:37
>>238 じゃ全然関係ない自分で作ったクラスに
dopostメソッドなどを作っても
特に問題なしでしょうか?
>>232 そろそろPC初心者板逝きだな。
> エラーが出て無理でした
どんなエラーかは決して書かない理想的な初心者ですね。
>>240 お前は2ヶ月質問禁止。その間自分の力だけで勉強しろ。じゃないと一生バカのママだぞ。
>>242 一生バカボンのママだといいでつね(´ー` )
>>240 勝手にしてください。何につかうか知りませんが。
月刊ジャバワールドでJarOutputStreamを使ってJarファイルを作成する記事があったと思うんだけど、何月号かしらない?
>>213 メモ帳なんか使うな。
Emacsか秀丸インスコして使え
なんでC#の2chブラウザはあるのにJavaの2chブラウザはないんだろうね
ネットワークバイトオーダをホストバイトオーダに変換するメソッドはありますか? C言語のntohs()のようなもの
>>250 ない、と思うが自作できるし、そもそも ntohs() とかって実行環境の
バイトオーダーを吸収するものだから Java で同等機能が必要なのか?
>>248 おまえが知らないだけ
アフォは死滅スレで吠えて来い
254 :
デフォルトの名無しさん :03/03/30 00:35
アプレットに2行のラベルって貼れるのでしょうか?例えば、 Label L1=new Label(); L1.setText("あいうえおかきくけこ"); add(L1); で、setTextの内容を2行でアプレットに表示させたいのですが、 できるのでしょうか?表示したときに、 あいうえお かきくけこ となるようにしたいです。教えていただけませんか。
255 :
デフォルトの名無しさん :03/03/30 00:43
eclipseって日蝕の蝕で つまり sunを蝕むという意味だと聞いたのですが本当ですか? つまりSunにあからさまに敵意をむき出してるのですか?
すいません ちょっと前にdogetとdopostの質問がありましたが dogetとdopostの違いって何ですか?
Label L1=new Label("あいうえお"); Label L2=new Label("かきくけこ"); setLayout(new GridLayout(2, 1)); add(L1); add(L2);
total solar eclipse
261 :
デフォルトの名無しさん :03/03/30 01:18
>>261 そんなことが載っている英和辞典ってどこにあるんですか?
>>256 postはボタンを押したとき
getはハイパーリンクを押したとき
じゃなかったっけ?
get が、よくURLで、?の後ろとかにくっついて入力やら値やらが渡される。 postは、環境変数で渡される。
>>263 大抵ういう風ニナッテマスが、それはHTMLformタグのmetod指定がPOSTになってるから。
&ハイパーリンクを押した時にブラウザがGETメソッドでリクエスト送信することに
たまたまなってるから。直接関係があるわけじゃないです。
Exception in thread "main" java.lang.NoClassDefFoundError: hellojava 実行すると、こうなるんですが問題はなんなんでしょうか?
クラスがないってさ。 java hello.java って実行しようとしたでしょ。 java hello でやってみて。
>>264 POSTで渡したデータはなんという環境変数から読むの?
(実行時に) 「hellojava」というクラスが見つかりませんでした。 実行するときのクラスパスを見直してみれ
と、思ったら、拡張子入ってなかった。ごめんね。
>>255 なるほど。
そう言われてみればアイコンも日食っぽいね。
.classって拡張子にしては長すぎる
>>268 サーブレットの話だよね?
request.gerParameter(キー);
>>254 L1.setText("<html>あいうえお<br>かきくけこ</html>");
すまん。サーブレットなら解析してくれるのがあるのか。
>>276 うむ。doPost()なりdoGet()なりがコールされる時点で、APサーバが
きちんと解析を終わらせてメソッド引数オブジェクトの属性としてしま
ってくれている。
そのへんのこと全部やってくれるのもServletの便利な所の一つ。
>>278 PHPみたいだな。
どちらもWebが前提だから当たり前だけど。
>>279 まあ、Web前提のフレームワークなら何でも当たり前だよな。
Perlダッテそういうモジュールあるでそ。
>>278 つうか、そのくらいやってくれんとWebフレームワークとして使い物にならんがね。
ь( ^ー゚)ひさびさに初心者大歓迎な雰囲気でつね。
>>176 ソートだったら自分で作らずともライブラリにあるわけだが
>>254 JLabel l = new JLabel();
l.setText("<html>あいうえお<br>かきくけこ");
swing の場合 html パーサが内蔵されているので
html の断片をテキストに与えるとそのように表示される
>>284 この場合って、htmlタグは要るのかい?
漏れの記憶だと要らないと思った。
>>283 Jarファイルの作り方、教えてくだされ。
これじゃうまく解凍できねぇのです。
byte[] data;
---
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JarOutputStream jos = new JarOutputStream(baos);
JarEntry je = new JarEntry("test");
jos.putNextEntry(je);
jos.write(data);
je.setSize(data.length);
CRC32 crc = new CRC32();
crc.update(data);
je.setCrc(crc.getValue());
jos.closeEntry();
jos.close();
ちょっとしたコードで実験してきました。 お馬鹿な俺を攻めてくれ。 <html>無し →あいうえお<br>かきくけこ <html>有り →あいうえお かきくけこ
>>286 パッケージの使い方をシランからヨクワカランが、それはエントリと
CRCしかwriteしてないぞ。いいのかオイ?
>>288 いや、投稿->配送されない->再投稿という流れがみてとれる。
すまぬ。誤爆。高木先生のスレに書くつもりだた。
こうか?
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>288 としたかったのだよ。
>>289 これで、解凍できるものは解凍できる。20ファイル中3ファイルくらい。
でも、
JarEntry je = new JarEntry("test");
je.setSize(data.length);
CRC32 crc = new CRC32();
crc.update(data);
je.setCrc(crc.getValue());
jos.putNextEntry(je);
jos.write(data);
というようにJarEntryに値を設定したあとでputNextEntryしたらちゃんと動いた。
あ、仮圧縮して圧縮後サイズをもとめてje.setCompressedSizeもやった。
この仕様、どうにかならんのか?
>>288 <html>がなかったらhtmlなのかただの文字列なのかわからんだろ
しかし<html>で始まるただの文字列をと表示させるようと思うとめんどくさいな
>>294 &lt;と&gt;では代用できないようなんだが、どうしたもんかな。
頭に"<html>"をつけてやれば、解決でちた。
DOSマドで、エラー出力ががとれないので どうしたらいいか聞いたら リダイレクト 2> でとれっていわれたんだけど とれない。 2>ってなんですか? あと、エラーとるほうほうありますか
298 :
デフォルトの名無しさん :03/03/30 05:36
>>297 >はWindowsNTのDOSプロンプト用の、リダイレクト指定です。
2は標準エラー出力のファイルディスクリプタ番号です。
プロセス名 2> ファイル名
とやると、プロセスが標準エラー出力に吐き出したテキストを
そのままファイル名のファイルに書き込んでくれますよ。
ただ、「NT用」です。NT/2000/XPで無いと機能しないです。
IDEをつかって起動するのがイイデスヨ。大抵はIDE内部のテキス
トエリアにリダイレクトしてくれますから。
あと、秀丸のマクロとか、Emacsとかエディタから起動する
設定して、標準出力、標準エラー出力をそのエディタにはく
ようにするというのもイイ!よ。
>>298 どうもありがとう。
とてもわかり易かったです。
300 :
デフォルトの名無しさん :03/03/30 05:39
array[0] で 1つできてしまうのはなんでか?
301 :
デフォルトの名無しさん :03/03/30 06:09
>>300 質問の意図が今ひとつ不明ですが…
int[] array = new int[0]で、長さ0の配列オブジェクトができるのは、
そういう仕様だからです。
Javaで配列は、配列オブジェクトという特殊なオブジェクトです。Cとかの
配列とは全く違います。(array instanceof Object)はtrueになります。
302 :
デフォルトの名無しさん :03/03/30 06:18
>>301 いいえちがいます。
int[] array = new int[0];
で
array[1] = 0;
ができてしまうんです。
つまり
new int[0] が new int[1] と等価なのはなんでか? と言う質問です。
303 :
デフォルトの名無しさん :03/03/30 06:19
UNIONってどうやればいいの?
>array[1] = 0; じゃなくて array[0] = 0; だった
>>302 できねぇよ。int[] array = new int[1]; array[0] = 0; と勘違いしてねー?
C:\>copy con a.java
public class a{
public static void main(String[] args){
int[] array = new int[0];
array[0] = 0;
}
}
^Z
1 個のファイルをコピーしました。
C:\>javac a.java
C:\>java a
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at a.main(a.java:4)
C:\>
308 :
デフォルトの名無しさん :03/03/30 07:08
sessionってどういうときに使うのですか?
>>307 C:\>java -version
java version "1.4.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)
Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)
一応新しい奴なわけだが
>>307 クライアント側の情報をサーバ側で一時的に保持しておきたい場合など。
具体的には前の画面で入力した文字列を別の画面で使いたい場合なんかに使う。
>>309 もっと新しいのあるけど…
java version "1.4.1_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_02-b06)
Java HotSpot(TM) Client VM (build 1.4.1_02-b06, mixed mode)
session ってなに?
>>300 >>302 コンパイルエラーにならないって事なら、多分仕様どーりです。
実行環境が (new int[0])[0] = 0; を許すならバグ報告しておいて。
>>310 1.4.1_02(Windows用)でも実行時エラーがでるよ。今試した。
public class Array {
public static void main(String[] args) {
int[] array = new int[0];
array[0] = 1;
System.out.println(array[0]);
}
}
実行するとこんな感じね。
java.lang.ArrayIndexOutOfBoundsException: 0
at Array.main(Array.java:4)
Exception in thread "main"
>>302 ができるというなら、JREのバージョンとOSとコードを見せてくれ。
>>313 って言うか0個の要素を持つ(要素を持たない)配列の0番目の要素があるわけがない。
後、実行時エラーじゃなく例外と言いなさい。例外と。
>>256 みんな HTTP を理解していないのだが、
簡単に言うと、
get
http:// ~/ のうしろに & とかつけてパラメータを送るヤツ
post HTTPリクエストのContentにパラメータを入れて送るヤツ
で、get はあまり大きなデータを送れないってとこかな。
317 :
デフォルトの名無しさん :03/03/30 15:10
>>316 POSTでも
http:// ~/ のうしろに & とかつけてパラメータを送れるんですが。
> みんな HTTP を理解していないのだが
がなければ問題ない発言なんだけどね。
晒しage
>>317 実際そうだと思うけどな。
263 名前:デフォルトの名無しさん 投稿日:2003/03/30(日) 01:32
>>256 postはボタンを押したとき
getはハイパーリンクを押したとき
じゃなかったっけ?
264 名前:デフォルトの名無しさん 投稿日:2003/03/30(日) 01:37
get が、よくURLで、?の後ろとかにくっついて入力やら値やらが渡される。
postは、環境変数で渡される。
265 名前:デフォルトの名無しさん 投稿日:2003/03/30(日) 01:39
>>263 大抵ういう風ニナッテマスが、それはHTMLformタグのmetod指定がPOSTになってるから。
&ハイパーリンクを押した時にブラウザがGETメソッドでリクエスト送信することに
たまたまなってるから。直接関係があるわけじゃないです。
バカのバーゲンセールか。と。
特に
>>264 な、CGIで環境変数にパラメータを入れるのはGETだ。
submitボタンを押したら、それにバインドされたメソッドが呼び出される。 リンクを押したら、それにバインドされたメソッドが呼び出される。 こーゆー、イベントドリブンのような動きをするAPサーバーがあるんだけど、 それを主でやっている人の中には、リンクを押したときに、formの入力が送られてこないのを 不思議に思っている人がいたよ~
>>319 >>265 もあそこまでできるんだからちゃんと訂正してやればよかったのにな。
っていうかなんかWeb制作板レベルでしゃべってるような気がしてならん。
>>322 dopostとdogetの違いだっけ?
文字数が違うとかくらいしか答えれないな。他に情報ないし。
>>323 servletと推測できてJava検定級レベル。
325 :
デフォルトの名無しさん :03/03/30 16:38
Frameを継承して、mainメソッドを定義したMyFrameクラスを定義しました。 mainメソッドでMyFrameをnewして、mainメソッドからreturnしました。 そこで質問です。 mainのスレッドは処理を終えたのに、なぜプログラムは終了しないのでしょうか? また、GUIから入力があると反応するのですが、MyFrameのメソッドを呼んでいる このスレッドは誰が持ち主でどこから来ている物なのでしょうか?
>>325 スレッドが残ってるから
> どこから来ている物なのでしょうか?
OS → VM → MyFrame
>>326 すみません。setDaemon(true)したスレッドがmainスレッド終了と同時に落ちてしまいます。どうしたらいいでしょうか?
328 :
デフォルトの名無しさん :03/03/30 18:10
330 :
デフォルトの名無しさん :03/03/30 19:25
キャストの意味がよくわかりません (String)や(Int)みたいに文字列にしたり、数値に変換したりだとなんとなくわかるのですが 自分で作ったクラスなどにキャストだといまいち意味がわからないのですが・・・
>>330 キャストはコンパイラへの指示。その時点で実際の値は変化なし。
>>320 それはASP.NETでも同じ。
好き・嫌いに関わらず今後はそういう方向に向かうでしょう。
334 :
デフォルトの名無しさん :03/03/30 19:48
質問です。Javaではポインタなどがなさそうですが、 関数の戻り値として複数の値を返したい場合、 もしくはコールバイリファレンスを使用したい場合、どうすればよいのでしょうか? グローバルで定義して、それを書き換えるしかないのですか?
335 :
デフォルトの名無しさん :03/03/30 19:53
>334 ポインタはある。ポインタの演算がないだけ。 メソッドの引数に値を渡すとき、プリミティブ型は値をコピーして渡すが、オブジェクト方はポインタを渡してる で、複数の値を渡したい場合はjava.util.ArrayListなどにデータをいれて、受け取った側でそれを解釈するとよいかも
>>334 オブジェクト型は参照型なのでそれを利用します。
>334 ポインタはある。ポインタの演算がないだけ。 メソッドの引数に値を渡すとき、プリミティブ型は値をコピーして渡すが、オブジェクト方はポインタを渡してる で、複数の値を渡したい場合はjava.util.ArrayListなどにデータをいれて、受け取った側でそれを解釈するとよいかも
回答ありがとうございます。 Cの知識しかないので、まだよくわからないんですが、 基本的に、関数の引数の値を関数内で書き換えた場合、 関数の処理後の、引数の値は変わっているってことなのですか?
340 :
デフォルトの名無しさん :03/03/30 20:02
jakarta-tomcat-4.1.18をインストールし 環境設定をそれぞれ設定し tomcatを立ち上げようとすると コマンドの起動画面が出てきますがすぐに消えて起動しません 教えてください。お願いします ちなみにフォルダパスはデフォルトで C:\jakarta-tomcat-4.1.18\catalina\src\binの直下のstartup.bat です
>>339 Cの知識しかないので、日本語も読めません。
次スレからスレタイの「初心者大歓迎」を外せ
どうもすいません。 オブジェクト型とプリミティブ型の違いがあまりわかっていません。 結局、オブジェクト型を使えってことは、 いちいちクラスの設計が必須ということなんでしょうか?
344 :
デフォルトの名無しさん :03/03/30 20:14
>>340 ちなみに同じやり方で
tomcat3.2.3でインストールし環境を設定すると
バッチもうまく起動し、画面も表示されます
3.2.3の場合
C:\jakarta-tomcat-3.2.3\bin
ですが、このようなディレクトリの構成で違ってくるのでしょうか?
>>343 > 結局、オブジェクト型を使えってことは、
> いちいちクラスの設計が必須ということなんでしょうか?
そうだね。自分で設計することも、よくあります。
あるいは、すでに設計されているクラスを使う、という手もある。
例えば、平面状の座標 x, y という2つの値を、メソッドから返したい場合は、
(2つの値をメソッドから返すのが無理なので)Point というクラスを使って、
そのインスタンスをメソッドから返すようにするとか。
すでに、java.awt というパッケージに、Point というクラスがあるので、
この場合は使える。
>>343 プリミティブ型にはラッパークラスがすでにある。
後のクラスやら配列はオブジェクトだから問題なし。
なるほど、なんとなくわかってきました。 iアプリを作ってるので、一度きりしか使わないクラスなど、 あまり余分なコード書きたくなかったのです。 ありがとうございました。
349 :
デフォルトの名無しさん :03/03/30 20:25
>340 おれも最近にたような現象ではまったてた。 俺の場合はtomcatが起動しようとするポートをすでにローカルプロキシで使ってた ポート変更したら起動したよ
351 :
デフォルトの名無しさん :03/03/30 20:41
>>349 >俺の場合はtomcatが起動しようとするポートをすでにローカルプロキシで使ってた
すいませんどういう事でしょうか?
初心者なんでいまいちよくわかりません
申し訳ないです
>>351 >初心者なんでいまいちよくわかりません
じゃあtomcatでservletなんて大それたこと考えない。
353 :
デフォルトの名無しさん :03/03/30 20:43
Mapでkeyにintやlong使うのは無理なのでしょうか?
>>353 無理です。IntegerやLong使ってください。
または、そういう値をキーにできるマップを自作するかネットで探しなさい。
どうしても欲しくて、自作した人がいるから。ポインタ忘れたけど。
>>352 JDK、tomcat、サーブレット、JSP
このあたりはJavaの入門だろ?
>350 でなかったんだ、それが eclipseから起動したりしてログをみようとしたんだけど、いまいち理由がわからんかった ちなみにローカルプロキシっていうのは >351 tomcat3を立ち上げたままtomcat4を立ち上げようとしてないよね?やってたら止めるべし tomcat3の初期設定をしたのが君じゃなければ、設定した人に相談するべし おれの環境ではC:\JavaSoft\jakarta-tomcat-4.1.18-LE-jdk14\binで動いてるので バイナリビルド(インストーラなし)を落としてきて、解凍した物をそのままつかうべし
ちなみにローカルプロキシっていうのはProxyomitronね
>>tomcat、サーブレット、JSP Javaの入門かもしれませんが、実は「プロセス間通信」「HTTP」 などの知識が必要なので、必ずしも 初心者向けの話題では有り ません。
少なくとも、PC初心者とプログラミング初心者ではその技術レベルは全然違うだろう。
361 :
デフォルトの名無しさん :03/03/30 21:00
>>356 ありがとうございます
tomcat3は立ち上げていません(再起動も何度もしました)
初期設定をしてのは全て自分です(3.2.3と同じやり方です)
ちなみに解凍したものをそのままのディレクトリで使っています
何度もアンインストールしたり再インストールしているのですがどうしてもうまくいきません
362 :
デフォルトの名無しさん :03/03/30 21:03
やさしいJavaと言う本を読んで勉強しているのですが、 インターフェースと抽象クラスの違いがよくわかりません。 インタフェースはこのようなときに使い、抽象クラスはこのような時に使う等と 具体例を出して教えていただけないでしょうか?
363 :
デフォルトの名無しさん :03/03/30 21:08
>>361 環境変数tomcat_homeとかcatalina_homeとか違うディレクトリになってたりしない?
>>362 トラックとF1カーを生成したいとき、両方のベースとなる車を定義しておきたいときは抽象クラス。
車とコンピュータとか、全く違うものに「検査」という共通の仕事を課したいときはインターフェース。
・・・・もっと賢い人のレスを待ってください。
365 :
デフォルトの名無しさん :03/03/30 21:14
>>363 classpath = C:\jakarta-tomcat-4.1.18\catalina\src\conf
tomcathome = C:\jakarta-tomcat-4.1.18
です
366 :
デフォルトの名無しさん :03/03/30 21:16
>>364 レス有難うございます。
感覚的にわかりやすい説明有難うございます。
しかし、私が困惑してることは、インターフェースと抽象クラスの働きが同じような気がするんですよ。
同じような働きをするメソッドを使いたいときはインターフェースを使うってことでいいのでしょうか?
たびたび抽象クラスとインタフェースの使い分けについての質問があるけど 質問者の多くにとってはまだそんなことを考えるべき段階にないと思う。 抽象クラスやインタフェースはもっと他の経験を積んでからの方がよいのではないか。
369 :
デフォルトの名無しさん :03/03/30 21:25
>>367 レス有難うございます。
確かにそうかもしれませんね。でもせっかくオブジェクト指向の言語を使ってるので、何となくきれいなソースを書き上げてみたかったのです。
>>362 interfaceはコンクリートメソッドをもたない抽象クラスです。
クラスとの違いは多重継承できることです。
ただしJavaではinterfaceの継承はimplementsを使います。
ということから、実際の用途は異なります。
クラスの継承は実装を継承するときに使います。
interfaceのimplementsは、共通のインターフェイスを実装するときに使います。
たとえば
>>364 のトラックとF1カーの例ならエンジン・タイヤ・運転席を持つといったインターフェイスの部分しか共通ではないので
interface car{
タイヤ
エンジン
}
としておいて、
class formulacar implements car;
class track implements car;
などとして
class f3000 extends formulacar;
class f1 extends f3000;
class 軽トラ extends track;
class 軽バン extends 軽トラ
などとしたほうが良いです。
このときformulacarやtrackもinterfaceとした方がいいという考え方もありです。
つまり、interfaceは、こんなものが欲しいけど中身はどうでもいいということを主張するために使います。
そして、classを「こんなもの」の仲間に含めたければinterfaceをimplementsするわけです。
ついで。 実際にはinterfaceの多くの使い方は、コールバックの実現です。 つまり、ボタンが押されたときこのメソッドを呼んでおくれ、とか、スレッドが始まったらこのメソッドを呼んでおくれ、とかいうときに、そのメソッドをいろんなクラスに自由に組み込むために使います。 たとえばCanvasクラスのpaintメソッドは、そこらへんのクラスにちょっと付け加えるというわけにはいかず、必ずCanvasクラスを継承したクラスで実装する必要があります。 でも、ActionListenerのactionPerformedメソッドは、そこらへんの、たとえばFormを継承したクラスにimplementsすることができます。
>>370 それって親子関係が無くなって醜く横に広がらない?
初心的な質問で申し訳ないんですが, J2SE SDK 1.4.1 をインストールした結果, なぜかjarファイルへの関連付けだけがされていないようなんです. 関連付けるにはどうしたらよろしいんでしょうか? よろしくお願いします. 動作OS Windows XP
補足 他の使い方としては、クラスにしるしをつける、という使い方があります。Serializableみたいな。 もうひとつは、ライブラリを使う側はinterfaceであることを意識する必要はないのですが、ライブラリの仕様を決めるために使います。 java.util.Mapとかjava.sql.ResultSetとか。 漏れはその3つの使い方しかしりません。
>>373 実際にフォーミュラカーとトラックはフレーム・サスペンション構造など全く違うので、継承関係はなく横の広がりだと考えるなら、実態を反映しているからアリだと思います。
そう考えない場合はナシです。
370にはオブジェクト指向の勉強をタプーリして欲しい。 そんな行き当たりばったりの使い方を初心者に教えちゃダメだよ。
>>378 実装での使い方と概念的なものと、両方しる必要はあると思います。
関連付けられていないので, ダブルクリックしての起動ができなくて困っているんですTT
初心者の場合は、まず実装面から入った方が理解しやすいです。 実装パターンをいくつか知ってから、概念的なことを勉強する流れの方がよいと思います。
383 :
デフォルトの名無しさん :03/03/30 21:48
>>370 さん詳しいレス有難うございます。
難しくて、あまり意味がわからなかったのですが、
>>370 と
>>372 では似たような動作が欲しい場合はinterfaceを使い
実装したクラスで動作を定義せよということですよね。
それだと、抽象クラスと同じ働きだと思うのです。(勘違いだったらごめんなさい)
抽象クラスは1個しかextendsできないけど、interfaceは何個でもimplementsできるという
差が使い分けのポイントなのでしょうか?
>>375 はそこまでレベルが言ってないので、よくわかりませんでした。
>>382 全くそのとおりだと思います。上手くインターフェースを実装してるソースって、
どっかに転がってませんかね?
>>373 というか、横につながりをもたせるのにインターフェイスを使うわけで。
386 :
デフォルトの名無しさん :03/03/30 21:53
型(インターフェース)と実装(実装クラス)の分離のためにinterfaceはある。
class カローラ implements 車 class マーチ implements 車 運転者は"車"interfaceの操作さえできればよいし、実装クラスが何の型かを 全く意識する(カローラかマーチか)必要もない。 ただ"車"型だと思って扱えばよい。 こうすることで、実装クラスの入れ替え、仕様変更にも柔軟に対応できる。 車種の追加(アプリの機能追加)の際にも使う側(運転者)はソースの変更が いらない。
抽象クラス:その一族だけが持っていればいいインターフェース。 (田辺家#8年前の田子八おじさんの変死事件のことをひた隠す()とか) インターフェース:複数の関係ない一族間で共通に持っていてほしいインターフェース (国民の義務#納税する())
>>389 具体化だからextends 車の方が好きだなぁ。
>>391 最近の流れは389かも。
javax.servlet.http.HttpSessionとか、
java.sql.Connectionとか。
サーブレットコンテナによる実装の違いとか
JDBCドライバによる実装の違いを意識しなくて済むようになっている。
>>392 ポリモフィズムはどうするの?
ああ、そもそも継承してないからオーバーライドも減ったくれもないのか。
何か引っかかるんだよなぁ・・・ちょっと考えてみよっと。
>>391 >>370 に書いたように、車といっても、種類によって実装はまったくことなるので、インターフェイスの方がよいと思います。
>>394 好きだ。に、の方がよいと思います。ってのもすごい書き方だな。
java vmのserver vmはclient vmと何が違うんですか? 単純なバブルソートだと3倍くらい速くなるらしいですが。
中の人がシャ(ry
server vmだとclient vmよりも長期間連続運用を仮定した 最適化・動的コンパイルが行われたはず
399 :
デフォルトの名無しさん :03/03/30 23:48
server vmって、どこからダウソするのん?
401 :
デフォルトの名無しさん :03/03/30 23:55
>>400 クスコ
Sunの1.3Server VMと、IBMの1.3VMとでは、
大きな違いありまつか?
402 :
デフォルトの名無しさん :03/03/30 23:57
ゲーム改造ってどうやるんですか?バイナリてきすとでひらくって ゆうとこまでしか解りません詳しい人教えて下さい
>>401 ServerとかClientとかついてるのは、HotspotVMです。
IBMの1.3VMはClassicVMのコンパチだったはず。
405 :
デフォルトの名無しさん :03/03/31 00:08
406 :
デフォルトの名無しさん :03/03/31 00:11
大きめの(数百kb)Stringオブジェクトが2つあるとして、 その内容の違い(diff)を得るための良い方法ってありますか? String#equals()は不適切?
408 :
デフォルトの名無しさん :03/03/31 00:13
Log4jを使用したいんですが コーディングの方法としては 自分で条件を設定して その条件に合えばレベルをセットして logger.error("This is error."); などとやればいいのでしょうか? なんかこのやり方だとSystem.out.plintln() と同じになってしまって、有用性がわかりません 出力先をファイルとかにするのなら コード書くのは楽だと思うんですが・・・ それともこういうコードの書き方は間違ってるんですか?
>>408 コード側はそれしかないよ。出力先を変えるのは別の場所。
410 :
デフォルトの名無しさん :03/03/31 00:14
>>408 コードの中身はSystem.outとあまりかわらない。
レベルを6段階設定できて、実際に出力するレベルを設定ファイルで切り替えられるのが有用性。
標準出力かファイル出力か、等も設定ファイルで選択できる。
412 :
デフォルトの名無しさん :03/03/31 00:15
>>407 キロバイトはkB。
kbはキロビット。
ちなみに、Mはメガで、mはミリ。
レスありがとうございます あまりにもあっけなく作業が終わったので コレでイイのかな?と思ったわけです
String型変数に格納された文字列を大文字、小文字に簡単に変換する方法を 教えて下さい。byte[]に戻して一文字ずつ0x20を足す、引くしかないんですか?
417 :
デフォルトの名無しさん :03/03/31 00:26
>>416 そんぐらいの知識あるんなら
Doc見れば見つかると思うが・・・
418 :
デフォルトの名無しさん :03/03/31 00:28
>>416 toLowercase()
toUppercase()
>>417 何のキーワードで探せばよいのかわからないのです。
ヒントをお願いします。
422 :
デフォルトの名無しさん :03/03/31 00:34
javaで、2つのファイル内容のdiff取る方法ってありますか?
デバッグ用コードとリリース用コードとを使い分けたいのですが、 C言語の#ifdef #endifのようなものは無いんですか? コード或いはコンパイルスイッチを一箇所変えるだけでその他のコードを 有効、無効に切り替えたいのです。 皆さんはどのようにデバッグコードを入れているのですか?
425 :
デフォルトの名無しさん :03/03/31 00:47
アサーションのこといってるの?
>>424 AspectJ使いなはれ。
その使い道にとっては、賢いプリコンパイラだと思えばヨロシ。
深い理屈があるらしいが、ソノヘンはよくわからん。
427 :
デフォルトの名無しさん :03/03/31 00:49
>>424 Logging API使うんじゃだめなの?
開発用のログ出力モードと、リリース用のログ出力モードを
切り替えられるじゃん。
別にログ出力だけに限らず、デバッグ用のコードとリリース用のコードを
切り分けられる。
>>423 自作すれば出来るが、自動でやってくれるような API はない。あるいは
Runtime#exec("diff [ファイル1] [ファイル2]") で済ますか。
>>424 Java だからといってプリプロセッサを使っちゃいけないというルールは
ない。Ant とかに無いのか? よく言われているのはブール定数と条件分岐
を使う方法だが。
public static final boolean DEBUG = true or false;
if(DEBUG){
System.out.println("hoge");
}
DEBUG = false にしたときに if(DEBUG) のブロックが丸ごと抜けるのは
バイトコードレベルで確認済み。
>>427 「リリースモードでは何も出力しない」に設定しても、ちょっとLoggingAPI
のメソッドコールを辿る作業をしてしまうからね。性能にちょっと影響がで
てしまう。それでもよいならソレガヨイ。
>>428 それが便利で、現実それでやってる人が多いとおもうのだけど、問題は
「コンパイラの最適化実装なんぞにたよっていいのか?」ということ
だね。いいのならオケですの。
>>424 assert使えという感じもするが、どっかのクラス(Hogeとする)で
public static final boolean DEBUGを定義しておいて
if(Hoge.DEBUG)
debug_part;
というコードをかけば当然DEBUG==trueのときだけ有効
(falseにするとコンパイラの最適化でこの部分は消えるのでパフォーマンスも落ちない)。
皆さんどうもありがとうございます。 取り敢えず428さんの方法が簡単そうなので 使ってみようと思います。
433 :
デフォルトの名無しさん :03/03/31 01:07
Eclipseのコード補完、テンプレートを自分で設定できる。 if(DEBUG){ System.out.println("{$CURSOR}"); } つーテンプレートをdbgというコマンドに設定すると、 "dbg" + [CTRL]+[SPACE]で、上のコードが入力され、 {$CURSOR}の位置にカーソルが合わせられるんで便利。
レスのつくスピードがすごいな。 チャット状態?
Javaっていいの?
> if(DEBUG){ これ激しく汚いんでLoggingAPI使ってくらはい。
>>430 条件コンパイル用途に使うためにJava言語仕様ではコンパイル時の
最適化を期待して、わざわざifにおける到達不能文のコンパイル時の
チェックを甘くしているから、堂々と使っていいんじゃないかな。
>>436 別にリリースフェーズで抑制したいことがログ出力だけとは限らんだろ。
>>437 そうだね。それに「プリプロセッサが無いって #ifdef はどうする気だ」
って質問に JDK 1.0 の頃からずっと Sun 自身が回答してきたソリュー
ションだし。
>>436 この場合にLoggingAPI使うくらいならAspectJの方がよさげ
441 :
デフォルトの名無しさん :03/03/31 04:29
Java開発でのクライアント選定の基準ってなんでしょう? 1.ブラウザ 2.アプレット 3.アプリケーション 2と3はJavaWebStartとJavaのセキュリティ設定の向上で ほとんど差が無いような気がします。 1をつかうか使わないかは、ユーザの要求がブラウザのGUIで満足できるかできないかだと思いますが、 認識あってますか? 意見を求みます!よろしくです!
>>441 エンドユーザーの環境をコントロールできるかどうか。
>>326 どこでスレッドを作っているのですか?
Frame Window Conponent を追いかけていっても、みつからないのですが。
peerでつくられるの?
>>443 EventDispatchThreadは、AWTやらSwingのインスタンスをつくると、
自動的にイッコだけ内部で作られるのよ。デバッガで起動して、スレッド
状態ダンプしてみそ。AWTEventDisptachThreadってのができるから。
>>342 「初心者無視!Java相談室」を復活させようか?
446 :
デフォルトの名無しさん :03/03/31 11:38
javaでオミトロンみたいなのを作りたいのですが ローカルプロキシサーバと 正規表現でフィルタリングするという方法でよろしいですか?
448 :
デフォルトの名無しさん :03/03/31 12:21
Proxomitron というフィルタリングしてくれるソフト ブラクラやサイコクラッシャなページを 弾くなどなかなか良さそうなソフト
“Next’ボタンがうまい事動きません。 ご指導よろしくおながいします。 if (e.getSource().equals(nextBtn)) { if (m.isEmpty()) { msg.setText("No Record is in the Collection"); } Iterator pointer = m.keySet().iterator(); while (pointer.hasNext()) { Object key = pointer.next(); Object value = m.get(key); String name = (String)key; Employee emp = (Employee)value; msg.setText(name +"," +emp); } msg.setText("No More Record"); }
どんな風に動かないのかがわからんちん 予想通りに動かないのか(もしそうならどんな予想か このステートメント自体通ってないのか ちなみに途中で標準出力しまくるとおもしろいよw
>>449 横"ちなみに"レス
ここはこうで構わんぞ
if (e.getSource() == nextBtn)
まぁ equals をオーバーライドしてるなら別だが
>>450 えっと、レコードはあるのに 'No More Record'のメッセージに逝ってしまうのです。whileをキャッチしてないもよう。
>>451 そうですよなあ。そちらの方がタイプするのも楽になるし。。。
次回から使用してみまぁす。
453 :
デフォルトの名無しさん :03/03/31 13:30
>>445 「初心者歓迎Oak質問スレ」と題して
中身はJavaスレにすれば本当のJava初心者は寄ってこなさそうだけど
どう?初心者&アンチ厨は入らずに意味のある議論が出来そうなんだが・・・
すぐバレるかな?
454 :
デフォルトの名無しさん :03/03/31 13:32
sendmailサーバにメールを送信してその届いたメールの内容を取得して 指定したデータベースに登録するようなプログラムを作りたいんですが できるのでしょうか?
>>453 荒らしアンチ厨は、スレタイがそっくりなことに目をつけて
Javaという言葉入っただけで直ぐに荒らしそうな予感。
456 :
デフォルトの名無しさん :03/03/31 13:36
>>453 さらに「Java」という言葉は禁句にすれば
かなり、フィルタかけれるな
あとは、JDBCやJ2EEなどの頭の「J」を「O」に変えれば完璧
JDBCがODBCになっちゃってわけわかんねーよ
「初心者歓迎あの言語スレ」>コレ最強
>>454 sendmail使わずにJames(メールサーバー)使えばあなたの要件満たせそうです
DB使うことも最初から考えて作られてる
「初心者歓迎『クライアントじゃ弱いけどサーバーサイドなら、 なかなかどうして&ケータイとかでもつかえて ほら、一回書けばどこでも動くっ』て言う例の言語スレ」 「タイトルが長すぎます」って言われました
462 :
デフォルトの名無しさん :03/03/31 14:44
>>461 Javaは時間経過とともにマシンのスペックがあがるたびにクライアントサイドに
強くなっていきます。これぞJava進化論!!
>>464 /file.html
→ファイル
/file.html/
→ディレクトリ
/file
→ファイルかディレクトリかわからん
このように、拡張子が無くて末尾にスラッシュが無い場合です。
>>449 もー解決してると思うけど…
分岐後に return するとか、 if の後の else とかが全く無いので
絶対に msg.setText("No More Record"); に逝くんだが。
>>465 > /file
> →ファイルかディレクトリかわからん
それは最後にスラッシュが無いので、ファイル名です。
たとえば、下記のURLにアクセスした場合
http://www.someaddress.org/directory_or_file サーバは、directory_or_file というファイルがあればそれを返します。
directory_or_file というファイルが無い場合は、
御親切なことに、
「directory_or_file というディレクトリを指定しようとして、最後にスラッシュを
付け忘れたのかもしれない」
と仮定して、directory_or_file というディレクトリを探しに行って、
もし、directory_or_file というディレクトリがあれば、
キチンとスラッシュをつけたURIをステータスコード301で返してくれる
こともあります。
JTextField で、awt の TextListener の textValueChanged に対応するものを実装したくて、 getDocument() で得られた Document に DocumentListener を使ってみたのですが、 IME を使っているとき、変換前の文字も含めて getText() で得られてしまいます。 それが便利なときもあるとは思いますが、 そうでなくて変換後に Event が飛ぶように、 あるいは変換中か変換直後かを調べるようにするには、どうしたらいいでしょうか?
471 :
デフォルトの名無しさん :03/03/31 21:39
キャストで (int)aaaa とやるのと parseInt.aaaa setInt.aaaa とはどう違うのですか? どちらもInt型に変換だと思うけど
>parseInt.aaaa >setInt.aaaa コンパイルエラー。
>>471 >parseInt.aaaa
>setInt.aaaa
両方とも少なくともキャストではありません。
474 :
デフォルトの名無しさん :03/03/31 21:46
>>474 >Int型に変換する手段として
Int型ってのは何?
int型ならわかりますが…
477 :
デフォルトの名無しさん :03/03/31 22:11
>>476 ごめんごめん、打ち間違いです
Integerクラスを使って
int aaa
aaa.parseInt(String s)
です
>>477 intはプリミティブ型であるのでメソッドは持たない。
>>477 まだ、間違ってるような気がしないでもないが、意味は通じた。
とりあえず、キャストの方。
キャストは、その値がキャスト後の型に変換(?)できない場合は、
キャストできないのですよ。
たとえば、IntegerのparseIntメソッドは、String型を引数に取れるけど、
そのString型は、キャストでint型にできませぬ。
String str = "hoge";
int n = (int)hoge; ←あぼーん。
どう違うのか、と聞く前に、これは正しいJavaのプログラム(の一部)か? と、あなたは聞くべき。 ちゃんと動くことを手元のVMで確認してから、どう違うのか、と聞いてくれ。
簡単にまとめると、キャストって言ってみたかっただけ、と。
>>479 >キャストは、その値がキャスト後の型に変換(?)できない場合は、
>キャストできないのですよ。
>たとえば、IntegerのparseIntメソッドは、String型を引数に取れるけど、
>そのString型は、キャストでint型にできませぬ。
>String str = "hoge";
>int n = (int)hoge; ←あぼーん。
これを見ると
intはキャストでの強制変換ができないからメソッドを
使うという風にしか見えないがそうなのか?
違う気がする
>>484 どんな内部構造かすら分からんクラスを変換しろという方がおかしいわけで。
キャストってのはその名の通り役を割り当てる(が語源だよね?) だから変換と考えないほうがいいのでは。 プリミティブ型の場合は値そのものを変えてしまうが。 「変換」しようとおもったらメソッドを呼ぶべきかな。
>>486 まぁ、言葉尻だ。
どんな内部構造かすら分からんクラスの値をキャスト先の形式に変換しろという方がおかしいわけで。
488 :
デフォルトの名無しさん :03/03/31 23:45
ここは初心者が質問するスレだ。 入門以前の者は消えれ。 あと、初心者のフリして質問するやつ。Javaある程度精通してるのなら まじめに教えろ。俺にな。
>>487 それを「言葉尻(だから意味がない)」といってては、あまりいい仕事はできないよ。
言葉の重さを知らないの?
キャストってかなり重い処理らしいね。 List list = new ArrayList(); // List<String> list.add("abc"); のとき要素を取り出すには意味的には String s = (String) list.get(0); とするべきだけど String s = list.get(0).toString(); の方が処理が速いと聞いたことがある。
496 :
デフォルトの名無しさん :03/04/01 00:43
今日Javaの研修で オブジェクト指向とは 「必要なクラスを必要なときに持ってきてそれを使うやりかた」 と聞いたのですが本当ですが? 違う気がする
>>494 ダウンキャストの場合、型チェック処理があるので重くなるという説をみつけた。
StringのtoStringは参照を返すだけだから軽いと。
説得力あり。
>>496 それが正しいときがあるかもしれないが、少なくともそれが全てではない。
おそらく、それはオブジェクト指向のかなり少ない部分を占めている。
499 :
デフォルトの名無しさん :03/04/01 01:13
500 :
デフォルトの名無しさん :03/04/01 01:14
Vector型にオブジェクトを大量につっこむのと、 ArrayList型にオブジェクトを大量につっこむのとでは、 どっちがパフォーマンス的に速い(軽い)ですか?
501 :
デフォルトの名無しさん :03/04/01 01:15
>>500 いちおうVectorはスレッドセーフだから重いことになってる。
>>501 こういうときって、スレ立てた香具師と、中の人が同じ可能性が高い。
>>500 そんなにパフォーマンスが気になるなら Object[] につっこめば…
505 :
デフォルトの名無しさん :03/04/01 01:22
>>501 おおそんなスレが。速レスサンクス。
>>503 別な人です^^;
でも、そこのリンク先はもう読んでました。
>>500 VectorやArrayListの挿入性能は、すでにたくさん突っ込んだ後、
"次をどこに突っ込むか"による。突っ込んだ後にそこより後ろを
Arraycopyで一つ後ろにずらすから。
で、そのオーバーヘッドに比べれば、VectorかArrayListかなん
てのは大して変わらん。synchronizedキーワードのオーバーヘッ
ドはたいして影響ないというのが、大抵の人の意見だな。
Listを何のために、どのように使うのかのほうが重要。
ランダム検索を頻繁に行うコレクションとして利用するなら、Mapや
Set使うほうが速度的にマシだったりする。ハッシュ検索や二分検索
は、線形検索よりはるかに有利(基本情処レベルのハナシだ…)。
FIFOキューならLinkedList。Stackとして利用するならLinkedList
やVectorで行ってもオケ(java.util.Stackがjava.util.Vectorを
"継承"してしまっているが、コレはコレで問題なんだよな。Implemented-
withを継承でやってしまうと、公開インターフェイスに穴があくこと
になるから。普通の人間ならコンポジションでやるよなあ…)。
但し出し入れは常に最後尾に行うべし。先頭に行うとあほなことが起き
ることは、↑から容易に予測できるっす。
・…なんてことが、java.utilパッケージのソースコード読むとわ
かるので、興味ある奴は読んでみるとよいと思われ。で、自分用
カスタマイズドコレクション実装なんてのも場合によっては作って
みてもよいのかモナー。
VectorもArrayListも内部ではObject[]を使って要素を格納してる。 要素数が不明だったら素直にVectorかArrayListを使う方がいい。 マルチスレッドで共通のコンテナへアクセスするんだったらVectorを 使う。 synchronizedロックは実際にスレッド間でのコンテンションが発生しない限り(他のスレッドがアクセスしに来る前にロックを解除できるのであれば)重い処理にはならない。
>>507 >マルチスレッドで共通のコンテナへアクセスするんだったらVectorを
>使う。
Collections#synchronizedListを使った方が良くない?
Vectorって1.1以下との互換性を保つ為の過去の遺産って感じで
あまり使用が推奨されてないし。
509 :
デフォルトの名無しさん :03/04/01 01:52
ま え ら 調 べ た ら す ぐ 解 り そ う な こ と は 質 問 す る な よ な
コレクションオブジェクトで、同期が必要な場合とそうでない場合、
どれを実装するべきか云々はJavadoc嫁。または、src.zipでも嫁。
>>507 殆どの場合、ちゃんとラップする。
510 :
デフォルトの名無しさん :03/04/01 02:00
ArrayList array = new ArrayList(); とかやるなよ。 少なくとも、 List array = new ArrayList(); とやれ。 そして、List要素の走査はイテレータで行え。 実装に依存しない。要素の追加削除が多くてLinkedListに変更するとき、 List array = LinkedList(); LinkedListに変更するだけだ。他はなにも変えなくてよい。 いいな、インターフェースに対してプログラミングするのだ!
>>510 オイラの場合、clone()したいことがあるので、特に理由がなければ
ArrayListやHashMapの参照持っとくなあ…
512 :
デフォルトの名無しさん :03/04/01 02:04
初心者は、このことを意識しないで使ってるやつが多い。 普段お前らがJDBC介して何気に取得しているResultSetも インターフェースプログラミングの恩恵。 Javaの基本はインターフェースプログラミング。
>>509 >殆どの場合、ちゃんとラップする。
ホントに同期取らなきゃいけない、トランザクショナルに扱わなきゃ
ならん区間って、getやputの瞬間だけってことは、あんましないもんね。
514 :
デフォルトの名無しさん :03/04/01 02:09
>>初心者 オブジェクトプーリングを行うクラスを造ってみ。
うーん、ほんものの初心者なら「オブジェクトプーリングってなんでつか?」にするべきだったな。
>>516 なんかあるべき論でご高説を述べたがってる人がいるみたいだから、
吊られてあげればよかったのに~。燃料だったかも。
518 :
デフォルトの名無しさん :03/04/01 02:14
Javaの初心者ならまずシングルスレッドでJavaらしく実装できるように なってからマルチスレッドに踏み込もう。 ましてや、プログラム初心者の場合、並行処理云々言ってる身分じゃないだろ。 たまにいるんだよね、同期ヲタ。
Javaを初めて1週間の者なのですが、 インスタンスを生成するときなぜクラスの隣に()を付けなければいけないのでしょうか? このカッコの中には、場合によって引数が入ったりするんですか?
520 :
デフォルトの名無しさん :03/04/01 02:18
>>517 高説ではない。プログラミング未経験から、半年で培った知識を試しているのだ。
間違った理解はここで取り除く。と。
>>518 nioでノンブロッキングI/O導入されたから、正味のスレッドの需要
って減ったよねえ…I/O多重化管理マンセー。
CPU数分のワーカースレッド+αだけあればよいはずなのに、巷には
1000スレッド動いていると喜ぶ人種がいます。どうも「俺ってスゴイ」
と思えるらしいでつ。アホでつね。スタックとコンテキストスイッチ
のコストを無駄にしてるだけ。
>>519 > このカッコの中には、場合によって引数が入ったりするんですか?
そう。その通り。
>>521 ある意味、資格たくさんもってて「俺ってスゴイ」っていってるのと同じですね。
数 が 多 け れ ば 勝 ち
>>519 そのクラスのコンストラクタという特別なメソッドを呼んでいるですよ。
クラス名と同じメソッド名のメソッドあるでしょ。()はその引数かく場所。
それは、引数ナシのコンストラクタを呼んでいるですよ。
>>520 もっといい人のいるところにいったほうが…
525 :
デフォルトの名無しさん :03/04/01 02:24
>>519 少なくとも貴方は1週間ではない。と。
決まりだからです。
>>525 インスタンスを生成って、プログラム初心者には使えない言葉だ。
>>522 ,524
なるほど!そういうことでしたか。
ありがとうございました。
>>525 Javaは初めて1週間(ってか4日くらい)ですよ。
その前にCをやってたんで。
528 :
デフォルトの名無しさん :03/04/01 02:27
>>525 C++あたり5年くらいやってんじゃないの?
>>526 他のOOP言語を使用していたとは考えないのけ?
>>524 > そのクラスのコンストラクタという特別なメソッドを呼んでいるですよ。
初心者だからって、うそ教えちゃいけない。
コンストラクタは、メソッドではない。
「揚げ足っぽいよな」と私自身思わないでもないが、常日頃から言葉を正しく
使わないでいると、よろしくない影響があると思う。
531 :
デフォルトの名無しさん :03/04/01 02:28
ランエニウェイ、ランアットワンス
>>526 あ、インスタンス生成って言葉は本からそのまま引用したんですw
533 :
デフォルトの名無しさん :03/04/01 02:29
インスタンスの生成を1つしか許さないクラスを造ってみれ。
>>530 バイトコードレベルじゃ、<init>って名前の単なるメソッドだけどな。
俺の作った格言: Write Once、Run Away! 1度作ったら(ばれないうちに)逃げろ!
536 :
デフォルトの名無しさん :03/04/01 02:37
>>530 言ってることはわかるが、
まったくの嘘でもなかろうに。
初心者に教える場合、言葉は違っても理解を一歩進めるために、
そういう言い方するのも一つの手段。厳密に違うことは次の段階でもいいと思う。
オブジェクトをインスタンス化したときに最初に行われる振る舞い?
コンストラクタのことをオブジェクト指向用語じゃどう言うかは忘れた。
>>533 初心者に、それに関する知識も与えずにそんなもの作らせるのは
単 な る 拷 問 で す
相手が共通の語彙を持っていない前提で会話できない貴方は
「学生さん」ですね?
>>537 試練です。貴方、苦労を知らないお人のようで。
>>530 まあ、実際コンストラクタは特別なメソッドな訳で。うそではない。
>>533 すみません。全く分かりません。勉強不足です。
>>537 最近デザインパターンがわかってきた人だと思います。
543 :
デフォルトの名無しさん :03/04/01 02:42
混沌としたこの世界、前提さえも自分で探し求める技術も必要。
Java の勉強を進めていったときに、「メンバは継承される」 てな文章に出くわすと思うのです。 そのときに、コンストラクタという特別なメソッドも継承されるのかな? とか、混乱させる可能性があるかもと危惧しました。
パターンって、実際苦労して汚いコード書いてみた後じゃないと身に付かないよね。 先にパターンだけ教えてしまうことになるのは初学者にとって(・A・)イクナイ!!
>>541 デザインパターン、Singleton(シングルトン)でググるべし。
>>542 Singletonなんて、デザパタ内でも副作用の大きい「できそこない」だと思うな。
なんでもかんでもSingletonの猿みたいな脳みその奴の作ったコードをマルチス
レッドで動かせるようにしろという、苦行みたいな仕事をさせられたことがある
でつよ つд`)
あ、もしかしてextendsとか関係あります?
548 :
デフォルトの名無しさん :03/04/01 02:47
どうせ職業プログラマ志望かなにかだろ。 先人たちの定石を機械的に覚えて業務に活かせたらそれで満足だろ。 それで納期に間に合い。上司も満足。ウマー
じゃあ、ひっかけ問題的なのを。 int[][] a = {{0,1,2},{1,2,3}}; という配列の値をコピーするプログラムを作れ。 ただし、コピー後の値を変更してaに影響があってはいけない。 つまり int[][] b; にコピーした配列を表すとして for(int i = 0; i < a.length; ++i){ for(int j = 0; j < a[i].length; ++j){ if(a[i][j] != b[i][j]) System.out.println("だめ"); } } for(int i = 0; i < b.length; ++i){ for(int j = 0; j < b[i].length; ++j){ if(a[i][j] != b[i][j]) System.out.println("だめ"); } } として例外が発生したり「だめ」が表示されないようにする。 for(int i = 0; i < b.length; ++i){ for(int j = 0; j < b[i].length; ++j){ ++b[i][j]; } } としてもaに変化があってはいけない。 結構、慣れてる人でも、一度では組めなかったりします。
おれはTemplateでジャヴァの威力を知った。 つもり。
>>549 せっかくだが、こんな夜中に誰も好き好んで頭使わないと思われ。
>>545 苦労して汚いコードを何度も書いて、5年位実務を経験して、
自分なりのコードのスタイル(パターン)がいくつか確立してきたあたりが、
ちょうどいいだろうね。
15年位実務を経験して、何度も修羅場をくぐり抜けてきて、
試行錯誤と各種情報の取捨選択により、完全に自分のスタイルが確立した後だと、
逆に有り難みないだろうね。
>>544 コンストラクタも継承されますね。
ただ、コンストラクタの先頭でsuperというキーワードで呼び出すという制限があるだけで。
特別なstaticメソッドだと思われ。
int i,j; int a[][]={{0,1,2,},{1,2,3,},}; int b[2][4]; for(i=0;i<=a.length;i++){ for(j=0;j<=a[i].length;j++){ b[i][j]=a[i][j] } }
ディープコピー版 ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(a); out.close(); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream in = new ObjectInputStream(bais); int[][] b = (int[][])in.readObject(); シャローコピー版 int[][] b = (int[][])a.clone(); for(int i=0; i<b.length; i++){ b[i] = (int[])b[i].clone(); }
>>547 ないです。興味あるならググルべし。
>>550 なんすか?それ。
>>549 int[][] b = new int[2][];
b[0] = (int[])a[0].clone();
b[1] = (int[])a[1].clone();
がいちばん簡単でつ。
でも期待してる答えは、こうじゃないね、アンサン。
あ、すみません。 Javaだと配列は宣言で初期化しない場合new使わないといけないんですよね。 間違えました。
>>553 thisポインタにアクセスできるので、staticメソッドじゃ有りません。
そこは明確にペケでつ。
コンストラクタが起動された時点ですでにヒープのインスタンス領域の
確保とデフォルトの初期化は終了していまして、コンストラクタはその
後に呼ばれる、ちょっと特別な性質をもっているだけの、単なるインス
タンスメソッドでつ。
>>556 あ、もちろん
a = new int[][]{{1,2,3,4,5},{1,2,3,4},{1,2,3}};
としたら、それがコピーされる必要があります。
あぁ、しかもセミロンとか付け忘れてるし。 未熟でした。
>>555 の中の人製ディープコピーは、意外とよく使う小手先技なので
覚えとくといいじょ~。Serializableなら何でも丸ごとコピー可。
チューニングの必要がないコピーはコレだけで済ますことが多いでつ。
必死だな と書く必要がなくレスが進むのって新鮮。
初心者が題目出してオナニーするスレはここですか?
春休みもそろそろ終わりだ
>>562 これを書ける初心者がいたら、ネ申
しかし、その答えを求めれるような指導ってできんな。
逆に説明がややこしくなるから、「初心者」にはそういうのは隠す。
その話ができるようになったら、世間一般で言う「初心者」ではない気がする。
それぞれのレスの趣旨を全く理解できない
>>567 でした。チャンチャン
>>567 ようするに、コンストラクタは特別なメソッドだということで無用な誤解を生まないかということでそ?
漏れはコンストラクタは特別なメソッドだということで、納得しやすくなると思ってるだけ。
いい感じでスレがし ょ っ ぱ く な っ て き ま す た !!
やはり初心者が初心者に回答するスレか…
ヒジョーに寒い展開になってきたので、サヨーナラ。
| ∧ |ω・) ダレモイナイ |⊂ ネルナラ イマノウチ | ~♪ ∧_∧ ( ̄ ̄ ̄ ̄ ̄) (´・ω・)(_____) ( つつ (_⌒ヽ ⌒Y⌒ ,)ノ `J ファサァ ∧_∧ ( ・ω・) )) /つ( ̄`ヽO_ノ⌒ヽ ノ ) \ )) (__丿\ヽ :: ノ:::: ) 丿 ,:' )) (( (___,,.;:--''"´``'‐' __,,,,,,___ オヤスミー (⌒ヽ:::::::::::'''''-,, <´・\ ::::::::::::::::::ヽ l 3 ハ::::::::::::::::::::::ヽ, ∫ .<、・_ ( ) 旦 (⌒ ̄  ̄ ̄ ̄ ̄ ̄ ̄⌒)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ (´・ω⊂ヽ゛眠れない…ショボーン / _ノ⌒⌒ヽ. ( ̄⊂人 //⌒ ノ ⊂ニニニニニニニニニニニニニ⊃
>>444 デバッガってなんのデバッガ?
JAVASDKについてくるやつ?
ObjectをCastするってどういう事でつか?
578 :
デフォルトの名無しさん :03/04/01 09:08
public classと publicが付かないclassはどう違うのですか?
すいません、
>>471 に流された感があるのでもう一度・・・
>>470 をどなたか・・・ Element だ Attribute だと、どんどん深みにはまってます・・・
>>579 InputMethodEvent で検索してみると幸せになれるかも。
すみません、昨日の519です。 あれから色々考えて、 public class Work2{ public static void main(String args[]){ int a[][]={{0,1,2},{1,2,3}}; int b[][]=new int[2][3]; int j,i; for(i=0;i<a.length;i++){ for(j=0;j<a[i].length;j++){ b[i][j]=a[i][j]; } } for(i=0;i<b.length;i++){ for(j=0;j<b[i].length;j++){ System.out.print(b[i][j]+","); } } } } これが出来ました。 それで、作ってる最中に思ったんですけど、Javaって配列の最後にヌル文字入らないんですか?
>>581 >Javaって配列の最後にヌル文字入らないんですか?
length があるので必要ないです。
ところで、配列の最後にヌル文字が入る仕様の言語ってあったっけか?
>>580 ところが、そっちは IMEを使わない限りイベントがとばないのです
やっぱり Element 弄くってみます……
>>583 InputMethodListener 内で変換文字列を描画して後は consume() してやれば
DocumentListener の方には行かないから良いかと思ったんですが。
ダメっすかね?
>>581 >>582 要素の型がcharである配列は、その配列を生成したときに、
最後の要素だけでなく、全ての要素が、
null character (空文字)で自動的に初期化されます。
先生 main()メソッドの引数の中にあるString[] argsのargsは 何の頭文字を取ったものなのでしょうか? 後何て読むんですか? 心優しい先生お願いします。
>>586 char array[20];
とかやると array[20] == '\0' になるんだっけか?
終端にNULL文字が付加されるのは文字列リテラルだと思ったけど。
>>587 ARGument String じゃなかったか? 馬鹿弟子よ。
>>588 何言語のお話をされていらっしゃいますか?
>>588 それは C/C++ の話だよな?
char array[20]; の宣言直後の内容は未定義だし、そもそも array[20] への
参照結果も未定義だぞ。フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
>>589 キムタクより素敵な先生ありがとうございました。
>>591 >char array[20]; の宣言直後の内容は未定義だし
こらこら。場所によるだろ。
598 :
デフォルトの名無しさん :03/04/01 19:37
hashtableとvectorと配列 の違いって何ですか? 3つとも複数要素の格納だと思うのですが
>>598 HashTableはキー名と関連づけて要素を格納する
Vectorはインデックス管理可能なリスト構造
配列はただの配列
ちなみに、Javaでは大文字・小文字を区別することも忘れずに。
たとえば、Booleanとbooleanは別物になる。
600 :
デフォルトの名無しさん :03/04/01 20:13
>>599 ありがとうございます
どうも使い分けがいまいちわかりません
みなさんはそこまで意識して使ってるのでしょうか?
Vectorなんかインデックス管理可能とか状況に応じて区分けしてるのでしょうか?
601 :
デフォルトの名無しさん :03/04/01 20:15
知ったかすんな
>>600 くぐるか本買って調べた方がいいぞ。
なにせしっかり説明しだしたら、かなりの量になるから。
603 :
デフォルトの名無しさん :03/04/01 21:16
Cの関数とJavaのメソッドは同じですか?
>>603 まったくの別物
関数はあくまでもそこで計算することができるが
メソッドはなにもない(いわばワープゾーン)
正直、なんか面倒臭くなってきました。 覚えることが多すぎです。 深く勉強したいんですけど、どこから手をつけていいのやら・・。 各技術の概要的な部分は理解しているつもりなのですが そこから先に踏み込めないんです。 どなたか、僕の進むべき方向を指し示してください。ご教授ください。 お願いします。
>>605 正直言って
ちょっとやってればある日突然わかる
勉強してもすぐ忘れるからはっきり言って意味はない
でも資格は取っといたほうがいいから
とりあえずJ検の3級かOffice検定はマジで取っといたほうがいい
Oracleのプラチナやシスアドなんかある程度経験をつめば誰でも取れるから
今から勉強するのは時間の無駄だと思う
資格はないより あったほうがいいからとりあえず取りやすいJ検などは必須だと思うよ
とりやすいからとるんだろうが でもJ検は意外に難しいぞ 俺はOracleのゴールドと基本情報処理をもってるけど J検はいまだにもっていない
>>609 それだけありゃ・・・って基本情報とオラクルGOLDってまたアンバランスだな。
>>606 J検2級とその他もってます。その他は3級レベルだからどうしようもなく・・・。
ちょっとやってればある日突然解る日が来るのでしょうか?
目的は自分自身で決めるべきものでしょうけど、見失いがちなのです。
あれやこれやとやってると、実装して試す暇もなく次の事に行ってしまうんです。
>>611 正直、才能無い。
もっと別の道を探すべきだと思われ。
>>606 そうなんです。忘れてしまうので困ってます。
去年、MVCでWebアプリ開発したのですが、今その知識は
半分以下になってます。実装できる自信がありません。
やっぱり才能ないのでしょうか。
>>614 勉強に意味がないとか言ってる香具師がいるな。
そんなことはない。
勉強してもすぐ忘れるから勉強しつづける必要がある。
でも、勉強を続けていても忘れてしまうものというのはあまり重要ではない、というか、忘れたものはまた調べればいいので気にしない方がいい。
適当にSwingで遊んでたら?
1週間前からJAVAに励んでいる者です。 ちょっとお聞きしたいのですが。 public class FastStep { public static void main(String[] args) { System.out.print1n("HelloWorld"); } } ここまでは以外と簡単に理解できました。 入門書には「JAVAファイルをコンパイルするとCLASSファイルが作られる」 とありました。コンパイラーは動かしてみたのですが、何かおかしいみたいで CLASSファイルというものが作られません。もしかして、コンパイラーは何回も 動かさないとCLASSファイルが作られない。ってことはないですよね(笑)(念のため3回ほど動かしてはいます) どこがおかしいのでしょうか? ご教授お願いします!!
>>613 半分もありゃいいだろ
俺なんか3ヶ月前にやったことなんか一切覚えてないぞ
でも昔の経験だけで、何もしてなくても(全員他にやらせて)
年収1000万いってるぜ
Javaも正直for文の書き方も覚えてない・・・
PGなんか別にマシンの前で座ってたらいいだけで
>>615 忘れるのに勉強する意味あるのか?
それと今日は何月何日だっけ?
>>618 ごはんを食べてもすぐおなかがすくから、ごはんを食べる意味はないですね。
>>621 消えた分が血となり肉となるなら誰も文句は言わんな。
ご飯を作っても半分捨てちゃうんならご飯作る意味ないよね。
>>616 エラーがあるからクラスファイルが作られないんじゃないかな。
print1n ってあたりがエラーっぽいです。
>>615 Swingは去年少しやったのですが、
どうしても複雑という先入観があってやる気出ないんです。
インナークラスとかアダプターとか、その辺で一回挫折しました。
他の場面で多少知識蓄えたつもりなので、
今やったら理解できるかもしれません。
そうこうしているうちにSWTとか出てきてますよね?
Swingよりそちらを学んでみたいです。
JavaでGUIやるときはAWTが基本らしいですので、
先にAWTやってみます。
という感じで、面倒臭くなってくるのです。。。
今危機感もってるのはXMLです。antのbuild.xmlを理解できる程度なんです。
正直、build.xmlなんてXML解らなくても書けるんでなんとも言えないのです。
XMLはスレ違いなので、この辺にしておきます。
>>613 忘れたといっても、もう一度やれば「思い出す」わけでそ?
一回目ほどは時間がかからないと思うし、同じ時間ならよりいいものができると思う。
>>623 ありがとうございます!!!
やっと動きました。今感動してたところです。プログラミングって面白いですね!
次はRMIを勉強したいと思います!
>>624 いや、先にAWTやってSwingっていう必要はないと思う。
Swingいきなりやれば?
で、SWTやりたいなら、SWTやれば?
AWTを別に勉強するんじゃなくて、必要になればやればいい。
ちょうど雑誌でもSWTとりあげだしたから、今勉強するのは面白いと思う。
今自分にあてはまる言葉は 「やればできると思ってる人は、やればできると思ってる。だからやらない。 だからできない。」 なのかと思います。技術情報仕入れて満足して仕事以外ではやってないんです、正直。 そろそろアクション起こします。仕入れの量を減らして、実装に時間使おっと。 皆さんありがとうございます。少しやる気が出ました。
>>629 もし才能がなかったとしても
やってればそのうちできるでつ。
やってれば面白くなるでつ。
つうか、やれる=才能なんでつ。
>>631 いまからやるんじゃない?
漏れはつねに明日からやろうと思ってるよ。
>>632 帰納的に一生始まらないって奴ですな。
本当にやる気あるならこんなところにうじうじ書き込みしてないで1行でも多くコードを書こうとするわけだし。
>>633 いまからコード書き始めるんじゃない?
漏れはつねにつぎの書き込みで最後にしようと思ってるよ。
>>635 うん?文法と周辺技術、開発技法についてはそれなりに身に付いた。まだまだだけどな。
とりあえずこの技術を何に生かすか。それをここで初心者を煽りながら考えてる。
>>629 22歳からJava初めてももう手遅れだよ
>>637 27歳からJavaをはじめましたが何か?
JakartaのDeveloperの一員ですが、何か?
30でまだコードの設計なんかしてんの?
640 :
デフォルトの名無しさん :03/04/01 23:17
javaで画像の変換(bmpからjpg)を行いたいんですがなにか良い方法ありますか?
>>637 そうなのか?言語なんぞ勉強のうちに入らんだろ。
642 :
デフォルトの名無しさん :03/04/01 23:18
それと 画像ファイルの大きさの変更を行いたいのですがなにか良い方法ありますか?
そうですよ。一生PGやってくつもりですよ。
640×480 を 320×240 に変更したいのですが。
そういうのは、ファイルのサイズじゃなく、画像のサイズの変更なんだよ。 切り取りたいのか、縮小したいのか、も書けよ。 言 葉 を ち ゃ ん と 使 え よ ! !
>>645 そりゃファイルのサイズじゃねえな(ワラ
java.awt.Image#setScaledInstance()でも使えば?
すいませんでした。 画像サイズの変更は切り取りなので、 画像解像度の変更でした。 しかもファイルサイズとカキコんでしまいました。
>>648 え?スクリーンの解像度変更?
GraphicsDevice#setDisplayMode()あたりかな?
たしかJDK1.4から変更できたはず。
画像解像度ってなに?
Graphics2D#scale()でいいのか?
>>636 ナニに活かすかって(ゲラ
凡人は余計なこと考えず一生会社の奴隷になってろ。
>>641 皮肉って言ってるだろうけど少なくとも勉強の内には入るだろ。
あんたみたいに趣味でやってると"勉強"とは言わないのかもね プ
こ っ ち は 生 業 と し て る ん だ
652 :
デフォルトの名無しさん :03/04/01 23:50
java.awt.Image.ReplicateScaleFilterとか。
画面は使いたくないのですが...
そもそも画像解像度と画像サイズってどうやって取得するんだっけな
画像に「解像度」なんて属性あったか?
>>637 Javaが一般に広まりだして5年かそこらなのに、みんな何歳から勉強してるんだろうね。
>>653 ふつうにAWTのmageまわりの勉強しなさい。
>>659 Iがぬけた。Imageね。
アイがないってことか。
>>657 あるぞ。ディスプレイ->紙時の解像度。
>>658 もうちょっと前からじゃないか?俺4年前くらいから勉強し始めたけど、そのころJDK1.2出てたし。
>>661 JDK1.2あたりから使い物になって広まりだしたから、そんな感じじゃないのかな。
JDK 1.2 あたりから始めた奴は VB 上がり組。
665 :
デフォルトの名無しさん :03/04/02 01:23
1) buf.append("aaaaaa"); buf.append("bbbbbbbbbbbb"); buf.append("cccccccccc"); buf.append("ddddddd"); buf.append("eeeeeeeeeeeeee"); buf.append("ffffffff"); 2) buf.append("aaaaaa" ); buf.append("bbbbbbbbbbbb" ); buf.append("cccccccccc" ); buf.append("ddddddd" ); buf.append("eeeeeeeeeeeeee"); buf.append("ffffffff" );
>>666 閉じ括弧の前にスペースを入れるのがすきかどうか、かな?
漏れはいれない。
668 :
デフォルトの名無しさん :03/04/02 01:56
誰か例外処理のあるべき姿を教えてください。 catchブロックで何をしたらいいのかわかりません。どうしてもコンパイルエラーを 避けるための実装になりがちです。 いろいろ調べたけどわかりません。エラーの内容を通知することしかできません。 例外発生したらcatchブロックでリカバリ処理とか聞いたことあるけど、 例外を例外でなくさせること?復旧させて処理を継続させるような実装ってアリなの? あと、簡単なコネクションプールを見てみたんだけど、 なんたること、SQLExceptionを捕まえてcatchブロックでプーリングしてた。 ソースはわかるけど、そうやる意味がわからん。 例外の正しい使い方ってなんでしょうか?もうお手上げです。
669 :
デフォルトの名無しさん :03/04/02 02:08
>668 例外と一言でいっても大きく分けて下記2種類があります。 ■アプリケーション例外 ■システム例外 このそれぞれによってcatchしてする処理が異なるかと思います。 アプリケーション例外は自分で作る処理なので、 業務要件に対応した処理をやると良いかと思います。 たとえば不正なデータが入力された時に、入力元に返すとか。 システム例外では主にリソースの開放を行うべきでしょう。 (finally節で本当はすべきかも?)
catch節で何をすべきか、は、その場合場合で違うだろうと思う。 私がcatch節でやったことのあることを列挙。 1、メッセージを表示。例外が発生したことを知らせる。ログる。 2、ある程度の時間を置いたり置かなかったりした後、 もう一度try節を実行してもらうようにする。(未完了フラグ立てるなど) 3、例外翻訳。(新たな、別な例外を発生させて、上位コンポネントに伝える。) 4、VM強制終了。(System.exit(int)) 5、何もしない。 これらの複合もある。メッセージ表示してVM終了。
>>668 > 誰か例外処理のあるべき姿を教えてください。
やりたいことをやる。
何をしたらいいのかわからないなら、とりえあずprintStackTraceしてexitでもしてろ。
> なんたること、SQLExceptionを捕まえてcatchブロックでプーリングしてた。
解説きぼんぬ
672 :
デフォルトの名無しさん :03/04/02 06:33
>>672 間違ってないと思うぞ。
特別な処理が必要なら書けばいいし、興味がないけどcatchが強要される例外はprintstacktraceすればいい。
printStackTraceしただけで例外処理した気分になってしまってる香具師が多いのもまた事実
WEBアプリでよくある例外処理は ・エラー画面("システム障害が発生しました。"等)へ遷移処理 ・システム管理者へエラーログをメール送信 とかよるあるパターン。
>>668 SQLExceptionは、SQLの実行に失敗する全てのパターンで出ちゃうからねえ。
コネクション切れちゃったみたいな重大な奴から、整合性違反でSQL実行中止
するような軽い奴まで全部。
で、場合分けするのはユーザの責任、になってるのよね。結構めんどくさい。
>>668 あ、そうだ。コネクション切断なんてのは、たま~に起きるよ。
DBサバが落ちてるかもしれないし、単にネットの調子が悪くて
ナンカの拍子にソケットクローズしてしまっただけかもしれない。
で、そのたびにシステム丸ごと落すべきかどうかは、微妙。
何回か再接続トライしてダメだったら落す、あたりがいいんで
ない?
SQLException、めんどいよね。 Oracleなんかだとエラーコードが入っていたりするが、 これたよりにすると特定ベンダー製品依存のアプリになってしまうし。 JavaやJ2EEの思想的にはおすすめできないが実業務だったらそれでもいいのかな? 結局SQLも標準SQLだけじゃ足りないことも多いしね。
>>678 しかたないから、DBの種類ごとにエラー処理をStrategyで区切るっす。
こんなかんじ。
interface SQLErrorHandler {
void handleSQLError(SQLException e);
}
class OracleErrorHandler implements SQLErrorHandler{/*なんか実装*/}
Usage:
SQLErrorHandler h = new OracleErrorHandler();//設定ファイル化何かで変更
try{
//なんかSQL処理
}
catch(SQLException e){h.handleError(e);}
>>679 ポリモーフィってるが Strategy とは言わないと思われ
681 :
デフォルトの名無しさん :03/04/02 14:51
public class ClassA extends Thread{} っつークラスを作って、 ClassA ca = new ClassA(); ca.start(); としたあと、インスタンスca内にあるオブジェクトが利用可能になるまで ちょっとだけ時間が必要だったりする?
>>681 実行環境によるだろう
それがどうした?
683 :
デフォルトの名無しさん :03/04/02 16:33
jspからmysqlに日本語が正しく書き込めません。 例えば あ → B になってしまいます。 JISAutoDetectで変換するようにしているのですがどうしてなんだろう。。
>>681 利用可能 (って run が走り始める事だよな?) まで待ちたいなら notify/wait と
連動させれ
ClassA ca = new ClassA();
synchronized(ca){
ca.start();
ca.wait();
}
public class ClassA extends Thread{
public void run(){
// 何かの準備処理…
synchronized(this){
this.notify(); // 準備完了を通知
}
// 何か別の処理…
return;
}
}
>>683 ブラウザ-JSP 間で化けてるのか JSP-MySQL 間で化けてるのかはっきりしる
>>683 まずJISAutoDetectをヤメレ
688 :
デフォルトの名無しさん :03/04/02 19:13
JavaとJava2の決定的な違いって何ですが その辺の記述って意外とどこにも載ってないのですが
>>688 差分は1.2のJavaDocに書いてありますよ。
リリースノートに。
691 :
デフォルトの名無しさん :03/04/02 19:32
39さん>このメーリングリストをどこで知りましたか?トピックスと言うペー ジがあるのを知っていますか? もし知らなかったらそこを見て下さい。 ・健康と医学 ・痔 のところにあなたの探しているものがあると思います。
692 :
デフォルトの名無しさん :03/04/02 19:48
コンパイルしてもブラウザ上でのみ動きません。 本とかについてたコンパイル済みの完ピンのソースとかでもブラウザ上では動きません。 コンパイラを再インストしても解決しません。 設定とかの問題なんでしょうか?
屋内に篭ってないでたまには外に出たらどうだ。 そこまでJavaが好きだというのなら、漏れが作った女性にモテるインタフェースを 無料で提供してもいいぞ。定義してるのは、 public Happy バクテン(); だ。幸せ型を返す。おまいらのように未熟なものがいきなりバクテンするのは 無理だろうから、まずは知り合いにでもデフォルトの実装をしてもらえ。 話はそれからだ。いいか、間違ってもいきなり実装するようなまねはするな。 首の骨折るのが関の山。
文字列表現からnewするにはどうすればいいでしょうか? piyoString#toString = new hogeClass(); みたくしても変数が必要ですが値が見つかりましたという コンパイルエラーが出ます、コンパイラが言いたい事は分かるんですが こういう場合どうすればいいですか? ある一定の命名基準(例:str1~30)があって 文字列を結合して(str + 1)forなどでnewしていきたいのですが (Stringと書きましたがStringBufferを使っています)
>>693 そう、厨房のころってバクテンできたらモテると思ってたよね。
なつかすぃ。
696 :
デフォルトの名無しさん :03/04/02 20:43
今日学校で Returnって メソッドで渡された引数を計算などで操作する時にその操作した値を返すときに 必要と言われましたが、そうなのですか? また文字列とかの表示なら必要なしとか言われましたが 本当ですか?
>>696 Returnってなによ。
で、値返すときはreturnがいるな。
698 :
デフォルトの名無しさん :03/04/02 20:50
Javaにもvoidあるの?
>>694 意味がわからん。
文字列表現から new したいなら
class A { public A(String str){ ... } }
みたいなクラスを使えば良いだけでは?
>>698 ネタのときはちゃんとわかるように書いてください。
702 :
デフォルトの名無しさん :03/04/02 20:58
void *p;ってやったらエラーになるよ?(;_;)
>>702 それは文法エラー。
せめてJavaとvoidでぐぐれ。
HogeClass hoge1,hoge2,hoge3...; StringBuffer strBuf = new StringBuffer("hoge"); とやっておいて strBuf.append("1") = new HogeClass(); (この後後につけた数字は消すしてまた次の数字をappendしてnew) というような事がしたいんです。 つまりは直接変数名を入れるのではなく Stringで変数名を作り、それをnewしたいという事です。 (上手く言葉に出来なくてすいません)
706 :
デフォルトの名無しさん :03/04/02 21:09
教育の現場においてのJavaの立場は
*p なんてJAVAにはポインタないし・・・
関係ないけどNscripter互換のエンジンをjavaで作ってる人がいたなぁ
>>708 配列を使うって手もあるんですが
前にStringからインスタンス化が出来るという話を聞きまして
(方法は聞けなかったです)
その方法ってのが知りたいんです。
配列のほうがずっとスマートに出来そうでしょうか?
>>710 String からインスタンス化できるってのは
reflection 使う奴じゃないのか?
HogeClass hoge = Class.forName("HogeClass").newInstance();
とかみたいにやる奴。
>>711 なるほど、私みたいな使い方とはちょっと違うみたいですね
配列を使う事にします、ありがとうございましたー。
>>712 何を言っているのか今ひとつわからんが、おいらの理解が正しいとして、
何かのデータに対して実行時に名前をつけるなら、普通はMapだろ。
HashMap map = new HashMap();
map.put("名前",new HogeClass(1));
map.put("名前",new HogeClass(2));
…
使うときは
HogeClass obj = (HogeClass())map.get("名前1");
714 :
デフォルトの名無しさん :03/04/03 00:02
>713 Map map = new HashMap(); だろ。
715 :
デフォルトの名無しさん :03/04/03 00:13
すいません、、、 サンマイクロのホムペからJDKをダウンロードしようとしたんですが、 500、サーバ内部にエラーが云々でてダウンできませんでした。 どうして・・・。
>>715 俺もいけなかった。
しばらく待っとけ。
>>715 > 500、サーバ内部にエラーが云々でてダウンできませんでした。
> どうして・・・。
どうしてもなにも500が出てるんだろうがよ。
720 :
デフォルトの名無しさん :03/04/03 01:25
>>719 サーバでJSPがコンパイルされたと思われる。
721 :
デフォルトの名無しさん :03/04/03 03:13
Java3Dで質問です。 VRML形式のシーンをどう保存すれば、ちゃんとLoaderが読み込んでくれるかがわかんないのです。 CyberVRML97 warning : Loading Error (ParseException) = java.io.InputStreamReader@955cd5 Encountered "EXTERNPROTO" at line 17, column1. Was expecting one of: <EOF> ","... と言う警告がでて、読み込む予定のシーンが画面上に出てきません。 どう、wrlファイルを保存すればちゃんと使えるんでしょうか? ご存知のかた、ご教授お願いします。
722 :
デフォルトの名無しさん :03/04/03 03:25
>>721 Java3Dスレに逝ったほうがいいと思われる。
少なくともwrlの保存法を聞いてる時点でJavaの問題ではない。
問題切り分けてるならそっち方面で聞いたほうが早い。
723 :
デフォルトの名無しさん :03/04/03 05:17
マジでどうしていいのか悩んでいます 二枚のjavax.swing.JPanel (panel1,panel2とする)があって それぞれ、javax.swing.JButton(button1)と javax.swing.JTextField(text1)が貼り付けてあります panel1.add(text1); panel2.add(button1); という感じです(それぞれのコンストラクタ内で貼り付け) で、panel1とpanel2はいろいろ事情がありまして それぞれ、別のファイルにあり、 これらを貼り付けるjavax.swing.JFrame(frame1)内で インスタンス化して、java.awt.Container(=frame1.getContentPane();)に貼り付けています この、frame1も別ファイルにあります で、button1のイベント発生時にtext1のテキストを取得したいのですが button1(panel2のクラス内)からはtext1のインスタンスが見えないので どうやって、取得しようかと悩んでいます (将来的に、この二つのパネル内に他のコンポーネントを貼り付ける予定なので frame1内でbutton1とかtext1を作っちゃうとあとあとごちゃごちゃしちゃうので 別のクラスファイルにしました) 二つのパネルの間に JTextField getTextFieldObject(){}や void setTextFieldObject(JTextField textfield){} というようなメソッドを持つクラスをつくったりしたのですが これでいいのか悩んでいます いいやり方あれば教えてください
>で、panel1とpanel2はいろいろ事情がありましてそれぞれ、別のファイルにあり、 当たり前のことを大げさに書く奴って信用ならん。
725 :
デフォルトの名無しさん :03/04/03 06:19
>>724 これには、ちゃんとした理由があるので、
突っ込まないでください
ただ、それを話すと非常に長くなるので書きませんでした
726 :
デフォルトの名無しさん :03/04/03 06:34
いや待て
>>724 よ
>>723 が何をやりたいのか知らんが
これを普通のクラスと考えると
class A,B,Cがあって
class A{
A(){
B b=new B();
C c=new C();
}
}
となってるわけだろ?
で、
class Bの中でたとえば
Object hoge=c.getObject();//cはCのインスタンス(クラスAで作ったものと同じもの。だけど見えない)
ってやりたいわけだろ?
このやり方が、おかしなやり方なのはわかっているが
あえてコレを実現しようとすればどうやるんだ?
C内部に
public static Object getObject(){return this;}
とかつくって、BからC.getObject();ってやる?
もちろん、Cはシングルトンにして・・・
>>726 publicなメンバにオブじぇぅと入れればにすれば良いんじゃないの?
ん?public? staticと言いたいのか?
729 :
デフォルトの名無しさん :03/04/03 07:15
>>724 > button1(panel2のクラス内)からはtext1のインスタンスが見えないので > どうやって、取得しようかと悩んでいます button1 内部で、text1 のインスタンスを得て使うのも手ですが、 そうする必然性は無いかもしれません。 ボタンや、テキストフィールドなどの各コントロールは、それぞれの仕事に 集中させて、それらの連携動作をつかさどるオブジェクトを1個、新たに、別に 作成すると、すっきりすることがあります。 このオブジェクトに対して、ボタンやテキストフィールドなどの動作に関連する インスタンスを登録しておいて、各コントロールはこのオブジェクトだけとお話 するようにします。
>>729 >「ボタンや、テキストフィールドなどの各コントロールは、それぞれの仕事に
集中させて、それらの連携動作をつかさどるオブジェクトを1個、新たに、別に
作成すると、すっきりすることがあります。 」
ええ、簡単に言えば僕も「すっきり」を考えてそういう設計にしました
だけどいざ作ってみて「あれ?text1にはどうやってアクセスするんだ?」
と思ったわけです
おかげで指針が見えてきましたありがとうございます
くだらない質問かもしれませんがお願いします。 JAVAでは他の言語のように、exeファイルのような形でアプリケーションを 配布するときはどうするのでしょう? というかそもそもそういう言語ではないのでしょうか。 jarファイルだとセキュリティ面(中身が丸見えですよね)や実行環境で 不安があるのですが大丈夫なのでしょうか。
jarファイルの中身にソースファイルを入れなければ コード見られることは、あまり考えなくていい 配布に関してはマニフェストファイルに指示してやれば Windowsならダブルクリックで起動 あるいは他の環境も考えるならそれ様のバッチファイル 用意してそっから起動させればいい あるいはJavaWebStart使えばOK
733 :
デフォルトの名無しさん :03/04/03 07:54
734 :
デフォルトの名無しさん :03/04/03 07:58
737 :
デフォルトの名無しさん :03/04/03 08:06
>>735 SwingとかJ2SDK1.4には対応してないでしょ。
738 :
デフォルトの名無しさん :03/04/03 17:02
1:public static void main( String[] args ){ 2:public static void main( String args[] ){ 1と2の明確な違いを教えてください。
>>738 表記法のみが違う。動作は何も変わらない。
後者の表記はC言語からの伝統を引きずっているだけなので
前者の表記法に慣れておくことをおすすめする。
740 :
デフォルトの名無しさん :03/04/03 17:33
static double array[] = { -3.4, 8.e110, -9.2e-100 } ; 上記の配列の初期化数値の中に 8.e110 -9.2e-100 のような数値があるのですが これはどのような意味なのでしょうか? 教えてください。
>>740 数学の話だな
っていうか入門書の最初んほう嫁
743 :
デフォルトの名無しさん :03/04/03 19:16
class Parent{ } class Child extends Parent{ } class ObjectReferenceVariable{ public static void main( String[] args ){ Parent p ; p = new Parent() ; p = new Child() ; Child c ; c = new Child() ; c = new Parent() ; } } 何で c = new Parent() ; でエラーが出るの??
swingについて質問があります。 ウィンドウ左上の×ボタンを押したとき、ダイアログボックスを表示、閉じるかどうか を確認するコードを書きたいのですが、下記のコードでwindowClosingを設定して やってもうまくいきません。 どなたか、原因がわかる方はいらっしゃらないでしょうか? public void windowClosing(java.awt.event.WindowEvent e) { int value = javax.swing.JOptionPane.showConfirmDialog( null, "終了してよろしいですか?","Wait! for kiss in the sky", javax.swing.JOptionPane.YES_NO_OPTION); if (value == javax.swing.JOptionPane.NO_OPTION){ return; } else { System.exit( 0 ); } } ↑YESでもNOでもウィンドウが閉じてしまいます‥。 ウィンドウに「終了」というJButtonがあり、それを押したときにも同じ処理をさせてい ますが、そちらでは問題ありません。
745 :
デフォルトの名無しさん :03/04/03 19:22
継承の階層は一般的に何階層までに制限していますか?? 制限というのはプロジェクトの仕様などでの事ですが。
746 :
デフォルトの名無しさん :03/04/03 19:27
747 :
デフォルトの名無しさん :03/04/03 19:31
748 :
デフォルトの名無しさん :03/04/03 19:41
} catch (Exception e) { この後に、eの例外が何であるかを判定したい (IOExceptionなのか、はたまた、NumberFormatExceptionなのか) のですが、美しい方法がオバカな私には思い浮かばれません。 (汚い方法すら・・・・・) 天才の方々にお助け求ム!!
>>748 なんで
} catch(NumberFormatException e){
...
} catch(IOException e){
...
} catch(Exception e){
...
}
ではいけないのか? まぁ判定だけならこれで良いけど。
if(e instanceof NumberFormatException){
...
} else if(e instanceof IOException){
...
}
750 :
デフォルトの名無しさん :03/04/03 19:54
>>749 } catch(NumberFormatException e){
...
} catch(IOException e){
...
} catch(Exception e){
...
}
の各catchの中で行う処理がまったく同じなんス。
なので、if文の方法を使わせていただきます!
ありがとうございました(≧▽≦)
の各catchの中で行う処理がまったく同じなんス。 じゃあ catch(Exception e){ ... } だけでいいじゃん。
>>748 > } catch (Exception e) {
> この後に、eの例外が何であるかを判定したい
自分もこれ知りたい。
デバッグのときに、どのタイプの例外が呼ばれているのか知りたいので。
e からクラスの名前を知るにはどうすればいいのですか?
753 :
デフォルトの名無しさん :03/04/03 22:17
>>751 ごめん!なさい。説明不足っていうか誤った表現をしてしまった。
やりたいことは、、、
1.例外発生時に自前のログ出力関数(1行ログ出力)を使用して、
例外種別(IOExceptionとか)を出力したい。
併せて付加情報も出力するんだけど、例外毎に付加情報元が異なります。
(e.iCodeっていうフィールドだったり、e.toString()だったりする。)
【出力例】Err!: IOExceptionが発生。(付加情報:ほにゃらら)
2.上記ログ出力後に、自前ログ出力関数を使用してスタックログを出力したい。
【出力例】Err!: main(test.java:50) ※スタックログ分繰り返し
で、2の処理は共通なんだけど、1の部分をif文で実現できたら幸せ♪
と、思ったわけ・・・・(はたして、この説明文で伝わるか不安。。)
あ、「まったく同じなんス」ではないね(^^;ごめんち!
>>752 > } catch (Exception e) {
このeの実際のクラス名は、e.getClass().getName()とかすれば、取れるぞ。
e.printStackTrace()しても、多分取れるぞ。
もしかしたら、本当に発生した例外は、e.getCause()で取る必要があるかもしれないぞ。
756 :
デフォルトの名無しさん :03/04/03 22:29
ところで、e.String()ってなにが表示されるの??(←オバカさん1号
>>756 e.toString() のことか? 典型的にはこんな感じだな
e.getClass().getName() + ": " + e.getMessage()
>>756 もちろんクラスによって異なるが。ポリモフィズムって奴だ。
760 :
デフォルトの名無しさん :03/04/03 22:45
Cとかだと、ファイル名とソース行数を埋め込むのって簡単じゃないですか。 __FILE__と__LINE__ これに相当する機能ってJAVAにありますか? いくら探してもみつからないです。
761 :
デフォルトの名無しさん :03/04/03 22:49
1.4.0サポート終了プロセス完了上げ
762 :
デフォルトの名無しさん :03/04/03 22:57
>>744 ボタン押したときはwindowClosing()が呼ばれるわけじゃないんだろ?
たぶん、actionPerformed()呼んで、中身の処理が一緒ってことだろ?
windowClosing()は閉じること前提で呼ばれてるんじゃないのかなぁ・・・
setDefaultCloseOperation()使えばできるかな
>>760 場合によっては
System.out.println((new Throwable()).getStackTrace()[0].getFileName());
とかが使えるけど...
あ、ごめん、Cのプリプロセッサ的動作を期待されると困る。
765 :
デフォルトの名無しさん :03/04/03 23:00
public class HogehogeException extends Exception { public int iCode; public HogehogeException { … } } この自前Exceptionもどきを } catch(Exception e) { で受けたら、このcatch節の中でe.iCodeを参照できん! いや、できません。 でも、どうにか参照したいんです! 立て続けに、つまらない質問ですみませんが、 愛の手ほどきをよろしくおねがいします。
>>744 javax.swing.JFrame frame = new javax.swing.JFrame();
frame.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.out.println("x");
}
});
frame.setVisible(true);
これで試したら閉じなかった世。
>>765 キャストしてあげてください。
HogehogeException hage = (HogehogeException)e;
質問の流れから 760 = 765 な気がするんだけど...違う? もし例外時のログ出力に使うなら、受け取った例外から スタックトレース引き出して使う。
>>768 760=765であってます(^^;
>>767 コンパイルとおった!!ありがとございますー。
>>768 使用目的は例外時のログ出力なんだけど。。。。
ごめん、理解できなかった。。。
一応初心者なのでスタックトレース自体の把握が
あまいのでございます。
勉強不足だーーー(自己嫌悪)
もし、お手数でなければ、具体例をください。
ほんと、自分の勉強不足を棚に上げて申し訳ない!!
>>769 必要な情報は763から読み取れるからあとはAPIマニュアル
読んで理解する。
>>763 つ、使える!!
けど、ひとつ気になることがあります。
Throwable()をnewするため、ファイル名と行数を表示しようとした場合、
Throwable()を2個newする必要があります。
で、使用目的はデバッグ文であるため、使用頻度は高。
リソースを食べ過ぎちゃうのでは?
というのが引っかかってます。どうなんでしょう??
>>770 うっス!了解ッス!!
わざわざ、返事ありがとうございました。
773 :
デフォルトの名無しさん :03/04/03 23:34
charとStringの違い って何ですか? どちらも文字列を扱うけど 一般的にはStringが多用されてるみたいだけど 普通に使う限りそんなに変わらないと思いますが
775 :
デフォルトの名無しさん :03/04/03 23:41
パッケージの指定で java.io.*; java.util.*; jp.co~; とかディレクトリの構成で指定すると思うけど この最初の出発のjavaとかjavaxとかjpとかって どこで設定されているのですか? 普通ディレクト構成なら c\java\jp\co\~みたいに、cから指定しなくて良いのですか? java. jp.co.~ の前のディレクトリは?
この板に書くのは初めてでドキドキしています。 Javaアプレットなんですけど、document.writeでhtmlとかを出力したあとで、 出力した内容を削除したいのですが、皆目検討がつかない状態なんです。 たとえば、 document.write('私の馬鹿'); 一定秒数もしくは別のdocumentから私の馬鹿を削除したい こういうことなんですが、可能なんでしょうか?
>>773 char[]のことだろね。
1.変更不能な文字列を表現するのに便利。同じインスタンスを再利用できます。
2.文字列を入出力にするタクサンのほかのクラスのメソッドで入出力の型にString
を使っています
3.Stringクラス自身にも便利なメソッドがいっぱいあります
4.どうせフィールドはchar[]とほんのちょっとの状態情報だけです。
インスタンスのメモリ消費量はchar[]と大して変わりません。
それにもかかわらずStringを使わないというのは、頭のおかしい人か、
あるいはよっぽどリソースが足りないかの、どっちかですね。
すいません、無知な私にヒントを下さい。。。 javaアプレットの話です。 document.writeで記述した文章等を動的に削除したいのです。 たとえば document.write('ほにゃらら'); で、ほかのドキュメントからとか、一定秒数後に ほにゃららを消去したいのです。 ご教授お願いいたします。。。
>>775 java や jp の直前まではクラスパスで決まる。
(※クラスパスに複数ディレクトリや複数jar などあったら、
それぞれ順番に調べて最初に見つかったクラスを使う)
781 :
デフォルトの名無しさん :03/04/03 23:46
Cヘッダファイルの指定 Javaのクラスのimport この2つは内容は違うと思うけど、やろうとしてる事はイコールですか?
>780 あ、すいません。その通りですね。。。 本当に私馬鹿だ。。。 どなたかヒント下さる方がいらっしゃったらお願いいたします。。。
>>781 コンパイル時にシンボル情報を解決する手段なので、まあその点では
一緒かな。
Cの場合は、動的リンクを選ばないとビルドの時点でリンカが固めちゃ
うけど、Javaは「常に必ず」実行時に動的にリンク。という点が違う
ね。
>>782 JavaScriptはいた違い。
>>782 何云ってるのか分からなくて俺が無知なのかと心配しちゃったじゃねーかパカ!サプヤンノパカ!
コンパイラがやってる作業の内容は全然違うけど。 Cの場合は、単にプリコンパイラが貼り付ける。 単にテンプレ貼り付けるみたいな感じ。 Javaの場合は、参照先のクラスファイルを探して直接 そこからシンボル情報を引っ張り出そうとする。もし クラスファイルがなかったら、クラスファイルになり そうな名前のソースファイルをコンパイルする。 つまり、本物のライブラリを利用して、シンボル情報 の解決をやろうとするわけね。 …わかります?
>783 板違いなんですか。。。 documentクラスが分かる人たちがいる所で想像がついたのがここだったので。。。 すいませんでした。。。 >785 すいません。。。私が無知なだけです。サブヤンは私ですか?だったら馬鹿呼ばわりしてもらって結構です。。。
>>788 Javaの人にはdocumentクラスはわからんよ。マジデ。
>789 ご丁寧にありがとうございました。。。 失礼します。。。
791 :
デフォルトの名無しさん :03/04/04 00:06
今System.out.println("");で改行しているのですが、 例えばPerlのように\nのようなエスケープシーケンスはありますか? 複数行Syste.out.printを打つのが面倒です~。 なお、まだ数日しかJavaを触っていないので優しく教えてください。エヘ
>>777 Stringって確かに各種メソッドがそろっているけど、
内部コード固定なのがたまに不便。結局byte[]でごり押しって
パターンが結構あるな。
>>788 WebProg板へ行け
一定時間後HTMLを再出力で幸せになれるけどな
>>781 違う。
importは、名前が省略できる以上の動作はない。
importをまったく使わずにプログラムを書くことができる。
importしておけば、どのライブラリを使っているかわかりやすい、というのはあるが。
>>792 どんなプログラム作ってるでつか?
一般的ではなさそうです。
>>794 あそっか。import自体は単なるSyntaxSugarだった。スマソ。
>>792 Unicode以外で文字列を扱うと、いろいろ不便じゃない?
今時、WordやExcelでさえUCS-2。
>>795 センクス♥
家の環境なら\nでいいみたいでつ。
それではまた~
System.out.println("ほげ") イコール System.out.print("ほげ"+System.getProperty("line.separator")); ですよね?
801 :
デフォルトの名無しさん :03/04/04 00:20
ASCIIコードとJavaの関係って切っても切れない関係ですか?
テキストのメタ情報としてencodingが与えられていないとき。 POPとかSMTPとかHTTPやっていると結構ある。改行はRFCで CRLFと決まっているから切り出してbyte[]に放り込むことが多い。 ISO-8859-01でStringに放り込むってのがどうも実装依存で 肌にあわないもんで。でも上述の改行コードもUNIX屋は気にせずLF 投げてくるやつも多いから改行判別入れてるわけで、encoding に関して判別しないのはなぜかと言われると、なんとなく...なんだけどね。
>>801 いいえ。UnicodeとJavaはきっても切れませんが、それ以外は
Javaにとってはドウデモイイ存在でしょう。一応エンコーダとデ
コーダをコアAPI内部で必要なだけ準備はしているようですが。
>>802 JISAutoDetectを使うのはヤヴァイと思うけど、ISO-8859-01は別にかまわん
ようなきがするが。単にエンコードに関する処理を何もしないだけでしょ。
>>791 > 今System.out.println("");で改行しているのですが、
こんなアホなことしてる人はじめてみた。
訂正:「問題し」>>「問題ないし」
808 :
デフォルトの名無しさん :03/04/04 01:01
もうしわけない。すこし教えていただきたいのですが、 jarファイルに含まれるマニフェストファイルの (Fileクラスで言うところの)lastModifiedを取得したいのですが なかなか思うようにいきません。 ぜひお知恵を拝借したいです。 よろしくお願いします。
>>808 JarEntry#getTime()?
>809 僕のやりかたがまずいのかもしれないのですが、 jarからJarEntryにセットしたときに マニフェストファイルはセットされていないみたいなのです。 getTimeだと、クラスファイルの更新時間は取得できたのですが・・・。
>>810 マニフェストファイル自身のJarEntryは?
>809 マニフェストファイル自身のJarEntryは取得できませんでした。 他のクラスファイルのは取得できたのですが・・。 クラスファイルとは別手段で 取得しないといけないんでしょうか?
うーん、また明日会社で仕事の合間にがんばってみることにします・・。 809さん、今日はありがとうございました。
>>813 JAR じゃなくて ZIP ファイルとして読み込んで ZipEntry#getTime()
ところで最近流行りのパスワード付き ZIP って Java で扱えますか?
>最近流行りの 数年前に流行って大分廃れてきてるけど。
Sealed Jarって、それのこと?
818 :
デフォルトの名無しさん :03/04/04 03:04
>>791 おまえな、複数行打つのが面倒だって?
コピーしろよ。PC使えよ。
もまいは、この先logクラスなど使わなくていい。
開発現場に現れるな。
人知れず、山に篭って一生System.out.println("");してろ。
と、VB 上がりのコピ厨が申しております。
Java厨はコピ厨です。
Java って \n 使えないのか?
使えるけどLF
今更だけど改行コード指定できないWriter萎え
825 :
デフォルトの名無しさん :03/04/04 09:57
A → B かつ B → A という関係のデータを格納するようなクラスを探してみたのですが、 見付かりませんでした。そのようなクラスは標準のクラスライブラリには 存在しないのでしょうか?
>>825 SOAPのQNAMEとか。とか思った。
827 :
デフォルトの名無しさん :03/04/04 10:30
汎用機系ではDBがRDBではなく NDBを使用する事が多いと聞いたのですが NDBとは何でしょうか?? 教えてください。
>>827 ネットワーク型データベースじゃないの?
829 :
デフォルトの名無しさん :03/04/04 11:38
C言語のscanfに相当するものは JAVAではなんでしょうか?
>>766 ,762
ありがとうございました。
早速試してみたいと思います。
>>830 可変長引数がとれないから、可変数の引数をとるメソッドがないかというと、それは間違い。
配列で渡すメソッドは結構ある。
なので、可変長引数とれないというのは理由にならない。
scanfにそのまま対応するものはないとおもうのだがね。
>>832 Object[] hoge#scanf(String format);
こんな感じ?instanceof使いまくりだな。個人的には嫌いかも。
try { Scanf s = new Scanf(System.in, "%d: %s"); while (s.hasNext()) { System.out.println(s.next()); } } catch (IOException ex) { ... } catch (ScanfFormatException ex) { ... } …とか。キモイか…。
836 :
デフォルトの名無しさん :03/04/04 13:02
interfaceおよびimplementsについて わかりやすく説明して頂けるとめっちゃ助かるなり
>>836 過去レス読んでくれるとめっちゃ助かるなり
839 :
デフォルトの名無しさん :03/04/04 13:06
843 :
デフォルトの名無しさん :03/04/04 13:34
JAVAのトラ本って和訳されたものはないんですか? みなさん英語の原文を読んでいるのですか?
>>842 初心者からで、ほんとにちゃんとわかるなら安いかも。
845 :
デフォルトの名無しさん :03/04/04 14:05
>>841 ありがとうございました。
微妙にわかりました。
>>829 MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
String forParsing = "x, y, z";
Object[] objs = mf.parse(forParsing, new ParsePosition(0));
// result now equals {new String("z")}
ここらへんで手を打たないか?
可変長じゃないけどな。
847 :
デフォルトの名無しさん :03/04/04 16:08
皆は継承を使うかどうかの判断ってどうしてる?
>>847 使いたいときに使う
漏れが使いたいときがみんなの使いたいときであるように精進する。
>>847 逆に継承以外の手段をどうしてる?
インターフェースを使うとか?
850 :
デフォルトの名無しさん :03/04/04 16:40
public class hoge { public static void main(String[] args) { System.out.println("args count = " + args.length); } } この .length っていうのは演算子なのか何なのかわかりません。 別にわからなくても困らないけど気持ち悪いんで教えてください。
>>850 > 別にわからなくても困らないけど
困れ。
>>850 APIドキュメントも読まないくせにいっちょまえに質問だけはするお前が気持ち悪い
どちらかというと、APIドキュメントじゃなくて言語仕様のほうだと思う。
855 :
デフォルトの名無しさん :03/04/04 17:19
問1.Class内で自分のクラス名を取得しなさい。
856 :
デフォルトの名無しさん :03/04/04 17:20
問2.同様にメソッド名も取得しなさい。
858 :
デフォルトの名無しさん :03/04/04 17:23
(゜∀゜)<ペリー
860 :
デフォルトの名無しさん :03/04/04 17:45
ペリー言うなって(笑
861 :
デフォルトの名無しさん :03/04/04 17:55
ぶっちゃけコレクションって何? サンプル書いちゃって!!!
>>861 >ぶっちゃけコレクション
エイトランド地方キムリー村。
この村に、ぶっちゃけハンターを目指す少年がいた。
名はコウンドウ。今日も彼はぶっちゅけを追いかけ、戦い、そして殴られる。
目標は最強のぶっちゃけコレクションを作って王女様と結婚すること。
そして今日、コウンドウは裏山で見たこともないおおきなぶっちゃけを見つけるのだった・・・
864 :
デフォルトの名無しさん :03/04/04 19:57
おい、もまえら。 JDBCでexecuteUpdate()したときに更新できなかったらどうなるか答えろ。
0が返る。
867 :
デフォルトの名無しさん :03/04/04 20:58
教えてください。 ホームページでセレクトボックスを使用しようとしているのですが プレビューするとどこにもジャンプしないはずの初期選択値【選択しててね】が ファイルの一覧になってしまします。 どうすればいいのかどなたか教えてください
>>867 その説明では何のことやらさっぱりわからん。
JavaとJavaScriptはとりあえず別物。Javaアプレットでも
作ってるのか?
869 :
デフォルトの名無しさん :03/04/04 21:30
もしかして間違った所に書きこんでしまったのですか?すみません。 今、ホームページをつくっているのですが、セレクトボックスからリンク先にいきたいのです。 リンク先に行くには行くのですが、リンク先に行かなくてもいいタイトル? 【選択してください】をクリックすると何故かファイル一覧が表示されてしまうのです。
871 :
デフォルトの名無しさん :03/04/04 21:36
あの~スミマセン!! MassageBoxの出し方教えて下さい。 ガッコウの兄貴に指示されました。 コニチワ、マッサージボックスで出せなさいと。 どうすればいい?
すみません。初心者です。 Javaで、一定時間ごとに、画面をキャプチャするなんていうアプリを作れるのでしょうか?
>>872 java.awt.Robot 使って VK_PRINTSCREEN を押してやれば良いんじゃないか?
で,あとはクリップボードから画像を持ってくればOK。
>>874 すまん。 createScreenCapture() ってのがあるんだね。逝ってきます。
>814さん どうもありがとうございました。 814さんの言われたとおりにしたら、 望みどおりの結果が返ってきました。
String[] num = { "one", "two", "three", }; とかがあったときに、これを String[] 型から ArrayList などに変換するには どうすればいいのですか? 今は for ループでいちいち add を使って追加しているのですが、 おそらく、もっと直接的な方法があると思うのですが。
>>877 おまえの直感はもちろん当たっている。
おまえの望む機能は、
java.util.Arraysだ。
が持っている。
>>878 >おまえの望む機能は、
>java.util.Arraysだ。
>が持っている。
変な日本語を使う親切な人、ありがとう!
>>869 が何云ってるか分かったしどうしてそういうことが起こるかも分かったけど、
ここは Java スレだし遅レスだから教えない。
>>881 ウン分かった
これからは目障りかなーと思ったら
「目障りだと思ったんので書こうと思った事は書きmdksdf
884 :
デフォルトの名無しさん :03/04/05 15:16
2ch と同じ(もしくはそれに近い)IDを作成したく、色々模索していくうちに、Crypt暗号(って呼び方でいいの?)を
みつけました。
http://www.cryptix.org/support.html から、jarをおとしました。
でもって、以下のサンプルで、2chのIDに近いものが作成できました。
import cryptix.tools.UnixCrypt;
UnixCrypt anCrypt = new UnixCrypt("");
String cryptStr = anCrypt.crypt(hostInfo); // hostInfoがクライアントのIPアドレス
ただし、hostInfoが192.168.1.85 と、192.168.1.86 とでは同じ文字列を
返してしまいます(YBCf/CwHmToを返す)。これって、やっぱし仕様でしょうか。
JDK1.4でもCryptで文字列を暗号化するクラスが統合されたようですが、
今の所使い方というか使用目的に見合ったサンプルがなくてトホホです。
よろしくおねがいいたします。
あああ、すいません、IDが同じになってしまう理由はわかりました。 与える文字列(hostInfo)が8バイトまでしか認識してくれないようです。 JavaDocに書いてありました。これは不便ですねぇ(;´Д`)
>>885 不便、って・・・・
IP アドレスの文字列 "192..." をそのまま渡してるのか?
そりゃ工夫が足りないよ
>>886 コトバ足らずですんません、そりゃ、もちっと工夫はしてますけど。8バイトというのが意外だったんです~。。。
888 :
デフォルトの名無しさん :03/04/05 19:01
オーバーライドについて質問です。 class A3 { void hello() { System.out.println("Hello from A3"); } void hello(int i) { System.out.println("Hello from A3 " + i); }} class B3 extends A3 { void hello() { System.out.println("Hello from B3"); }} class C3 extends B3 { void hello(String s) { System.out.println("Hello from C3 " + s); }} class MethodOverriding3 { public static void main(String args[]) { A3 obj = new C3(); obj.hello("hello"); }} "Hello from C3 Hello"というメッセージが表示されません。C3のオブジェクトへの参照をいれているのですが、 なぜかエラーが出ます。オーバーライドがわかってないと思うので教えてください。 よろしくお願いします。
>>888 エラーを読めば分かるはずだが(でも初見では難しいかも)、
貼らないところを見るとよく読んでないな。
答え :
クラスA3 には #hello(String) というメソッドが無い
> }} 気色悪い、、、
891 :
デフォルトの名無しさん :03/04/05 19:18
892 :
名無しさん@Emacs :03/04/05 19:20
servletで、クライアントより、同時アクセスしたときに、 データが混ざってしまいます。 CGIでは何もなかったのに。
>>892 インスタンスフィールドにデータを保持してるね。
初歩的ミスなんでServletの入門書を読めば分かるよ。
C3クラスに#hello(String) メソッドはあるんですけど、だめなんですか?
>>894 ダメ。A3 の参照では A3 が持ってるメソッドしか使えない。
>javac MethodOverriding3.java MethodOverriding3.java:25: シンボルを解決できません。 シンボル: メソッド hello (java.lang.String) 場所 : A3 の クラス obj.hello("hello"); ^ エラー 1 個
>>894 逆に聞くけど、
A3 ref = randomCreate(); // A3, B3, C3 のインスタンスをランダムに生成する。
ref.hello("hello");
としたとき、どうなるべきだと思う?
ストリング型の引数を取るメソッドが自動的に選ばれると思います
A3 obj = new C3(); この行でA3型の参照変数にC3オブジェクトへの参照を入れたと思っているのですが、 C3クラスにはString型の引数を取るメソッドがあるので実行されるのは自動的に C3クラスのメソッドが実行されると思ってたのですが。 変数に代入するオブジェクトによって実行されるメソッドが決まると参考書には書いてたので。
900 :
デフォルトの名無しさん :03/04/05 20:15
JavaでMP3プレーヤーを作りたいのですが、 可能でしょうか?
可能だと思います。 自前のmp3デコードライブラリを作るか Jiniで外部のdllを呼び出せば十分可能かと・・・
>>898 じゃあさ、
>>897 で A3 やら B3 のインスタンスが生成されていた場合どうするのだ?
引数がString型がないのでエラーになるのですか?そこまで考えてませんでした。
904 :
デフォルトの名無しさん :03/04/05 20:27
>>901 PureJavaで
> 自前のmp3デコードライブラリを作るか
作れる気がしません。。
905 :
デフォルトの名無しさん :03/04/05 20:29
>>901 DLLの中身ってどうやってみるのですか?
呼び出したいんですけど、関数名とかわかりませんが。
906 :
デフォルトの名無しさん :03/04/05 20:29
javaで作ったのを、コマンドラインからでなく 実行形式のファイルから起動させたいのでですが、 みなさんはどうやって実行形式のファイルを作成してますか? お勧めのがあれば教えてください。
A3 obj = new C3();ってとこがよくわかりません。
>>907 >>899 > A3 obj = new C3();
> この行でA3型の参照変数にC3オブジェクトへの参照を入れたと
であってるよ。
ありがとうございます。
この考えがあってるとなってると
>>888 のソースコードがうまく行くと思うのですが。
A3はC3のスーパークラスなのでサブクラスのオブジェクトを参照できると思ってるので。
A3クラスにhello(string s)がなくても、C3クラスにあるので今回はC3オブジェクトを
のメソッドを使用してるので問題ないと思うのですが。
>>909 ってことは、
Object は C3 のスーパークラスなので、Object に hello(string s)がなくても、
C3 にはあるの、今回は C3 のインスタンスを使用しているので問題ないと思うのですが。
でも良いわけで。
で、
>>910 が是なら参照は全部 Object の参照で良いわけで。
Java が A3 の参照とか C3 の参照とかを区別するのは
その区別によって、アクセスできるメソッドやらフィールドを特定できるから。
それらが特定出来る場合、メソッドコールやフィールドアクセスを単純化できるし、
特定できない場合に比べて実行速度やら生成されるコードの大きさで有利になる。
>>909 A3 obj = new C3();
だと、objの型は結局A3じゃねーか
「A3型のオブジェクト」がなぜ「C3で定義されてるメソッド」が使えるようになるんだよ
>>888 class A {
public void hello() {
System.out.println("Hello A");
}
}
class B extends A {
public void hello() {
System.out.println("Hello B");
}
}
の場合
A a = new A();
B b = new B();
とやると
a.hello(); // 出力は Hello A
b.hello(); // 出力は Hello B
なのは簡単にわかると思うが
A ab = new B();
とやっても
ab.hello(); // 出力は Hello B
あと混同しやすいが
同名同シグネチャの関数=オーバライド
同名異シグネチャの関数=オーバロード
>>888 でJavaでは各変数に動的な型と静的な型が存在していて
オーバライドは動的な型に依存するが
オーバロードは静的な型に依存する。
A3 obj = new C3();
とやった場合 obj の動的な型は C3 だが静的な型は A3 なので
obj.hello(String) を呼ぶことができない
>>900-901 "Java MP3 Player" で google検索すると、そのものズバリがヒットするような。
>>888 public class Hoge {
public static void main(String[] args) {
HumanBeing human1 = new Japanese();
HumanBeing human2 = new Italian();
HumanBeing human3 = new HumanBeing();
human1.talk();
//human.talk("日本人です"); // エラー ※1
}
}
class HumanBeing{
void talk(){
System.out.print("Hello.");
}
}
class Japanese extends HumanBeing{
void talk(String str){
System.out.print("こんにちは、" + str);
}
}
class Italian extends HumanBeing{
void talk(String str){
System.out.print("Chao " + str);
}
}
※1
日本人は人間だが、人間は日本人というわけではない。
つまり、日本人は日本語を話せるが、人間全員が日本語を話せるわけではない。
それに、human1、human2、human3はどれも同じ「HumanBeing型」なのに、
それぞれ別のメソッドを使えるのは矛盾してると思わないか?
普通に考えればHumanBeing型はHumanBeingクラスのメソッドしか使えないはず。
>>904 作ってくれ、頼む。まずい棒あげるから。
>>905 JNIだったw
ネイティブメソッドで引数をdllに渡せばいいかと・・・
918 :
デフォルトの名無しさん :03/04/05 23:00
あのー、正規表現つかって、文字列の検索したかったんですが、 boolean b = Pattern.matches("モナー" , "モナー来訪者" ); としても、falseになっちまいます。えー?なんでー?っていうんで 正規表現の初心者サイトとか見て回ってますが、3時間ほど頑張りましたが だめぽです。どうしてでしょ? (おまえは向いていないとかは無しで…)
Java の正規表現はあまり使わないのでアレだがこうじゃないの? boolean b = Pattern.matches("モナー.*" , "モナー来訪者" );
>>888 hello() と hello(String s) は違う。つまり、オーバーライドになっていない。
変数objはA3型で宣言しているので、A3型で定義されているメソッドしか呼べない。
つまり、A3型で定義されていない hello(String s) は呼べないのだよ。
>>918 一部分がマッチする場合は find を使う
全体がマッチする場合は match でよい
>>919 の方ではちょっとだめでした。が、しかし、
>>922 さんのでOKでした。やりたいことは、まさに、それでした。ああ、なんということでしょう。ありがとうございました。
924 :
デフォルトの名無しさん :03/04/05 23:58
Netscape7.0 でjava appletが二つあるhtmlファイルを読み込むと毎回フリーズしますが、 仕様ですか?
925 :
デフォルトの名無しさん :03/04/06 00:31
eclipseでjbuilderのように マウスでguiのパーツを貼り付けて 開発することってできますか?
926 :
デフォルトの名無しさん :03/04/06 00:34
Javaは消滅してしまうのですか? 廃れてしまうのですか? C++覚えたほうがいいですか?
>>926 JDK 1.4.2 の速さに驚愕したのは分かったから死滅スレから出てこない
でね。
928 :
デフォルトの名無しさん :03/04/06 02:21
JAVA2を勉強しようと思うのですが、 初心者(プログラム経験ナシ)にオススメの本ってありますか?
プログラム経験なしの初心者はとりあえず Java関係の前にDOS関係の本を読むことをオススメする
>>929 DOS の本だけ読んでも、いまどきの人じゃやることないからすぐ挫折
すると思われ。昔はメモリけちって FEP 削除したり RAM ディスク
作ったりロータス起動するために拡張メモリ認識させたりといろいろ
あったけど。
>>928 それでも最低限cdとdirくらいは使えないとなw
>>931 そうだな。環境変数やプロセスが何なのかくらいは覚えておいて欲しい。
教育用の 1000 円くらいで買える Linux Box とかねーなか。
性善説サーバがあるよ。
934 :
デフォルトの名無しさん :03/04/06 05:30
>>932 その前にコンピュータ五大装置だろうがよ。
ノイマン型コンピュータ? なんか Java 初学者にはどうでも良い知識な気がする。
だれもノイマンという単語は出してないが?
そんなもんは初学者にはどうでも良い。楽しく興味を持ってやれる事が最優先。
940 :
デフォルトの名無しさん :03/04/06 06:49
>>937 ヴォケかおまえは。
基礎を学ばせるのは当たり前だ。
そんなことだからいつまでも初心者の域から脱出できない。
わかってんのか?
原理主義者が現れました。 どうしますか? ↓
>>940 興味を持ってやってれば君が言う「基礎」の方に意識が向くのに時間が
かからないだろう。君は机上でプログラムを始めた文系プログラマかね?
943 :
デフォルトの名無しさん :03/04/06 07:02
>>942 無理。基礎が必要だと誰かが指し示さない限り、
レジスタ云々まで学ぶやつはいない。
だから
>>942 のような「解ってるつもりが質問スレで
前提をくつがえすようなことを質問する。
わかってんのか?あ?
「レジスタ云々」 な、何の話?
>>943 日本語おかしいな。
レジスタ云々の前に日本語の基礎を勉強したほうがよかったな (藁
「レジスタ云々」からほのかな芳ばしさがする御人はレジスタと言ってみたかっただけとみた。 というか自分の知ってるボキャブラで一番基礎技術っぽい単語がレジスタだったというところで、 実際はせいぜいCの register 変数使ったことがある程度とみた。
Java使いなら、バーチャルマシン仕様より下はイランとおもうけどね~。 通信の仕組みやファイルシステムの使い方くらいは一般教養として しってて欲しいもんだけど、それだって一般プログラマがあんまり 低レベルの仕組みを熟知する必要はないと思うけど。
>>946 彼に香ばしい感を感じるのは、胴衣。
あるいは基本情処取る為に覚えたとか。
>>946 基礎技術を開発の基礎と勘違いしてアセンブラっぽい話を自慢する奴
いるよなぁ。じゃぁおまいはシリコンウェーッハッハッハの切断精度を
高めるためにどんなことをやってるか知ってるのかと (昔仕事で
やったな~)。
Javaを勉強しようと考えている者が、HelloWorldプログラムを書き始める前 に是非身につけておくべきだ、という知識、技術にはどんなものがあると考えますか? 例えば、2進・8進・10進・16進数の基数変換について机上で計算できる ようになっておくことは、HelloWorldより先に済ましておくべきと思いますか。 また、Java言語の様々なポイントのうち、習得すべき順序についてご意見を伺いたい。 単なる趣味でプログラムやりたいという人は、どうでもいいんだけどね。 設定としては、あなたがJavaの仕事を持っていて、それをこなす為に部下を与えられ、 その部下にJavaを教えなければならないことになった、ということで。
>>949 > (昔仕事で
> やったな~)。
ここが香ばしいね。
>>950 そういう話は必ず宗教論に発展するので別スレでやってくだちい。
なんかいろいろなことになってるな。 で、オススメの本はないんでしょうか?
0x80以上のbyteをprintln()で表示させる時、そのままだと 負の表示になりますが、0xFFと&すると符号無しとして 表示されるのは何故でしょうか? byteと0xFFの&では変わらないように思うのですが・・・。 byte buff =(byte)0x80; System.out.println(buff);//-128と表示 System.out.println((buff & 0xFF));//128と表示
956 :
デフォルトの名無しさん :03/04/06 13:05
>>955 0x80のbyteはintに拡張されて
00000000000000000000000010000000
0xFFのintは
00000000000000000000000011111111
andすると
00000000000000000000000010000000
となる。
Javaではintよりも小さな基本データ型つまり
char byte shortに対して何らかの演算を行う場合
処理の前にintに拡張され、結果もintとなる。
>>956 訂正
0x80のbyteはintに拡張されて
×00000000000000000000000010000000
○11111111111111111111111110000000
だね
958 :
デフォルトの名無しさん :03/04/06 13:15
>>950 Hello Worldプログラムの前にやるべきこと。
Hello Saitamaです。
System.out.println(" \ │ / ")
System.out.println(" / ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ")
System.out.println(" ─( ゚ ∀ ゚ )< さいたまさいたま! ")
System.out.println(" \_/ \_________ ")
System.out.println(" / │ \ ")
System.out.println("")
System.out.println("")
System.out.println(" ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ")
System.out.println(" ( ゚∀゚ ) < さいたまさいたまさいたま!")
System.out.println(" ∧ ∧ / ) \___________ ")
System.out.println(" ( ゚∀゚ ) 0=┳=0 ∧ ∧ ")
System.out.println(" 0=┳=0 / ┃ ヽ ( ゚∀゚ ) ")
System.out.println(" / ┃ ) = ∥( ノ 0=┳=0 ∧ ∧ / ̄ ̄ ̄ ̄ ")
System.out.println(" ヽ ∥ノ ∥= l⌒┃ ヽ (゚∀゚ ) < さいたまー!")
System.out.println("";;;゙゙;';'"゙゙;''"';;;゙゙';"'';;";゙゙''";;''"';'"゙゙';;'"';;;'"''"';';"'゙゙'";"''';;;,、0=┳=0 \ \____ ")
System.out.println("''";''"';゙゙'"''"゙゙';'"';'";''゙゙";;''"゙゙;''゙゙"';'"'';''"';' "''';;;,、 / | ∧ ∧ ")
System.out.println(""゙゙';;'"';;;''"';'"゙゙';;'"';;;'"''"';';"'゙゙'";;'' "''';;;,、( ゚∀゚ ) ")
System.out.println(""';'"゙゙';;'"';;;'"''"';';"'゙゙'"; "''';;;,、=0 ")
System.out.println("'"''"';';"'゙゙'";; "''';;;,、 ")
>>950 自分の経験を元に、教えればすむことじゃないの?
>>956-957 分かり易い解説ありがとうございました。
頭がこんがらがっていましたが理解できました。
>>950 パソコンの一般的な使い方。
ファイルシステムのこととか。
圧縮・解凍とか。コマンド検索パスとか。
>>950 > 例えば、2進・8進・10進・16進数の基数変換について机上で計算できる
> ようになっておくことは、HelloWorldより先に済ましておくべきと思いますか。
アホですか?
>>962 基礎って話題が出たらムキになるJavaプログラマ。 プ
964 :
名無し3.BAT :03/04/06 18:19
統合環境みたいに、自動インデント機能を自作のエディタにつけたいときは、どうすればよいんでしょうか? また、統合環境みたいにポップアップで単語を補完する機能をつけるには、どうすればよいんですか? 秀丸エディタなどは、何言語で書かれているのですか?あのような高度な機能は、Javaでは無理なのですか?
965 :
デフォルトの名無しさん :03/04/06 18:39
serverSocketについて質問なんですが クライアントが落ちてしまった時、 どこらへんでエラーが発生するんでしょうか?
966 :
デフォルトの名無しさん :03/04/06 19:14
924 名前:デフォルトの名無しさん 投稿日:03/04/05 23:58 Netscape7.0 でjava appletが二つあるhtmlファイルを読み込むと毎回フリーズしますが、 仕様ですか? 誰か教えてください
967 :
デフォルトの名無しさん :03/04/06 20:51
質問です。 コンストラクタを含むスーパークラスを継承したサブクラスは コンストラクタを使ってスーパークラスのインスタンスを自動で生成しているのでしょうか?
969 :
デフォルトの名無しさん :03/04/06 22:01
>>968 おそらく。
ただし、コンストラクタをもたないクラスはないよ。
すべてのクラスにおいて、インスタンス化するためには 必ずコンストラクタが実行される すべてのクラスのコンストラクタの実行では 明示的にスーパクラスのコンストラクタを呼んでいない場合 スーパクラスのデフォルトコンストラクタが必ず最初に呼ばれる コンストラクタが明示的に書かれていないクラスでは 引数のないコンストラクタ(デフォルトコンストラクタ)が自動的に生成される
すみません。言い方が悪かったです。 スーパークラスの自前のコンストラクタが サブクラスのインスタンス生成の時に自動で実行されるかってことなんですけど。 理解していただけたでしょうか?
>>972 実行されない。
実行したければサブクラスのコンストラクタ中で明示的に
super();
と記述するべし。
>>973 あ、今本読んでたら説明が載ってました。
引数なしで自前のコンストラクタとデフォルトの引数なしコンストラクタは自動だけど、
引数ありのコンストラクタはsuper(引数);を記述しないといけない。
んですよね?
>>972 明示的に記述されていない場合にはデフォルトコンストラクタが
暗黙的に呼ばれる。だがスーパークラスのコンストラクタの暗黙的
呼び出しを期待する位なら明示的に書け。
C:\>copy con a.java
public class a{
a.java を上書きしますか? (Yes/No/All): y
public a(){
System.out.println("a");
}
public static void main(String[] args){
new b();
}
}
class b extends a{
public b(){
System.out.println("b");
}
}
^Z
1 個のファイルをコピーしました。
C:\>"\program files\j2sdk1.4.0_02\bin\javac" a.java
C:\>java a
a
b
C:\>
>>971 ほぼ正解。
java.lang.Object の場合も書いてくれたら完璧。
>>977 copy con でソースファイル書きますかぁ。(笑)
Bill Joy的?
979 :
デフォルトの名無しさん :03/04/07 06:28
ドキュメントに 「現在のスレッドはこのオブジェクトのモニターのオーナでなければなりません。」 という記述があったんだけど、意味がわからない。 モニターのオーナーってどういう意味?
>>979 私も良くわからないけど、synchronized でロックしておけばよいと思う。
ロックを獲得した = モニタのオーナーである
ということだと思う。
981 :
デフォルトの名無しさん :03/04/07 08:57
finalyブロックには どんな処理を書いているのですか? 使い道がなさそうな。。。 教えて!!
>>981 メソッドのローカル変数で、OSのリソースを消費するようなことをしている時。
なんか例外がthrowされてしまったときでも、きちんとリソースを解放して欲し
いわけで。
エミュを作ってます 256 種のオペコードに対する CPU の動作をエミュレートするのに、 今のところ 1. switch 1段で並列 256分岐 2. switch 2段で上4bit分岐 →下4bit分岐 3. switch 8段で各 bit ごとに分岐 4. オペコード一つに内部クラス・インスタンスを一つ作って opecodes[i].do(); みたいな感じでテーブルからジャンプ でそれぞれやったら、4 > 2 > 1 > 3 の順に速いようです ( 3 が遅いのは switch 自身のオーバヘッドのため?)。 とはいえ 4 の方法はクラスの数が馬鹿馬鹿しいことになるので、 これを基礎として工夫も考えていますが、 他に全然別のいい方法はありますでしょうか?
>>983 オペコードっつても、256種類まったく別の動きするわけじゃねぇだろ。
>>984 レジスタ群を配列化するといい、ということでしょうか。
986 :
デフォルトの名無しさん :03/04/07 14:45
throwは呼び出し側に例外を返すという事で よいのでしょうか?
983が何のエミュを作っているかきになるなぁ・・・
988 :
デフォルトの名無しさん :03/04/07 18:37
notify() notifyAll() は待ちスレッドに通知すると言いますが 具体的に何を通知するのですか??
>>988 丁度3月号からのJavaWorldで初心者向けのスレッド講座が連載してたよ。
4月号あたりにそこらへんが詳しく載ってた。
>>984 さんお世話になりました
bit 演算を少し簡略化しました
これ以降の高速化は別のところに力点をおきます。
おじゃましました~
あるアンチJavaが次スレの偽物を立てたらしい。 テンプレートがいい加減だ。これは荒らしとしかいいようがないのではなかろうか。 だれか真の「【初心者】Java質問・相談スレ22【大歓迎】」 を立ててくれ。
>>992 新スレの1が荒らしってのは同意だが、
別すれ立てるほどでもないような。
しっかし、春休みってまだ終わってないのか?
>>992 自分はホストの関係でたたられません。
このスレのものをそのままはればいいだけだから、誰かよろしく。
>>992 今からテンプレ貼って定期的に 「テンプレ >>m-n」 とかすれば。
あんま騒ぐと 3 スレとか 4 スレとか乱立させられる。
>>995 それも手か。
それで、誹謗しているレスだけ削除依頼出してあぼーんさせるようか。
>>995 この手のケースの場合、明らかに荒らしとわかるから
乱立スレ削除は削除依頼の対象として十分に成り立つ。
998 :
デフォルトの名無しさん :03/04/07 22:37
成り立つ。
>>997 ま、そうなんだけど、処理されるまで鬱陶しいじゃん。
1000 :
デフォルトの名無しさん :03/04/07 22:37
そして1000ゲット。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。