1 名前:デフォルトの名無しさん [2008/03/01(土) 18:16:51 ] プログラミング言語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質問・相談スレッド112【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1202467704/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝のう存じます。 次スレは>>980 あたりで。
710 名前:デフォルトの名無しさん [2008/03/24(月) 22:37:59 ] とても初歩的な質問でお恥ずかしいのですが、 自分の出した答えに自信がないため、質問させていただきます。 int型の変数を2byteの配列に格納(その後取り出し)したいのですが、 ビット演算の理解がつたないため、下記のようなやり方しか思いつきませんでした。 正しいやり方をご存知の方がおりましたら、 教えていただきたく、よろしくお願いいたします。 byte[] data = new data[2]; int num = 128; //格納 data[0] = (byte)(num >> 7); data[1] = (byte)((num << 25) >> 25); //取り出し num = data[0] << 7; num += data[1];
711 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:42:30 ] data[0] = (byte)((num >> 8) & 0xFF); data[1] = (byte)((num >> 0) & 0xFF); num = ((data[0] & 0xFF) << 8) | ((data[1] & 0xFF) << 0);
712 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:44:18 ] >>710 JDKについてくるjava.awt.Colorあたりのソースで、intと alpha, red, green, blueの各1バイトの換算をしているのが参考になると思う。 intは4バイトだから、厳密に言えばサイズ2のバイト配列には入りきらない。 シフト量は24, 16, 8, 0な。
713 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:49:26 ] >>711 >>712 返信いただき、ありがとうございます。 教えていただいたコードと参考資料を元に、 ビット演算の知識を深めたいと思います。 自分ではどうしてもわからなかったため、 とても助かりました。 本当にありがとうございました。
714 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:51:26 ] Javaでbyteがsignedってのはつくづく罠と思う。
715 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:53:37 ] だよなー おかげでバイナリの扱いがとてもしにくい・・・
716 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:32:34 ] intが17bit以上の場合が考慮されていないけどいいのか?
717 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 00:57:08 ] javaはバイナリの操作向いてないよ
718 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 01:30:50 ] またおまえか
719 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 08:02:38 ] 覚えておいたほうがよい 静的メソッドや変数などのリストの一覧的なものってどこにありますでしょうか
720 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 08:15:00 ] MathクラスとかSystemクラスとか他によく使用されるものの一覧を探しています
721 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 08:17:15 ] そんなものはない。静的メソッドは必要に応じて都度クラスに付いてるから 静的メソッドだけ一覧的に覚えること自体に意味がない。
722 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 08:19:51 ] APIじゃだめなの?
723 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 09:15:54 ] >>719 >>3 java.lang, java.util. java.io パッケージ群のそれぞれのクラス、仕組みは 押さえてしかるべき、と主張する人も居るね(逃
724 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 09:43:16 ] 公開鍵証明書を作るクラスって標準でないの? keytool 使うしかない?
725 名前:719 mailto:sage [2008/03/25(火) 11:14:34 ] 静的って書いたのがまずかったのでしょうか Math.なんちゃら〜 とか system.なんちゃら〜 みたいなもので 頻繁に使われるような物のリストを探しているのですが まとめてあるサイトは見つかったのですがあまり使わないようなものが大量にあったり どれがよくつかわれるものなのかわからないので これは覚えておいたほうが良いというものを集めてリストになっているサイトなどありましたら教えてください
726 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:16:31 ] 何が必要かなんて、分野によって違ってくるのが当たり前。 とりあえず、ArraysとかCollectionsをあげておくけど、 自分で見つけるのが一番いいと思うよ。
727 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:16:29 ] Mathのメソッドもそんなに頻繁に使うとは思えない
728 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:33:40 ] >>723 みたいに、java.lang, java.util. java.io以下のクラスは押さえて、 あとはJavadocでその都度確認、ってのでいいんじゃね。
729 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:35:03 ] >>724 証明書を発行するAPIというのは標準にはなかったと思う。
730 名前:719 mailto:sage [2008/03/25(火) 12:57:38 ] java.lang, java.util. java.io以下のクラスですな さっそく調べて覚えるよう様にするす dクス!
731 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 12:59:22 ] 719が聞いてたのはstaticメソッドのことじゃないの?
732 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 15:40:34 ] Sound APIについて質問です。 DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); TargetDataLine target = (TargetDataLine)AudioSystem.getLine(info); これで取得したターゲットラインを録音すると、コンピュータ上の音(スピーカーから通常出る音)が録音されました。 これをマイクからの入力に変えるにはどうすればよいのでしょうか? Port.Info.MICROPHONEを情報としてPortを取得して・・・とするのでしょうけれでもその先が分かりません。
733 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 16:20:26 ] >>732 AudioSystem#getMixerInfo、AudioSystem#getMixer、Mixer#getTargetLineInfoあたりで 全部のターゲットラインをリストアップして、一覧から選ばせるってのはどうだろう・・・
734 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 17:55:04 ] javaのコンパイラのパスを要求されたらどこを指定すればいいのでしょうか j2sdkを普通にインストールしました
735 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 17:56:49 ] OSは?
736 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 17:57:07 ] C:\Program Files\Java\jdk1.6.0_05\bin
737 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 17:57:13 ] 窓xp sp3です
738 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 18:01:46 ] >>736 そこらへんで見つかりました ありがとうございます ずっとjreの方を見てました
739 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 18:10:39 ] JDKを入れるのが初めてなら落とすときにインストール手順を読まないのだろうか
740 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 18:15:00 ] 世の中にはマニュアル類を読まない人間が結構いるらしいよ
741 名前:>>733 mailto:sage [2008/03/25(火) 18:51:09 ] >>732 それしかないみたいですね。 そうします。ありがとうございました!!
742 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:03:55 ] PATHって、違う言語をコンパイルするときには毎回変えないといけないの? 今Cの設定なんだが。
743 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:08:09 ] どんどん追加していけばいいだけ
744 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:14:55 ] 基本的に同じ PC 上で同じ言語 (コンパイラ) の違うバージョンを使い分ける場合だけ気をつければ良い。
745 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:17:31 ] 追加できるのか。ども。
746 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2008/03/26(水) 10:56:16 ] javac の -g:<キーワード> で sources,lines,vars のデバッグオプションが 指定できますが、デバッグ情報が載らない(載せない)と言う点以外の影響 (性能劣化等)はあるのでしょうか。class ファイルが大きくなるだけでしょうか。
747 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:03:56 ] サブクラスのインスタンスから「スーパクラスのメソッド」呼び出した時、 スーパクラスのメソッド内で、「サブクラスでオーバライドしたメソッド」を使ってた場合に 動的バインドでオーバライドした方のメソッドが呼び出されるのって 単純に気をつけるしかないんでしょか?
748 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:09:07 ] >>747 当然の話。むしろ呼んでくれないと困る。 それを「気をつける」と認識する方が問題。
749 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:11:17 ] ありがとう。認識あらためます。
750 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:14:40 ] >>747 オーバーライド(上書き)とはそういうもの。 公開したいけど、上書きされるのが困るのならば、final を付けてしまいましょう。 公開する必要が無いならば、private にしましょう。 そもそも継承されることを望んでいないなら、class を final にしてしまいましょう。
751 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:04:04 ] 言い方を変えれば、上書きしたメソッドを呼んで欲しいからサブクラスで上書きするわけで、読んで欲しくないならばオーバーライドする必要がない ただ、「意図せずにスーパークラスのメソッドをオーバーライドしてしまった」とか「意図せずにサブクラスで定義されているメソッドと同名のメソッドをスーパークラスに定義してしまった」というケースはある。 解決策はfinalもあるが、@Override無のオーバーライドはコンパイルエラーとする、という方が柔軟ではある。
752 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:12:47 ] C# と比較するとわかりやすいかも。
753 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:37:35 ] C#しらねって奴多いんじゃない?
754 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:46:55 ] C#いらねって奴多いんじゃない?
755 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:26:04 ] 最近になってJavaが無謀な拡張されまくってるのはC#のせいだからな
756 名前:デフォルトの名無しさん [2008/03/26(水) 21:12:25 ] String str1 = "文字列"; と String str = new String("文字列"); って何が違うのでしょうか?
757 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:21:35 ] 後者は無駄の極み
758 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:27:04 ] 上はどこかにある "文字列" という文字列の参照を str1 に代入されるだけ。 下は "文字列" という内容の新しい文字列オブジェクトが毎回作られてから、その参照が str1 に代入される。
759 名前:デフォルトの名無しさん [2008/03/26(水) 21:39:02 ] すみません、str1じゃなくてstrでした。 では、前者と後者で目に見える違いが出ることはあるのですか? まら、両者を使い分けたりする必要はあるのでしょうか?
760 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:44:10 ] public class Test { public static final void main(String[] args) { String s = "Hello, world"; System.out.println(s == "Hello, world"); System.out.println(s == new String("Hello, world")); } } -------- true false --------
761 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:47:42 ] 上は str1 == str が true、下は str2 == str が false 従ってインスタンスが同じかどうかの違いがそのまま適用される。 たとえば synchronized(str1) と synchronized(str)
762 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:20:03 ] 誰か文字列の実体はプールで共有されてるって言ってやれよ。
763 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:34:46 ] 理由言わないとね・・・
764 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:36:15 ] プールと言いたいだけの奴とは違うのだよ。
765 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:16:55 ] >>762 intern()しないと共有されないぞ。文字列リテラルは暗黙で共有されるが。
766 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:20:24 ] >>756 に対する答えは、 String str = new String("文字列"); は絶対に使うな、でいいじゃないか。 理由はこの際どうでもいい。
767 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:27:48 ] 理由がどうでもいいとか思うやつって技術者としてどうなんだ。
768 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:29:40 ] 理由を押し付けて初心者を混乱させるのって人間としてどうなんだ。
769 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:31:49 ] 動けば良い系の人じゃね。 安易に絶対とか使うのも技術屋じゃねーし。
770 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:31:50 ] 俺も*とりあえずは*使うな、って方針には賛成 必要になってから知ればいいんじゃないかな
771 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:00:19 ] 小学生に教える時に中学高校で扱う内容にまでふれて 説明した方が良い/悪い論争
772 名前:sage [2008/03/27(木) 00:10:51 ] 1 if (XXX == XXX) ってのはそのオブジェクトの参照が同じかチェックしている? 2 String str = new String("XXX") は新しくメモリに確保(インスタンスを作成)すること? 3 String str = "XXX" の扱いはVMが管理している?
773 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:19:45 ] ブッ 理解までにそんな大きなステップが必要なほどのネタなのかよw すぐには不要でも、キーワードだけでも与えておけば必要になった時の理解度が違う。 将来の期待もなく「理由不問、絶対やるな集」だけで育てられたお前に合わせる必要はねぇべ。
774 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:21:07 ] >>772 まあ、全てYESと言っても良いかと。 ただ、貴方と私で、其の文を見て、違う状況を想定してる可能性は否めないが。 15.21.3 参照型等価演算子 == 及び != ttp://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#236163 3.10.5 文字列リテラル ttp://www.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html#101083
775 名前:デフォルトの名無しさん [2008/03/27(木) 00:24:58 ] SJC-P310-035の試験を今度受けるんですが、黒本の仕上げ問題で61問中51問正解 だったんですが、こんなレベルでももう合格できますか?
776 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:47:48 ] とりあえず忘れろに賛同かな バイト配列から文字列を生成したいような場合にnewは使うが、new String(String str) を使うケースはほとんどない、と教えてる。 どっちかといえば、equalsで比較しろのが重要な話しだし。 >>775 スレ違い
777 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 01:03:18 ] >equalsで比較しろ これの方が遙かに重要だな
778 名前:デフォルトの名無しさん [2008/03/27(木) 03:52:21 ] Javaのライブラリに変数の詳しい情報をダンプしてくれるような奴ってありませんか? PHPでいうvar_dump的なものを使いたいんですが
779 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:30:48 ] >>778 用途がわからんのだが、開発中ならたいていのIDEのデバッガについてる 変数watch系機能で間に合いそうな。 それとも運用中に必要な機能?
780 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:33:27 ] commons langのToStringBuilderとか大がかり杉?
781 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:43:02 ] ねぇよ下駄言語と一緒にするなと言えば済む話では。
782 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:45:34 ] JITコンパイルされた後のアセンブリコードを見るには、どうすれば良いですか?
783 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:46:42 ] 心眼
784 名前:デフォルトの名無しさん [2008/03/27(木) 12:17:19 ] >>779 普通のテキストエディタでやってる人間なもんで… >>780 ToStringBuilderちょっと見てみます
785 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:41:38 ] Soundbankに新たなInstrumentをロードしたい場合どのようにすればよいでしょうか? デフォルトのシンセサイザーをMidiSystemで取得してloadInstrumentでロードしたいのですが、同じInstrumentでもHeadspaceInstrumentじゃないと読み込めないらしいのです。 他にもいろいろ実装しなおさなければいけないのでしょうか?
786 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:56:38 ] >>785 www.jsresources.org/faq_midi.html#create_soundbank
787 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 13:34:49 ] うわーSynthesizer実装しないといけないんですね。 分かりました。諦めます。
788 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 15:15:38 ] オーバーロードに関して質問なのですが class unko { public void hoge(List<List<A>>) { } public void hoge(List<A>) { } } これって何で出来ないんですか? 微妙に型というか違うと思うのですが
789 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 15:19:23 ] Javaのジェネリクスは、コンパイル後に消えるから、どちらも同じ型とみなされる。 だからNG
790 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 15:30:01 ] >>789 なるほど・・・
791 名前:デフォルトの名無しさん [2008/03/27(木) 16:53:01 ] List< List<A> >ならOK
792 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:57:04 ] >>791 C++と勘違いしてないか?
793 名前:デフォルトの名無しさん [2008/03/27(木) 17:00:59 ] >>792 うん。
794 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 17:13:52 ] なんだ釣りか。
795 名前:772 mailto:sage [2008/03/27(木) 22:42:03 ] >>774 文字列連結でもOKなのは、まったく分かっていませんでした。 さらに、実行時に解決?計算される文字列は、異なるもなのですね。 そもそもinternなんてメソッドがあるなんて知りませんでした。 全く分かっていなかったけど、そのサイトかなり勉強になりました。 理解できればの話ですが。
796 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 01:03:18 ] フィールド名の先頭を_(アンダーバー)にしているコードを見かけるのですが、 どのような意味でそのようにしているのですか?
797 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 01:18:31 ] フィールドとそうでないものとを区別するため
798 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 01:22:10 ] アンダースコアが正しい読み方
799 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:58:59 ] >>798 通じるし、そこは許容範囲だろ。 「Unicode的にはローラインだ」とか、不毛だろ?
800 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 08:27:03 ] _1つで始まる識別子って、グローバルな空間では全部予約済みなんだよな。 構造体フィールドならいいけど。
801 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 08:28:05 ] む、そりはC/C++だ。
802 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 08:44:57 ] Cでコンパイルするとリンカ上の名前が_付になる。のような気がした。
803 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:06:25 ] 800は791か。
804 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:35:10 ] 変数a b c があるとしてこの中で中央値を求めるにはどういう方法がありますか? 変数は何が入るかわからないという場合です。 if文の練習問題なのですが、答えがのってなくて
805 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:41:43 ] int[] array = new int[]{a, b, c}; Arrays.sort(array); System.out.println(array[1]);
806 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:43:00 ] >>805 if文使えw
807 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:47:12 ] 説明が悪かったです、すみません 例えば a=1 b=2 c=3 なら bが出力 a=2 b=1 c=3 なら aが出力 みたいに何の数値を入れても真ん中の数値が出力するということです。
808 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:48:59 ] いや>>805 で合ってるよw if(a<b){ if(b<c)答=b; else 答=max(a,c); } else{ if(c<b)答= b; else 答=min(a,c); }
809 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:56:18 ] 全然わからないんですが、maxとminはどうすればいいですか?
810 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:00:54 ] maxは渡された引数の大きいほうを、 minは小さいほうを返すだけ。 これくらいは自力で書けないと、将来つらいよ?