1 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:05:27 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド114【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1207385614/ 次スレは>>990 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
53 名前:デフォルトの名無しさん [2008/05/13(火) 22:14:05 ] Web系の仕事をしてまもない若輩者です。 最近、上司の教えにより、ようやくsyncronized構文を使ったサーブレットを作成する事が 理解できるようになりました。スレッドについては他にThreadクラス、Runnableインターフェイス等あるみたいなんですが、 とりあえずsyncronizedを覚えてといわれたので上記2つは勉強しておりません。 Web系開発をするにあたり上記2つ(Threadクラス、Runnableインターフェイス)は 必要でしょうか? よろしくお願いします。
54 名前:デフォルトの名無しさん [2008/05/13(火) 22:47:42 ] もしかしてResultSetってクエリの結果をオブジェクト内に保持しているんじゃなくて getXxx()する度にDBに結果を取りに行ってるんですか?
55 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:54:58 ] 1レコード取得するたびにRDBMのカーソルが動くと思っておけばいいんでない?
56 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:04:16 ] どうせでっかいがちがちのフレームワーク使うことになると思うよ。
57 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:04:50 ] >>53
58 名前:53 [2008/05/13(火) 23:08:17 ] >>57 なんですか!?なにかおかしかったですか?? せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。 だから、教えてくれればありがたいんですが。。
59 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:11:55 ] >>53 お前にはまだ早いというのが上司の判断だろう
60 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:18:55 ] ____ __,,/ _, ----`ヽ / _ ___ 、\ / / i \ \\ ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} |i∧ ', :{ ,ィjモト \ イjミトイイV .| :メヽ.', `ozZ} izN。ハ::{ | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\ / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! " ヽ : : : : :/イ{ :.ノ: : : :.\ \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l なんですか!?なにかおかしかったですか?? せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。
61 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:24:02 ] >>58 状況がよく分からんが・・・・・ そもそも、synchronizedを使うということは、 マルチスレッドが絡んでる領域だろう 一般論としてマルチスレッドプログラミングは、概念を理解した上で行わないと危険 しくじると簡単にデータの整合性を破壊したり、パフォーマンスを劣化させてしまう おまけにバグが再現しにくいので修正も簡単じゃないことがある
62 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:26:04 ] 単なる釣りだろ
63 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:26:34 ] まあJavaでWebならデフォでマルチスレッドだからな
64 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:33:53 ] サマータイムになったらどうすればいいの?おしえてちょ
65 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:40:51 ] 何がしたいの?
66 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:55:28 ] 質問です Javaアプリケーションで起動したときに フレームの上半分にあらかじめ指定していたファイルから 画像を読み込み表示するというプログラムを 作りたいのですがどう作れば良いのでしょうか? 調べてもAppletに関することばかりで困ってます
67 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:58:48 ] appletで出来るのなら 親をJFrameにすれば?
68 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:00:39 ] フレームにAppletを貼ったあとinitとstartを呼び出すのも忘れずに。
69 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:14:30 ] >>67 いえ Appletでも出来ないんです
70 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:16:26 ] ということはここでアプリケーションに関する情報を得たとしても作れないってことだ 素直に宿題スレへ行け
71 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:25:08 ] 申し訳ありませんでした もう少し勉強してきます
72 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:26:03 ] >>69 で、どこまで調べた?
73 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:32:19 ] そういや>>68 っていう手があったな。 アプレットなんてもう何年も使ってないから忘れてた。
74 名前:51 mailto:sage [2008/05/14(水) 00:44:12 ] >>52 すいません、寝ちゃって返事が遅くなってしまいました!>< ちゃんと引数まで付けて実行出来るとは、正にやりたかったことです! おかげさまで非常に助かりました、本当にありがとうございます!!
75 名前:デフォルトの名無しさん [2008/05/14(水) 00:58:52 ] ぐぐればすぐ出てきそうなもんだろうに…<<66
76 名前:デフォルトの名無しさん [2008/05/14(水) 01:02:34 ] 宿題スレから誘導されて来ました。 乱数を利用して0〜53の値をランダムで配列に格納するプログラムなんですけど、 永久ループになってしまいます。値は一意です。 どなたか助けてくださいm(_ _)m public class XXX { public static void main(String[] args) { /* 変数宣言 */ int[] card = new int[53]; int nn, num; boolean frg = false; // 配列との比較用フラグ /* 乱数の発生と格納 */ nn = 0; while (nn != 52) { num = (int)(Math.random() * 54); for (int i = 0; i < nn; i++){ if (num == card[i]) { frg = true; break; } } if (frg == false) { card[nn] = num; nn++; }
77 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:03:02 ] /* 結果の表示 */ String buf; for (int i = 0; i < card.length; i++){ buf = " " + card[i]; buf = buf.substring(buf.length() - 4); System.out.println(buf); if (i % 10 == 0){ System.out.println(); } } }
78 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:14:05 ] >>76 while (nn != 52) { num = (int)(Math.random() * 54); for (int i = 0; i < nn; i++){ if (num == card[i]) { System.out.println("num=" + num); frg = true; break; } } でやってみたらどう?
79 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:34:33 ] >>78 やってみました、 num = で、1〜53までのランダム整数が永久ループで表示され続けます。 フラグ初期値falseがどんな数値でもtrueになってしまっているようで、 それでいてnnが加算されないのが永久ループの原因のようです。 うう、どうしてかわからない・・・。
80 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:37:22 ] シャッフルって普通こう書くんでは? public static void shuffle(int[] array) { shuffle(array, array.length); } private static void shuffle(int[] array, int size) { if (size == 1) return; int swapIndex = random.nextInt(size - 1); int temp = array[size - 1]; array[size - 1] = array[swapIndex]; array[swapIndex] = temp; shuffle(array, size - 1); }
81 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:44:02 ] >>80 すません、まだJAVAならいたてのど素人なので そこらへんは・・・ (int)(Math.random(x + 1))で、0〜Xまでの数値のランダムというのを ネットで発見したのでそれを使ってやろうと考えています。
82 名前:80 mailto:sage [2008/05/14(水) 02:05:54 ] 誤: int swapIndex = random.nextInt(size - 1); 正: int swapIndex = random.nextInt(size); 死にたい。 >>81 if (frg == false) { card[nn] = num; nn++; } else frg = false; ってしてみたら? あとフラグの綴りはflagです。 buf = buf.substring(buf.length() - 4); は何やってるのかわかりません。 if(frg == false)はif(!frg)でいいじゃん
83 名前:53 mailto:sage [2008/05/14(水) 02:08:44 ] たびたびすみません。>>53 です。みなさん、レスありがとうございました。 上司からデッドロックとかスレッドの概要はおしえてもらいました。データの整合性 とか同期とかも教えてもらいました。 スレッドクラスとかランナブルインターフェイスというのは、スレッドを専門にあつかうクラスであるみたいですが、 Webアプリやるならsyncronizedだけでいいといわれました。でも、せっかく本を買ったので 必要ならやってみたいとおもったりしたわけです。 概念的なものは理解したつもりです。後はクラスの使い方だとおもうんです。 ですから、それを勉強しといたほうが得なのか、Webアプリには必要ないのかを聞きたいんですが… ぜんぜん、つりではなく、まじめな質問なので、よろしくお願いします。 具体的には、WebアプリでThreadクラスやらRuunableインターフェイスを使う事があるのかないのかを聞きたいです。 どうか、よろしくお願いします。
84 名前:53 mailto:sage [2008/05/14(水) 02:10:08 ] 上司の物言いが軽かったので、真偽のほどをおしえてもらいたいんです。 すみませんが、軽く答えていただければいいのでよろしくお願いします。
85 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:15:59 ] その辺のめんどくさいことはアプリケーションサーバがやってくれるので、 意識しなくてよいはずです。 そのためのアプリケーションサーバですから。 せっかく本を買ったのなら、アプリケーションサーバのベンダの人達は、 こんなめんどくさいことやってるんだなあ、と考えながら読みましょう。
86 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:17:01 ] 明示的に使う使わないに関わらずjava技術者ならスレッド全般の知識はあって当然 目先のことに囚われて勉強しなくていいやなんて思っているなら死んだ方がまし
87 名前:53 mailto:sage [2008/05/14(水) 02:26:06 ] >>85 まいど!やんなくていいですか。ありがとうございます。 せっかく買ったのでやってみようとおもいます。ありがとうございました。 >>86 スレッドってそんな大事なんですね。あちきは、単なる1部分くらいにおもってました。 じゃあ、やってみます。 みなさん、回答どうもありがとうございました。多謝です。
88 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:30:21 ] >>82 あーっ、なるほど。漸くわかりました。 一度既出の値が出たときにフラグがtrueになるのがそのままtrueのまま続いてしまっていたんですね。 どうもありがとうございます。精進します。 >buf = buf.substring(buf.length() - 4); すいません、説明不足でした。表示する内容を右揃えする制約があったので、 substringを利用して右揃えをする部分ですこれ。
89 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:45:49 ] ◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催 system-trading.jp/news/index.php?cID=3 5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。 デモトレードの優勝者には賞金三百万円がプレゼントされます。 ▼トレード部門 初期資産500万円で、デモ取引のトレード収益を競っていただきます。 www.fx-gp.com/about/ ▼賞金総額 ■社長特別賞(シストレソフト買取価格) 10,000,000円 ●シストレソフト部門賞 1位300万円 2位100万円 3位50万円 ●トレード部門賞 1位300万円 2位100万円 3位50万円 ●前期MVP賞 50万円 ●後期MVP賞 50万円
90 名前:デフォルトの名無しさん [2008/05/14(水) 05:35:57 ] すみません、別のプロジェクト内のクラスのインスタンスを作ることって可能なんでしょうか? 教科書にスタックの考え方を再現したJAVAプロジェクトと、前置記法のアルゴリズムを再現したJAVAプログラムがあり、 そのうち前置記法のプロジェクトが当然のようにスタックのプロジェクト内のクラスのインスタンスを作っているのですが。 エクリプス上でその部分に赤線が引かれており、実行してもエラーが出ます。 また、別のクラスを呼び出すために「Javaのビルド・パス>プロジェクト」と「プロジェクト参照」の設定」とやらも試してみたのですが、 そうすると赤線部分はなくなったのですが、実行しても何も起こりません。 前置記法のプログラムの最初にはimport java.io.*; とあるのですがそれが関係しているのでしょうか?
91 名前:デフォルトの名無しさん [2008/05/14(水) 07:06:40 ] すいません。初歩の初歩でつまずきました。。。 実行すると Exception in thread "main" java.lang.NoClassDefFoundError: ↑はwikiで解決するんですが、 at java.net.URLClassloader$1.run(Unknown Sourse) at ・・・ at ・・・ と、at何とかが7個出てくるんですがあれはなんでしょうか? 教えてください。
92 名前:デフォルトの名無しさん [2008/05/14(水) 11:42:50 ] エラー
93 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:25:20 ] >>91 スタックトレース 例外が投げられた時点でどういうメソッドが呼ばれていたのかの情報 下の行のメソッドが上の行のメソッドを呼んでいることを表す その場合は例外は一番上のjava.net.URLClassloader$1クラスのrunメソッドで投げられた
94 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:23:05 ] 2006年atex1003第XX回「hoge」(piyopiyo).avi ↑のようなファイル名のファイルが大量に入ったディレクリを引数に指定して、 中のファイル名を第XX回「hoge」.aviにしたいと考え以下のようなものを書いたのですが、 renameToの返却値がfalseになってダメです。 どうしたらちゃんとリネーム出来るのでしょうか?orz public static void main(String [] args) { File dir=new File(args[0]); String[] str=dir.list(); for(int i=0;i<str.length;i++) { File file=new File(args[0]+str[i]); String newfile=new cui().toRenStr(str[i]); System.out.print(file.renameTo(new File(args[0]+"/"+newfile))); } } public String toRenStr(String str) { Pattern pattern = Pattern.compile(".*第"); Matcher matcher = pattern.matcher(str); String renstr = matcher.replaceAll("第"); pattern = Pattern.compile("」.*"); matcher = pattern.matcher(renstr); renstr = matcher.replaceAll("」.avi"); System.out.println(renstr); return renstr; } }
95 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 17:01:05 ] >>94 renameTo()を呼ぶ前に、file.getName()とnew File(args[0]+"/"+newfile).getName() を表示して確認。
96 名前:デフォルトの名無しさん [2008/05/14(水) 20:11:53 ] 質問です。 左右マウスホイールって使えないんですかね? (一般的にはチルトホイールという?) 少し調べたんですけど、全然出てこないですね。
97 名前:デフォルトの名無しさん [2008/05/14(水) 20:51:21 ] JavaでWebサーバを作成中で、POSTリクエストの受付を可能にしようとしています。 POSTのHTTPリクエストは 「ヘッダ部複数行」 1空行 「データ部1行」なので、 BufferedReader br = new BufferedReader (new input StreamReader(socket.getInputStream())); でHTTPリクエストを取得。そのあとに while(br.readLine() != (""){ } String data = br.readLine(); とやれば、データ部をdataに入れられると思ったのですが、 データ部の後ろには改行コードのCRLFがないため、readLineで1行読み込む ことができないようです。同様にread()でもうまくいきません。 どうにかしてデータ部を取得することはできないでしょうか?
98 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:09:43 ] >>97 たいていの場合はヘッダにデータ部の長さが入っているので、そのぶん だけ読めばよろしい。 他、気になるところ: ・HTMLからのフォームPOSTでも、データがMIMEで送られることがあるので、データが1行とは限らない ・データがバイナリのこともあるので、基本的にReader類は使ってはダメ ・chunked-encodingのこともあるので、以下略
99 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:27:47 ] private InputStream is; private InputStreamReader in; これらを使って文字列を読んでるんですが、ファイルが終端に達したかを調べる方法ってありますか?
100 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:32:32 ] >>99 readメソッドの戻り値がー1
101 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:40:13 ] >>100 ありがとうございます
102 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 22:50:49 ] スレチかもしれませんが教えてください。 いまSQL Serverとjavaを繋げる勉強をしています。 INSERTした時間を後で取り出し after()メソッドで比べたいのですが、そういった処理は可能ですか? もし可能なら詳しく教えてください。
103 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:01:01 ] System.currentTimeMillis() または System.nanoTime()
104 名前:デフォルトの名無しさん [2008/05/15(木) 00:19:56 ] ガベージコレクションは必要なくなったオブジェクトを自動的に開放してくださるそうですが、ストリームも自動開放してくれるのでしょうか? また、どのタイミングでしてくれるのですか?
105 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:25:52 ] しません。
106 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:27:08 ] 忘れてた。ファイナライザでクローズしちゃだめだよ
107 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:30:16 ] ストリームくらいちゃんと閉じろ、馬鹿者
108 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:33:55 ] void hoge() { InputStream input = null; try { // 略 } finally input.close(); input = null; // ← } } これが必要か?って話ならばイラネ
109 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 05:30:00 ] 無駄にnull突っ込むのはC#でもよく見かけるんだが、何でこんなに 流行しちゃったの?何か歴史的背景とかあんの?
110 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 08:45:43 ] >>103 ちょっと難しそうですけど、ありがとうございました。
111 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 09:38:05 ] >>109 nullを入れたほうがGCの取りこぼしが少ないとか、即座にGCされるから効率的だとか、そういう勝手な思い込みから
112 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 11:19:31 ] input.close(); input = null; System.gc(); しても実際3行目でメモリ解放するかはGCの実装依存なんだよね。
113 名前:デフォルトの名無しさん [2008/05/15(木) 11:47:37 ] バグの原因になるからだよ 処理しないでそのまま流してしまうコードを書くおっちょこちょいが多すぎて コンパイラがデフォでnullを入れてないコードをコンパイルするときにエラーをはくようになった
114 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 12:46:18 ] 何言ってんだ?
115 名前:デフォルトの名無しさん [2008/05/15(木) 14:52:45 ] public class A { public static void main(String args[]){ static int i = 0; // int i = 0;ならエラーにならないのはなぜですか?
116 名前:デフォルトの名無しさん [2008/05/15(木) 15:10:35 ] >>115 ローカル変数には static つけられないって言語仕様で決まってるから。
117 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 15:21:37 ] public class A { static int i = 0; public static void main(String args[]){ これならいいんですね。
118 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:27:21 ] >>117 それだとiはローカル変数ではなくなる。 staticはインスタンスでなくクラスに属する変数であるという意味だから、 クラスやインスタンス個別でなくスレッドごとに存在しているローカル変数に付けると 意味不明になってしまう。単に、>>115 でstaticを外したように書けば、 ローカル変数iとして使えるし、コンパイルも通るはず。 それともクラス変数にしようとして書く場所を間違っただけ?
119 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:37:44 ] 型の静的変換について質問です。 とあるObject型のobj、Sting型のstrがあるとして ((String)obj).charAt(0); str.charAt(0): この二つでは、静的変換が入る上のほうが実行速度にペナルティーがあるのでしょうか? 以前やっていたCではペナルティがなかったと思うのですが、Javaだと「静的型変換に失敗した」という例外を投げてくれるようなので、おそらくなかでチェック機構が働いており、ペナルティがあるかなと思っているのですが
120 名前:デフォルトの名無しさん [2008/05/15(木) 17:48:19 ] >>119 コードや実行環境によるとしか言えない。 例えばループ内で obj が再代入されないなら JITコンパイラが String tmp = (String)obj; みたいなコードを ループ外部に作成して、ループ内部では tmp.charAt(0) に変換、 みたいな事をする可能性はある。
121 名前:デフォルトの名無しさん [2008/05/15(木) 17:49:55 ] >>119 あと、(String)obj は動的(実行時)型変換だよ。 静的(コンパイル時)型変換じゃない。
122 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:58:49 ] >>120-121 なるほど、最適化されるということは、裏を返せば型変換にはペナルティがあるってことですね。 >あと、(String)obj は動的(実行時)型変換だよ。 たしかに。書き方がCと同じだからって、同じものだとは限らないわけですね。 Javaには静的型変換はないようで。 ありがとうございました。
123 名前:デフォルトの名無しさん [2008/05/15(木) 18:15:56 ] >>118 ありがとうございます。 int変数のiが5なのかを判定したくて if(i == 5){ と書いてみたのですが、そのif以前にiが初期化されていなかったらiがnullかもしれないから if(i != null && i == 5){ と書かなくてはならないのか調べたくて int i; if(i == 5){ とするとコンパイルできなかったから、 static int i; if(i == 5){ と書きましたが、これもコンパイル不能でしたが、コンパイラがstaticを 解釈できていないようなメッセージを出しているみたいだったので質問させていただきました。
124 名前:デフォルトの名無しさん [2008/05/15(木) 18:17:38 ] >>123 int型が null になる事はない
125 名前:デフォルトの名無しさん [2008/05/15(木) 18:21:49 ] >>124 そうですね。nullになりませんが、プリミティプの数値型は0で暗黙の初期化がされるらしいので int i; を書いてから、初期化を書かずに if(i == 0){ を実行して真となることを確認したいのですが、そのようなソースは書けませんか?
126 名前:デフォルトの名無しさん [2008/05/15(木) 18:23:40 ] >>125 ローカル変数は暗黙の初期化はされない。
127 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:24:46 ] >>125 書けません。 必ずローカル変数はその値を参照する前に初期化されていることが求められています。 そして、ローカル変数は初期化を省略した際のデフォルト値のようなものはないので、 自分で初期化しなければなりません。
128 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:27:37 ] >>125 int i; と書いただけではiの値は確定していないので必ず初期化が必要。 iに値を代入するのがそんなに面倒?
129 名前:デフォルトの名無しさん [2008/05/15(木) 18:29:52 ] public class A { static int i; public static void main(String args[]){ これならiは暗黙の初期化で0ですね。 ありがとうございました。
130 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:36:28 ] なにがやりたいのかわからん ローカル変数とクラス変数では全然意味が違う 暗黙の初期化をしたいがためにローカルなものをフィールドに出したら プログラムそのものの動作が変わってしまうだろ
131 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:15:37 ] 暗黙の初期化なんて百害あって一利ぐらいだわ。 一般的なJavaプログラミングには必要ない。 むしろプリミティブ型の値範囲と精度に注目して欲しい。
132 名前:デフォルトの名無しさん [2008/05/15(木) 19:58:21 ] なんか、Seasar2っていうのがいいらしい。 おもしろかったらやってみたいんだけど、 家計がしんどいので2000円の本買うのためらってる。 Seasar2っておもしろい??
133 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:13:25 ] まず働いて2000円の本位買える家計環境にしよう
134 名前:132 [2008/05/15(木) 20:50:48 ] >>133 働いています><; 一人暮らしでバイクのローンもあるから厳しいんです><; 原付にしときゃよかった><; Seasarのスレがあったのでみたら、閉店するそうなので やめます><;
135 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:03:04 ] 2,000円の本を買うのためらうくらいならネットで調べろ
136 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:05:57 ] JSPでDBとやり取りするドライバ(のようなもの?)のクラスを作っているのですが、判らないことがあります。 ResultSet.nextをコールしないとSQLExceptionがスローされるようなのですが、なぜExceptionになるのでしょうか? statement.excute(SQL文)でSQLのカーソルをSQL文に対応するレコードに移し、 statement.getResultSet()でカーソルの指し示すレコードをResultSetとして渡す。 で、ResultSet.getString()なりなんなりでSQLの中身を取り出す。 複数のレコードを取り出すならばResultSet.next()を使うのが自然だと思うのですが、単独のレコードが期待される場合は使う必要がないのではないでしょうか? excuteじゃなくてexcuteQueryだと違うんでしょうか?
137 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:15:23 ] なぜExceptionの詳細を書かないんでしょうか? stacktraceくらい張ったらどうでしょうか?
138 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:24:48 ] >>136 ResultSet のカーソルは、初期状態では最初の行の前に位置付けられています。 メソッド next の最初の呼び出しによって、最初の行が現在の行になります。 2 番目の呼び出しによって 2 行目が現在の行になり、以降同様に続きます。
139 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:29:52 ] >>136 java.sun.com/javase/6/docs/api/java/sql/ResultSet.html > A ResultSet object maintains a cursor pointing to its current row of data. > Initially the cursor is positioned *before the first row*. 日本語版は誤訳だから気をつけろ
140 名前:136 mailto:sage [2008/05/15(木) 22:49:57 ] 英語苦手なんでアレなんですが… ResultSetのカーソル位置が最初0で、受け取ったデータは1から始まるって事でしょうか?
141 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:54:57 ] そう
142 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:02:39 ] 把握しました。ありがとうございます。 <チラ裏> 言えない…ResultSetが単体のレコードを格納すると思ってたなんて言えない… </チラ裏>
143 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 01:09:02 ] Cursorとかいう名前だったらよかったのにな。
144 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:31:41 ] >>140 可能です。 以上。 ↓次の方どうぞ
145 名前:デフォルトの名無しさん [2008/05/16(金) 08:35:28 ] 質問です、文字列からColorクラスに変換することってできないでしょうか?つまり、 String colorname = "red"; のような色名を表す文字列を使って、setBackgroundやsetColorなどのメソッドの引数をつくる方法はないでしょうか? 色名を全部並べてif文とかで条件分岐をすればできるですが、それだととてもコードが長くなってしまうので・・・
146 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:38:52 ] >>145 java.awt.Color#getColor(String)
147 名前:145 mailto:sage [2008/05/16(金) 09:11:22 ] >>146 レスありがとうございます。やってみたのですが、たとえば Color color; color.getColor("red"); というふうにすると、コンパイルはできるのですが、ちゃんと色が出ませんでした。 redをblueやcyanに変えてみても、同じ黒っぽい色しか出ません。 どうしてなんでしょうか?
148 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 09:17:15 ] APIリファレンスすら読まないから。
149 名前:145 mailto:sage [2008/05/16(金) 09:29:15 ] 一応読んではいるのですが・・・
150 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:16:27 ] 質問です 2次元の配列データを、csvファイルにして(デスクトップなどに)出力したいのですが、どのような方法があるでしょうか。
151 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:29:14 ] 自前でやるのが面倒なら commons-csv なりなんなり使え。
152 名前:150 mailto:sage [2008/05/16(金) 10:32:28 ] すみません、自前でできる方法をお願いします。
153 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:43:36 ] >>147 使い方としては、 Color color = Color.getColor("red"); だけど、ドキュメントを見るとシステムプロパティがどうとか書いてあっ てよくわからんね。