1 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 23:09:24.14 ID:sB1GrBUA.net] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 (p)ttp://www.wikiroom.com/java/?path,classpath ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 ・String に == は使うな。equals() を使え。※ 質問時の心得 ・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。 ・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。 前スレ ★★Java質問・相談スレッド174★★ [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1435295532/
960 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 17:54:30.97 ID:9Rb1UiHl.net] ArrayListとLinkedListが両方ListなのはJavaの大きな設計ミスの一つだな というか共通に実装するにはListが多機能すぎるんだよ パフォーマンス的にも地雷になりうるから、2つは明確に区別するか、もしくはListではなくCollectionを使った方がいい
961 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 18:01:50.35 ID:9Rb1UiHl.net] あと>>945 みたいなことを言いながら単に複数の値を受け渡ししたいだけのときにListを使う奴の多いこと 大抵のケースではIterableで十分だ
962 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 19:09:02.88 ID:wNgJdiNd.net] List のどこが多機能すぎるんだ? 順序付けられた Collection って明確な実装目的があるし、メソッド自体も Collection のそれと大して変わりないだろ 他の言語でも大体同じような感じの実装になってると思うが、Java の List が失敗なら例えばどんな言語のどんな実装なら理想なの?
963 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 19:27:56.09 ID:9Rb1UiHl.net] >>955 インデックスを指定するメソッド全てだな 「順序がある」と「ランダムアクセスできる」は理論的には同じでも実用的には全く異なるのに、 それを同一としてしまったことがミスだ 後発の.NETの場合はIListはランダムアクセスのためのインターフェースとして定義され、LinkedListはIListを実装していない あくまで「順序がある」としての共通化に拘るのなら、Listはランダムアクセス無しにして ランダムアクセスするためのインターフェースを別途作るべきだった
964 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:14:44.81 ID:wNgJdiNd.net] 「順序がある」と「ランダムアクセスできる」は別に同一にしてないと思うけどなJavaでも List が意味するのはあくまで「順序がある」で 、これ使って確かにインデックスアクセスもできるが、 それはランダムアクセス可能なことを意味したものじゃない(C# でも、LinkedList#ElmentAt は使える) ランダムアクセス可能かどうかは、RandomAccess っていうマーカーインターフェースが別にある
965 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:31:57.67 ID:WA9VNBRk.net] リンクリストに対してget(int)するのは不利だろうけど add(int,Object)やremove(int)はすればするほどアレイリストより有利だよね? リンクリストにランダムアクセスできることの何が問題なの?
966 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:38:18.24 ID:i1u/RpO5.net] >>958 いやリンクリストはaddやremoveも毎回線形走査が走るからArrayListより遥かに遅いよ ListIterator使わないとパフォーマンス上の利点はない 使ってもArrayListより早くなるケースは稀だけどね
967 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:55:01.60 ID:i1u/RpO5.net] 基本的にはほとんどすべてのケースでArrayListの方が速いと考えていい リンクリストは極めて特殊な状況で使うものなので、 .NETではリンクリストなんか無視してArrayList構造前提のインターフェースにした方が便利だという判断になったんだろうね
968 名前:デフォルトの名無しさん [2016/01/19(火) 20:56:09.33 ID:UvexcXui.net] どうしたらエラー消えるか教えてくださいm(_ _)m import java.awt.*; import java.awt.event.*; import java.util.*; public class Kadai74 extends Frame implements ActionListener{ TextField t1 = new TextField(25); //25は最大表示可能文字数 public static void main(String[] args){ new Kadai74(); } public Kadai74(){ this.setTitle("時刻表示"); this.setSize(320,120); this.setVisible(true); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); setLayout(new FlowLayout()); Button button = new Button("時刻の表示"); button.addActionListener(this); add(button); button.setSize(1,3); add(t1); } public void actionPerformed(ActionEvent e){ Date date1 = new Date(); TextField.setText(date1.toString()); } } エラー文↓ package74/Kadai74.java:59: static でない メソッド setText(java.lang.String) を static コンテキストから参照することはできません。 TextField.setText(date1.toString());
969 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:59:38.12 ID:wNgJdiNd.net] >>961 誤) TextField.setText(date1.toString()); 正) t1.setText(date1.toString());
970 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:03:09.49 ID:UEki8ydx.net] どうすると959みたいな嘘つき&馬鹿が生まれるのか不思議でしょうがない
971 名前:デフォルトの名無しさん [2016/01/19(火) 21:08:01.56 ID:UvexcXui.net] >>962 ありがとうございます!!エラーがなくなりました! あと表示させたいのがクリックした時の時刻なんですがアドレス値が表示されてしまいます… どうすればよいでしょうか? 実行結果↓ package74.Date@7e6536b7
972 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:09:53.72 ID:wNgJdiNd.net] いや>>960 は正しいと思うけど俺は LinkedList はメモリフットプリントが若干大きくなるぶん 理論上の計算量が同じでも ArrayList より遅くなることが多い そして、LinkedList の ArrayList に対する利点は、イテレータ使って add, remove する時だけ stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist ここでも議論されてるが、LinkedList を使うのはかなり限られた特殊な状況ってので大体見解が一致してる 中には LinkedList は糞だから全部 ArrayList で良いって言ってる人もいる
973 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:15:53.20 ID:wNgJdiNd.net] >>964 いや、お前のコードコピペして、>>962 でレスしたとこ変えただけで普通に時刻表示されたけど 後、表示されてるのはアドレス値じゃなくてインスタンスのハッシュ値だろ多分 package74.Date って自分で Date クラス作ったのか?
974 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:31:17.06 ID:i1u/RpO5.net] >>965 メモリ使用量もそうだけどシーケンシャルアクセスでメモリアクセスが連続しないのがデカい 次の要素読むたびにキャッシュミスするクソみたいなデータ構造だ ArrayListが苦手とされる途中への挿入削除は配列のブロックコピー一発という低レベルな操作だから極めて最適化されてて遅くなりにくい
975 名前:957 mailto:sage [2016/01/19(火) 22:06:20.77 ID:zjEKWV3a.net] >>959 > いやリンクリストはaddやremoveも毎回線形走査が走るからArrayListより遥かに遅いよ そこはリンクですからね! 毎回線形捜査するけどアレですよ! 中身の再配置が無いから早いはず! https://ideone.com/RrkGX9 ちょっと計って比べてみた結果 …目が醒めました、はい >>967 なるほどなるほど
976 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:08:58.95 ID:SukeRrsX.net] >>945 C#も含め型推論のある言語だとその書き方はしないな まあ、ArrayListからLinkedListに変えたいってことが稀だからだろう…
977 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:22:58.61 ID:wNgJdiNd.net] >>969 IList と List の話じゃなく、 具象クラスの宣言時に型をインターフェースにするのはC#でもやるだろ普通に
978 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:34:17.01 ID:Xsa7QJ4A.net] イテレータ使わないならLinkedList使わないでいいよ
979 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:39:05.90 ID:SukeRrsX.net] >>970 この書き方の話だよ List<Integer> list = new ArrayList<>(); ローカル変数の宣言は全部varかval
980 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:56:19.26 ID:wNgJdiNd.net] > ローカル変数の宣言は全部varかval Java でもそうだけど、こういう書き方するのってローカル変数よりむしろフィールドだと思うが ローカル変数ならぶっちゃけなんでもいい
981 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:00:23.82 ID:+oDO5kZy.net] × リンクリスト ○ リンクドリスト ちゃんと覚えておけよ
982 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:03:38.55 ID:uG3ghRzi.net] × リンクドリスト ○ リンクトリスト ちゃんと覚えておけよ
983 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:14:22.73 ID:0SkMRgg2.net] お前の俺命名ルールを押しつけられても
984 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:14:55.92 ID:UTsS/Gix.net] 卑猥な単語に見えたのは俺だけで良い
985 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:21:22.54 ID:/jAqE9aQ.net] >>973 冗長だから普通は型推論使うよね。今回の話からはずれちゃうけど。
986 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:23:33.22 ID:3QI3P0j9.net] ID:vsW11Ok5がvarがないのが不便だねっていいたかっただけなら プログラムやる前にもうちょっと日本語の勉強した方がいい。
987 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:32:00.99 ID:0GsBasXl.net] 結局何の事なんか分からんかったな モヤモヤする
988 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:35:15.19 ID:/koko6uv.net] OOPの基礎知識の欠落と思われ インタフェースに対してプログラミングするという視点の不在と 変数を十分に小さいインタフェースで取り回すことの快適感の不在
989 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:36:06.97 ID:ztCI1EFa.net] 変な理解にもとづいて書いてあるものは、忘れたほうがいい
990 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 11:08:18.35 ID:tmIP8TZA.net] あとC#が〜C#が〜って押し付けする奴はもうC#だけやってろよ 他言語ではこうであるだからこっちでもこうするべきだなんて俺ルールと大差ないわ 郷に入れば郷に従っとけよ、ハゲ
991 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 16:25:40.16 ID:pKAGFZbJ.net] >>923 はそもそもキャストという用語を独自解釈してるからな 型変換とごっちゃになって覚えているか区別がついてないんだろうな https://msdn.microsoft.com/ja-jp/library/ms173105.aspx > 暗黙の型変換 : 変換はタイプ セーフであり、データが失われることはないため、 > 特別な構文は不要です。たとえば、小さい整数型から大きい整数型に変換したり、 > 派生クラスから基本クラスに変換したりする場合です。 > > 明示的な型変換 (キャスト) : 明示的な型変換にはキャスト演算子が必要です。 > キャストが必要になるのは、変換時に情報が失われる可能性があるとき、 > または他の理由により変換が成功しないときです。 > 典型的な例としては、精度の低い型または範囲の狭い型への数値変換や、 > 基本クラス インスタンスの派生クラスへの変換があります。
992 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 18:24:51.17 ID:6ONE7iN3.net] 一応暗黙的なキャストっていう用語も存在してないことはない https://msdn.microsoft.com/ja-jp/library/cc482668.aspx 普通はキャストって言われたら明示的な型変換だと思うけどな
993 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 18:42:00.22 ID:IhxMke/s.net] キャスコといえばゴルフ
994 名前:デフォルトの名無しさん [2016/01/20(水) 19:17:57.30 ID:6Nwq+BmN.net] アップキャストとかダウンキャストとかあるじゃん。 それとはまた別なの? アップキャストが暗黙と同義だよね。
995 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 19:59:09.19 ID:QPtcDW16.net] https://en.wikipedia.org/wiki/Type_conversion > In the C family of languages and ALGOL 68, the word cast typically refers > to an explicit type conversion (as opposed to an implicit conversion), Cの流れだと一般的にはこうだな まぁそれ知らない人にはどうしようもないのかもしれんが
996 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 21:36:39.80 ID:Ci1f4cma.net] アップキャストはオブジェクト指向の話で出てくる用語 オブジェクト指向をサポートする主要な言語(Java/C#/C++)の用語ではキャストと言ったら明示的変換 言語の文法の話なら間違いだが、そのコードで表現しようとしているものをオブジェクト指向として捉えた時の話であれば間違いではない
997 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:34:30.52 ID:odor4UVz.net] コンパネのJava開くとネットワーク設定があってプロキシ設定出来るけど、これって何で使われるの? ググッたら、Javaアプレットでネットワーク接続するときに使うみたいなんだけど、 これってJavaアプレットに限った話ってことで合ってる? Javaアプリケーションでネットワーク接続する場合は、Windowsのインターネットオプションで設定したプロキシが利用されるってことで良いのかな?
998 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:36:19.67 ID:wCHOY8+w.net] int と Integerって何が違うんですか
999 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:38:37.02 ID:ZWK/hjZG.net] >>979 全然違うと思うwww つかレスしてるやつらでも理解してないのが多いな がっかりだよ
1000 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:46:09.83 ID:88LciSZZ.net] >>992 C#スレ見たか?
1001 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:48:28.88 ID:HtrKLPks.net] Integerは(不変の)オブジェクト
1002 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:48:53.58 ID:ZWK/hjZG.net] >>993 関係ない そもそもなんでインターフェイスすんの?って質問が本質 この書き方でも馬鹿が使えば実行時エラーの元なんだけどな
1003 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:49:45.44 ID:ZWK/hjZG.net] 'に' が抜けてた
1004 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:50:42.77 ID:88LciSZZ.net] >>995 質問に対する返答になってない。やり直し。
1005 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:51:15.47 ID:HtrKLPks.net] 次スレ立てますね
1006 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:52:25.30 ID:HtrKLPks.net] 次スレ ★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1453305105/
1007 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:53:04.25 ID:ZWK/hjZG.net] >>999 乙
1008 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 02:11:23.15 ID:Ro+JnAfr.net] 1000
1009 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。
1010 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています