1 名前:デフォルトの名無しさん [2007/06/27(水) 07:23:27 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド102【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1180419689/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 次スレは>>980 あたりで。
718 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 00:33:53 ] >>716 1.6 のAPIリファレンスでは >ストリームを最初にフラッシュして、閉じます。 って書いてある。 たぶん、あまりにも当然すぎて書かれなかっただけなんじゃないかと。 > 初めに出力されなかった問題点はもっと別のところにあるのかな? output_file_buf.close() を呼ぶ前に output_file.close() を呼んでいた、に一票。
719 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 02:42:29 ] >>715 そう。EE5.0にあるxmlライブラリをSEに持ってきた時に依存関係を解決するついでにくっついて来た感じ。 標準ライブラリに昇格しただけでJAXB自体は前からあった。
720 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 03:53:12 ] SwingとかWebStartとかXMLとか流行りそうで流行らんなー。
721 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 03:58:29 ] 720プロデュースで大々的にキャンペーンでもうってみてはどうだろう
722 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 05:19:42 ] Swingとxmlは流行るとかそういうものじゃないと思うが。
723 名前:デフォルトの名無しさん [2007/07/18(水) 09:59:11 ] 質問させてください。 以下のような処理を行いたいと思ってるのですが、行き詰まっています。 1. JScrollPaneのscrollble clientに、GridBagLayoutのJPanelを貼り付けて、ボタンの テーブルを作成。 2. JScrollPaneのcolumn headerに、JTableのcolumnNamesのような項目名をテーブルの 各要素の幅に同期するように作成。 上記の、2.の処理を上手くやる方法はないでしょうか? 最初は、JTableのセルにパネルを貼り付けられないかと考えていたのですが、探した限り やり方がみつからなかったので、この方法をとろうとしています。 良いお知恵をお持ちの方、ご教示願います。
724 名前:デフォルトの名無しさん [2007/07/18(水) 10:28:34 ] >最初は、JTableのセルにパネルを貼り付けられないかと考えていたのですが、探した限り >やり方がみつからなかったので、この方法をとろうとしています。 TableCellRenderer
725 名前:デフォルトの名無しさん [2007/07/18(水) 10:46:52 ] チュートリアルに無いか?
726 名前:デフォルトの名無しさん [2007/07/18(水) 12:06:38 ] いや、JDKのデモに付いてた気がする。
727 名前:712 [2007/07/18(水) 15:25:28 ] >>718 言われてみて、はっと気がついてソースコード見直したら /* バッファーの内容を全て吐き出す */ buf_output_file.flush(); /* ファイルクローズ */ output_file.close(); ってなってました・・・ すみませんでした〜〜〜(>_<) Javaで本格的に書き始めたのが、今回エラーの出たソースコードで、最近第2作目に突入していて頭の中がごっちゃになってました。^^;
728 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 18:08:40 ] char型の変数 c があるとして、 int n = (int)c; でUnicodeでの文字コードが取得できるらしいんですが、 これをShift-JISでの文字コードを取得するにはどうしたらいいですか?
729 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 18:54:30 ] > int n = (int)c; でUnicodeでの文字コードが取得できる 出来ません。 CharacterやStringクラスにコードポイントを返すメソッドがあるのでそれを使いましょう。 今のunicodeは21bitなんだな
730 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 19:03:00 ] >>728 char型の変数cに収まる範囲の文字コードについてはいい加減にこういうふうに char c = 'あ'; short s = java.nio.charset.Charset.forName("Shift_JIS").encode(String.valueOf(c)).getShort(); System.out.printf("%04x%n", (int)c); System.out.printf("%04x%n", s);
731 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 19:15:44 ] >>730 Charsetまで呼ばなくても、それならこれでいいんじゃね? for (byte b : String.valueOf(c).getBytes("Shift_JIS")) System.out.printf("%02x", b);
732 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 21:44:44 ] >>717 急いで書いたらしょうもないミスしてますね、すいません。 配列で出来るんですか…う、う…ん…。 何か根本的にやり方がおかしいようですね…。 勉強しなおしてきます。
733 名前:デフォルトの名無しさん [2007/07/18(水) 22:47:44 ] JTable にスクロール機能を持たせる場合、通常 JScrollPane を使用しますが、 大量データがある場合はパフォーマンスとリソースの観点から実用的では無い ので、JScrollBar を使用した手動スクロールを作成したいのですが、 作成方法を教えて頂けませんでしょうか? サンプルなどがあるHPでも結構ですので、ご教授頂けると幸いです。
734 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 22:57:28 ] 688
735 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:01:21 ] Frame上でJSplitPaneとか、Jの付くコンポーネント使って何か問題ありますか?
736 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:10:52 ] >>733 > 大量データがある場合はパフォーマンスとリソースの観点から実用的では無い JScrollPane使ってたら、描画が必要な部分しか描画しないはずだが。
737 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:12:34 ] 軽量が先、重量が後に描画に起因する事象。問題あるかどうかはやり方次第。
738 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:19:24 ] >>736 Swingの使い方間違えてんだろう・・・Swingで著しくパフォーマンス悪いのと描画に問題あるのは昔からマが使い方間違えてるだけだし。 JTreeを初期化時に全部ツリー作るとかさ。 そういうことだ>>733 ソース晒すなりしないと。 今のマシンスペックじゃあブラウザでFlash自慰サイト読み込んで メモリ1Gくらい食ってガンガン動かしても余裕だからjavaなんて論外。
739 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:46:53 ] public void run() { try { while (true) { Socket acceptedSocket = serverSocket.accept(); hogehoge(acceptedSocket); } } catch (InterruptedException e) { } catch (IOException e) { e.printStackTrace(); } finally { try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } 他のスレッドからThread#interrupt()で止められるサーバーってこう書くのかと思ったら 例外 java.lang.InterruptedException は対応する try 文の本体ではスローされません。 正しくはどう書くものなんでしょうか。
740 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 23:47:08 ] >javaなんて論外 Flexっていう便利なものがあるんだからJavaでGUI書くなんて 論外って意味なのか、Javaで書くと重いと文句を言うなんて (使い方を間違えてるだけから)論外って話なのか、どっちだろう
741 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:36:26 ] >>739 Thread#isInterrupted()、Thread#interrupted() 使って 自前で割り込みされたかチェック。 何したいのか良く分からんけど、 interrupt で止められるサーバって考え方自体が正しくないような気もするが。
742 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 00:47:41 ] >>739 ここでその手の話にまったく詳しくない俺が本で読んだだけの知識で答えるぜ 1.ServerSocket#accept()はInterruptExceptionを投げない→タイムアウトを使うしかないはず(nioあたりで止められるのはあった気がする) 2.Thread#interrupt()を実行したら勝手にInterruptExceptionが発行されるわけではない→Thread.currentThread().isInterrupted()でインタラプト状態を確認し手動で投げる 3.hogehogeがやたら時間のかかる処理でInterruptExceptionを使う場合hogehoge内で2の動作をすることでキャンセル可
743 名前:739 mailto:sage [2007/07/19(木) 01:12:45 ] 参考になりました。 ・・・が、方針の段階で間違っているんですかね・・・。 サーバーって普通どう止めるものなんでしょう?
744 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 01:40:36 ] そこでThreadPoolExecutorの出番ですよ
745 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:31:20 ] javaの配列の宣言で class Fuck { String str[] = new String[5]; public static void main(String[] args) { } } ってやると配列の宣言でエラーがでるんですが何故でしょうか? 配列の宣言文をメインの中でやるとエラーはでないんですが
746 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:35:46 ] static
747 名前:745 mailto:sage [2007/07/19(木) 10:46:32 ] すみませんソース間違えました; class fuckArr { static String str[] = new String[5]; str[0] = "myGOD"; public static void main(String[] args) { System.out.println(str[0]); } } で fuckArr.java:4: ']' がありません。 str[0] = "myGOD"; ^ fuckArr.java:4: <identifier> がありません。 str[0] = "myGOD"; ってエラーがでるんですが何故でしょうか? mainでstr[0] = "myGOD";ってやると通るのですが
748 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:46:41 ] >>745 配列の宣言(String str[] = new String[5];ってやってるところ)では エラーでないでしょ。 staticメソッドからは static でないメンバにアクセスできないけど。
749 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:51:08 ] >>747 そこには式文かけないから当たり前。 フィールド宣言時に初期化子つかってやるか、静的初期化子使え。 static String[] str = { "myGOD", null, null, null, null }; static String[] str = new String[]{ "myGOD", null, null, null, null }; static String[] str = new String[5]; static { str[0] = "myGOD"; }
750 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:52:11 ] ぬるぽ
751 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:52:42 ] class fuckArr { static String str[] = new String[5]; str[0] = new String("myGOD"); public static void main(String[] args) { System.out.println(str[0]); } }
752 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:54:30 ] >>747 str[0] = "myGOD";がある場所はコンストラクタやフィールド、メソッド、内部クラスの定義しか書けない場所。
753 名前:745 mailto:sage [2007/07/19(木) 11:08:51 ] >749-752 レスthx 単純に式文がかけない場所なんですね
754 名前:デフォルトの名無しさん [2007/07/19(木) 13:54:28 ] Java sound apiを利用してWebアプリケーションを構築したいと考えているのですが 例えばページ上でボタンを押したら録音が始まり10秒間録音してユーザーのローカルにファイルとして保存するようなJSPは 構築可能でしょうか? 頭でなかなかイメージできないので、可能か不可能かも分かりません 具体的な解説を付け加えてもらえれば、なお助かります
755 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:05:41 ] ファイルの内容を一行消したい場合は何を使えば良いのでしょうか?
756 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:20:30 ] >>754 無理というかJSPにする意味が分からんというか。 そういうのはJWSにした方が良いよ。
757 名前:デフォルトの名無しさん [2007/07/19(木) 14:37:26 ] >>756 JWSとJSPはサーバサイドかクライアントサイドかの差だけだと思っていたので、 サーバ側の自分が負担できればと思っていたのですが・・・ またもしJSPであれば、クライアント側はJRE等が必要なくて済むかと・・・ つまり先述の例であれば、JWSの方が良い理由があるということでしょうか?
758 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:53:09 ] サーバサイドのプログラムでクライアントの音声デバイスにはアクセスできない。 サーバにくっついてるマイクの音だけしか拾えない。
759 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 14:55:58 ] Javaを理解するためにはアルゴリズムを勉強したほうがいいでしょうか?
760 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:06:23 ] >>757 サーバー側で動くもの作ったことある? というかどういう風に動いてるか知ってる? 根本的なところから勉強した方が良い気がする。
761 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:07:03 ] >>759 Javaに限らずそれはしたほうがいい
762 名前:デフォルトの名無しさん [2007/07/19(木) 15:37:59 ] RMIでできるべ
763 名前:デフォルトの名無しさん [2007/07/19(木) 15:39:19 ] サーバ側のミキサーにアクセスするだけの話 だからそれほど難しい話ではない
764 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:44:09 ] >>761 ありがとうございます。 ちなみにビギナー向けでいい本ご存知ですか?
765 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 15:55:10 ] >>764 アルゴリズムの勉強は言語(Javaでもいい)の基礎が出来ていて多少書けることが前提 「アルゴリズム」とか「データ構造」でぐぐればネットでも勉強できる これはC言語だけどアルゴリズムの考え方自体は同じだから参考になると思う www.geocities.jp/ky_webid/algorithm/index.html Javaで説明されてる本も出版されてるみたいだけど読んだことは無い
766 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:08:57 ] >>765 そうですか。自分はJavaの勉強に行き詰っている状態なのでちょっと厳しいかもしれません ネットでも勉強出来るんですね?ありがとうございました
767 名前:デフォルトの名無しさん [2007/07/19(木) 16:22:07 ] 基本的なアルゴリズムが身につくと応用力が付く ネットで見たりするソースに隠れたものを理解できるようになる そうなるとどんどん力が付くよ。 最初はやはり本で少し学んだ方がいいかもしれない それほど高く無い値段で出回ってる。
768 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:35:37 ] 本日の部下との会話 俺:newってどういう意味? 部下: ____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ あたらしく作るということです | |r┬-| | \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) 俺:newって単語の意味だけで想像して言っただろ? 部下:はい(´Д`;)ヾ
769 名前:デフォルトの名無しさん [2007/07/19(木) 17:00:11 ] 苦労してるな
770 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 17:03:28 ] >>765 フヒヒ 横からいいHPハケーン!
771 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 17:50:23 ] >>763 クライアント側のミキサーにアクセスしようとしてるんだと思うが?
772 名前:デフォルトの名無しさん [2007/07/19(木) 17:58:17 ] だったらそれでもいいだろ 難しく考えすぎ
773 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:16:19 ] 盗聴のような真似ができるから今問題になってるね
774 名前:755 mailto:sage [2007/07/19(木) 19:00:25 ] どなたか(´;ω;`)
775 名前:デフォルトの名無しさん [2007/07/19(木) 19:03:44 ] 読み込んだあと該当箇所のエスケープシーケンスを消す そのあと保存
776 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 19:04:45 ] 1行ずつよみこんで新たなファイルに書き込む。該当行はスキップ。
777 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 20:23:58 ] 特定の文字列に対して正規表現がマッチしている、みたいなのはできたのですが、 正規表現を指定してそれにマッチする文字列をランダムで作成する、みたいなことってできないでしょうか。 仕事なんでできないとだめなんですが、ご意見いただけないでしょうか。
778 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:10:16 ] >>777 ランダムで文字列を作成して、正規表現にマッチしていればループを抜ける
779 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:17:15 ] 正規表現を逆解析して、適切なテストデータを流すDBからデータとってくるとかかな むかーし、そんな感じのテストツール作ろうかと考えたこともあった。
780 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:30:12 ] 正規表現の逆なんて正規表現でのマッチングよりも難しいんじゃないか? 適当に使用する文字を絞り込んでから778の言うようにランダムに作成してマッチングかけるのが手っ取り早そうだ 仕事なんで出来ないとダメってのは何かおかしいと思うぞ 出来ないものは出来ないと言うべきだ
781 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:38:22 ] >>778 最初それで考えたんだが、文字数だとかが絡んだりするとそう簡単にはいかんことに気付き断念 >>780 普通はそうなんだろうが、そうもいかない会社はいくらでもあるのよ。 とりあえず対応できそうな構文のみでいってみるか・・・
782 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:43:34 ] >>781 だいたい何の用途で使うんだ? 正規表現って言ってもどこまで対応するかによってとんでもなく面倒だぜ
783 名前:754・757 mailto:sage [2007/07/19(木) 21:51:25 ] >>758 なるほど、これでだいぶ理解できました ありがとうございます >>760 全くの初心者です 今日、早速本を買ってきました これから勉強していこうと思います ありがとうございました。
784 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:27:57 ] >>774 特にAPIは無いんじゃないの?
785 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:32:00 ] >>781 1. ある表現から固定の決まったシーケンスを出すようにする [a-z]* なら aaa [0-9]* なら 000 2. あるシーケンスの正規表現マッチングを崩さないような変更を行うメソッドを いろいろ(対応する正規表現分だけ)用意する 例: [a-z]* の aaa を aab にするとか、 aaにするとか。 3. 1.に対して2.を適当な回数適用する どう? まぁできあがる表現に偏りはできると思うがね。 ランダムの定義が曖昧だしこれでいいよな? 1.のシードをある程度余分に作っておけばそれなりにばらけるかもしれないし。
786 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:57:47 ] こういうときこそSnobolですよ、奥さん。 自然言語マッチ用言語の本領発揮!
787 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 23:07:05 ] >>781 まずは対応できる正規表現のパターンを絞り込む事が重要だな 絞り込んじまえばたいしたことはないと思うが、全てに対応しろといったら1プロジェクトだろう
788 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 23:52:46 ] 1.4のプログラムを1.5のGenericsを使った記述に変更してますが、 よく分かりません。 例えば、配列の偶数要素をキー、奇数要素を値とするMapを生成するメソッド public static Map arr2map(Object[] arr) のMapをGenericsを使った記述にする場合、 (1)public static Map<Object,Object> arr2map(Object[] arr) (2)public static Map<?, ?> arr2map(Object[] arr) (3)public static <K, V> Map<K, V> arr2map(Object[] arr) などが考えられますが、どれがいいものでしょうか。 なにか、ガイドラインとなる書籍、URL等ありましたら教えてください。
789 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:00:27 ] >>788 言っている意味も考えられる選択肢もワカラネ そもそもObject[]の時点で終わってるのでGenericsに対応しない方がいいんじゃね? キーの型がKey、値の型がValueであるならば public static Map<Key, Vaue> arr2map(Object[] arr) が正しい。 キーも値も決まってないならば、 public static Map<Object, Object> arr2map(Object[] arr) となるけど、それならば public static Map arr2map(Object[] arr) のままでいいんじゃね?ww
790 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:03:01 ] 総称型使ってClassCastExceptionを起こすのはナンセンス
791 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:14:43 ] >>788 Map<? extend foo, ? extend bar>かMap<K, V>だろうねぇ。 けど、>配列の偶数要素をキー、奇数要素を値とする なんて非OOなレコードの持ち方が変。 keyとvalueのペアを持つエントリクラス作ってそれを持っておくだろ。 static Map arr2map(Object[])なんて変換関数用意するんじゃなくて初めからmapやsetで持ってkeyだけ・valueだけ詰めた配列返すメソッド用意する。 とか、こういう設計の方が自然。
792 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:18:16 ] >>789 みたいな非OOな考え方ができない奴も居るし、ループ回す時複雑だし・・・
793 名前:788 mailto:sage [2007/07/20(金) 00:37:15 ] >>789-792 引数のObject[]が非非OOな持ち方なので、無理に総称型 使う必要は無い(ClassCastExceptionに起こしかねない)と いうことですね。 設計考え直してみます。 ありがとう。
794 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:45:13 ] >非非OOな持ち方なので、無理に総称型 使う必要は無い(ClassCastExceptionに起こしかねない) いや、違う自分の良いように考えすぎ。 アプローチ間違ってますよってだけ。 キャストで例外出すってのはまた別の話。
795 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:58:01 ] >>788 俺だったら、こんな感じかなぁ /** 今後はこっち使ってください */ public static <K, V> Map<K,V> arr2map(Object[] arr, Class<K> keyType, Class<V> valueType) { Map<K,V> map = new HashMap<K,V>(); for(int i = 0; i < arr.length - 1; i+=2){ map.put(keyType.cast(arr[i]), valueType(arr[i+1])); } return map; } /** 互換性のため */ @Deprecated public static Map<?, ?> arr2map(Object arr) { return arr2map(arr, Object.class, Object.class); }
796 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:59:06 ] × map.put(keyType.cast(arr[i]), valueType(arr[i+1])); ○ map.put(keyType.cast(arr[i]), valueType.cast(arr[i+1])); × public static Map<?, ?> arr2map(Object arr) { ○ public static Map<?, ?> arr2map(Object[] arr) {
797 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 01:21:25 ] String.format("%02X", byte) の逆をやるにはどうするのが普通なんですかね。 つまり文字列"00"からは0x00、"79"からは0x79、"80"からは-0x80、 "81"からは-0x79、"FF"からは-0x01のbyte値を生成したいんです。
798 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 01:25:58 ] int val = (byte)Integer.parseInt(str, 16);
799 名前:797 mailto:sage [2007/07/20(金) 01:43:51 ] >>798 なるほど! ありがとうございます。
800 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:16:29 ] >>739 遅レスだが、ソケットを閉じる
801 名前:755 mailto:sage [2007/07/20(金) 10:32:14 ] レスくれた方どうも有難う御座います。 ググっても適当なメソッドや関数が見つからないと思ったら本当に無いんですか・・・ 凄く冗長な気がしますが大人しくファイル二つの間でコピーし合う事にします
802 名前:デフォルトの名無しさん [2007/07/20(金) 10:41:05 ] for( int i = 0; i < 10; i++ ) { int j = i; } こんな風にループ内で変数の宣言していると、回るたびに変数分のメモリを消費していく? int型の4バイト(?)づつ浪費することになる?
803 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 10:42:22 ] >>802 intはオブジェクトじゃないからならない。
804 名前:デフォルトの名無しさん [2007/07/20(金) 10:54:28 ] >>803 オブジェクトだとどんどん消費するってことですか? class Hoge { public static void main( String[] args ) { while( 1 ) { xxx(); } } public void xxx() { // ここでオブジェクトの宣言 } 上のようにやればxxx()が終了した時点でオブジェクトのメモリは解放?されると思ってるんですが合ってますか?
805 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 10:58:38 ] オブジェクトは xxx が終了した時点で ガベージコレクタによってメモリを開放される条件を満たすようになるが、 実際にメモリが開放されるのはそれ以降でガベージコレクタが実際に走った時。
806 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 10:58:56 ] xxx() が終わった時点で参照が外れてGCの対象にはなるが、 その後いつメモリが開放されるかどうかはGCまかせ。
807 名前:デフォルトの名無しさん [2007/07/20(金) 11:20:42 ] レスありがとうございます。 ループ内でオブジェクトを宣言する場合は>>804 のやり方で大丈夫でしょうか? メモリ周りを気にしています。 一番いいのはループ内でオブジェクトは宣言しないことですよね・・・ 軽くGCを調べたら「GCはマルチスレッドで動く」ってあったので期待したい。
808 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 12:14:44 ] >>807 変数宣言は、できるだけスコープを小さくした方がいい。 この場合なら、ループ内で変数宣言した方がいい。 変数のスコープが小さいときは、 最適化されて変数がレジスタのみ使用し、スタックメモリを消費しなくなる。 オブジェクトの生成はそういうわけにはいかず、 newの度にヒープを消費することになる。
809 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 12:47:38 ] いまどきはエスケープ解析されて、スタックに詰まれる。
810 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:46:12 ] メモり周りをシビアに使いたいなら Java じゃない方がいいんじゃないかなあ
811 名前:デフォルトの名無しさん [2007/07/20(金) 14:10:46 ] でも管理は楽
812 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 15:19:29 ] レジスタにのっけるかどうかのアルゴリズムって5.0のままだっけ?6で変わらなかった?
813 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 15:20:37 ] >>812 レジスタにのっけるかどうかのアルゴリズム自体が 6.0 で追加されたんじゃなかったか?
814 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:08:12 ] JDBCリクエストをラップして、 DB の多重化を簡易的に行えるライブラリはありませんでしょうか。 例えば、アプリケーション層のノードが二つ(A,Bとします) DBノードも二つ(X,Y とします)あるとすれば、 A,B ともラッパー経由で更新していれば X,Y に格納されており、 もし JDBC リクエストで X が落ちたら、Y のみに要求する、と言う形です。 この例であれば X への更新をプールして、X が復活したのを検出したら 流していってくれると最高ですが、この部分は X を復帰させる手続きと して手動でやれということでも構いません。
815 名前:814 mailto:sage [2007/07/20(金) 16:15:52 ] C-JDBC, Sequoia あたりはそうなんですかね… いまいち、一般的に使われているかどうかが分かりません。
816 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:43:41 ] フォントの実際の大きさを求めるにはどうすればいいのでしょうか。 JFrameにJTextAreaを乗せてデータを表示していましたが、一部の文字の色を 変える為に、JTextAreaからJTextPaneへ変更しました。しかし、JTextPaneでは JTextAreaのように行数と列数を指定できません。それはJTextPaneのフォント サイズが可変な為だと思います。けれでも私のプログラムのフォントは等幅で 大きさは全て等しく、色が一意でないだけなので、一文字の実際の高さと幅が分 かれば列数、行数ともに算出可能なはずです。そうすれば setPreferredSize(Dimension d)を使って出来上がりです。 そこで調べてみたところ、FontMetricsクラスを使えば期待する動作が行えそう です。FontMetricsは抽象クラスなので、Graphics.getFontMetrics(Font f)を使 ってインスタンスを生成しなければいけませんが、そのGraphicsクラスを使う方 法が分かりません。Canvs.paint(Graphics g)を使えばできますが、それだけの為 にCanvasクラスを使うのは違う気がしました。
817 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 17:12:03 ] >>816 使用するフォントを実際に指定できているわけだから そのフォントを表すFontクラスのインスタンスは得ることができるよね? そしたらあとはJComponent#getFontMetrics(Font)でFontMetricsのインスタンスを得ればいいじゃない
818 名前:デフォルトの名無しさん [2007/07/20(金) 20:51:39 ] 質問です。 OutputStream out = new OutputStream(); DataOutputStream dout = new DataOutputStream(out); という風にDataOutputStreamを作って、 dout.close(); を行うと、 out.close()も勝手にやってくれるのでしょうか?