Java入門・初心者質問スレ Part.6

■ このスレッドは過去ログ倉庫に格納されています
2017/12/21(木) 00:24:33.33ID:E/ADCCn6
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.5
http://mevius.2ch.net/test/read.cgi/tech/1506675205/
2018/01/30(火) 23:31:34.86ID:EiN0/dmo
>>620
壊れやすいコードしか書けないからそういうことになる
2018/01/31(水) 00:26:25.90ID:NyuJgB/8
目的地に辿り着くまでの交通手段の一つとしか思わなくなったな
適切な乗り物や経路を選ぶことこそが重要で面白い部分で、
小手先の運転技術に拘ってるうちは初心者だと思うわ
624デフォルトの名無しさん
垢版 |
2018/01/31(水) 01:26:23.94ID:Mw3vWzBx
旅は目的地に着くまでが楽しい。
2018/01/31(水) 07:51:57.75ID:ahOKCCp+
>>622
壊れにくいコードがこわされるんですよ。
強引にコードを改竄されちゃう。
2018/01/31(水) 09:34:02.62ID:eYm1W8Cx
>>623
A「このコースでこのタイム出た」
B「いやあのコースの方が早いし」

高確率で両者は平行線だな
2018/01/31(水) 09:43:29.85ID:8wMwJPdi
そもそも
可読性まで考えると下手にソフト側で工夫するより、強力なハードウェア一個入れる方がいいってのが現代だからな
628デフォルトの名無しさん
垢版 |
2018/01/31(水) 10:25:31.47ID:H6iQ2Lk/
>>627
それ何十年も前からそうだったように思う。
2018/01/31(水) 11:41:08.98ID:5zei4l0g
>>627
今だとクラウドのマネージドサービスもあるからな
ジョブのキューとかシコシコ自作する奴はもはや老害
2018/01/31(水) 13:24:27.52ID:and1GARu
すみませんガチの初心者なのですが、
これから勉強を始めるにあたって、おすすめの教本などありますでしょうか?
2018/01/31(水) 15:27:32.49ID:xdajApn4
>>630
月並みだけど、この本がいいと思う。優しく解説してある。

スッキリわかるJava入門 第2版
https://book.impress.co.jp/books/1113101090
2018/01/31(水) 16:53:10.44ID:qdw2fSIB
>>631
他所のスレでその本読んでる人が、本の通りと言って
ものすごく腐ったコードを貼っているので、
その本やばいんじゃないかと思う。
その人自身がすごいイカれているだけかもしれないけど。
2018/01/31(水) 17:03:08.02ID:7iY/Y9hN
スッキリわかるJava入門 第2版
販売開始日:2014/08/07

Java7の頃だよね。結構内容古いんじゃないの?
2018/01/31(水) 17:39:18.13ID:dXfiTOdy
>>632
分かってて書いてるんだろうけど、それこのスレでも暴れている
◆BrBq2CJg6HGdという頭のおかしい奴だから。
本は古いけどまともだよ。◆BrBq2CJg6HGdが勝手に間違って
解釈して暴れているだけ。
2018/01/31(水) 17:48:25.34ID:8wMwJPdi
そういやHeadFirstのJavaってどうなの?
デザパタ本は結構良かったけど
2018/01/31(水) 19:56:00.83ID:qDSztMHL
>>632
http://hissi.org/read.php/tech/20180131/eGRhakFwbjQ.html
2018/01/31(水) 20:28:44.72ID:UcwRCwK2
>>636
何このキチガイwww
2018/01/31(水) 20:56:55.80ID:G7vsPfpP
35歳寺バカスwww
639630
垢版 |
2018/01/31(水) 21:00:07.79ID:and1GARu
ありがとうございます。
今の仕事に加えて2本目の柱にすべく、いちから頑張ります。
(10年前にITにいたなんて言えない。。。)
2018/01/31(水) 21:06:37.27ID:AX72W1bb
>>609
その辺はVR用ゴーグルにセットして3Dで
2018/01/31(水) 23:00:20.88ID:JDsfhD7E
>>640
余計目が疲れるだろ
2018/01/31(水) 23:16:50.91ID:ah9e2u9N
まずこの本で、しっかりと、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014

その次に「たのしいRuby 第5版、2016」という道筋が、鉄板!
以後は、Python, JavaScript, C#, Kotlin など、お好きな言語へ進む

評論家・作家が集まって、数十冊のJavaの本を論じる座談会でも、
議論の半分以上を、スッキリ1冊で占めるというw
2018/02/01(木) 10:46:07.75ID:9QQG1u4s
新明解Javaは?
644630
垢版 |
2018/02/01(木) 12:56:12.87ID:8sYc2u5H
すみません最初でつまづいてます
Javaをインストールし、環境変数で
PATHにC:\Program Files\Java\jdk-9.0.4\binを追加したのですが、
CMDでJavacと入れても認識しません
設定がおかしいのでしょうか?
2018/02/01(木) 12:58:09.42ID:BE+0VHY8
そうでしょうね。
2018/02/01(木) 12:59:31.72ID:BE+0VHY8
>>642
議論になるということは、すっきりしていないってことではw
2018/02/01(木) 13:27:02.26ID:8sYc2u5H
すみません解決しました
お騒がせしました。。。
2018/02/01(木) 17:21:42.52ID:8zqI8Ogw
>>614
隠し事できない人なんだ
2018/02/01(木) 20:30:45.92ID:oxpJbmOB
??(´・ω・`)何か文句ある?
2018/02/02(金) 12:40:30.43ID:vZ7npXAS
>>644
どんな古い情報を見てやってるのかわからないけど、今はインストーラがやるからそんなパス指定する必要がないというか、やると更新の時に面倒だからやってはいけない
それ外してやったらどうなる?
651デフォルトの名無しさん
垢版 |
2018/02/02(金) 13:16:01.06ID:7Sd8400T
え?今はインストーラがやってくれるの?いつの間にそうなったんだ?
じゃあPATHに追加しといたやつ外すか。
2018/02/02(金) 14:10:13.76ID:jKEKNKAT
Java1.8.0_91はpath手入力必要だったぞ。
653デフォルトの名無しさん
垢版 |
2018/02/02(金) 14:30:41.89ID:s+WUZnzv
JREと勘違いしてんだろ。
2018/02/02(金) 16:53:37.95ID:KuhLinCY
感情の原因はそれを感じる者自身の固定観念・価値観・自己ルール
解釈の原因は情報発信者ではなく受信者。誤解の原因も解釈者
「言葉 風紀 世相の乱れ」はそう感じる人の心の乱れの自己投影
問題解決力の低い者ほど自己防衛の為に礼儀作法やマナーを要求する
憤怒は無知 無能の自己証明。中途半端な知識主ほど辛辣に批判する
論理的思考力の低い者ほどデマ宗教フェイク迷信に感化傾倒陶酔洗脳
史上最も売れているトンデモ本は聖書。神は人間の創造物
全ては必然。偶然 奇跡 理不尽 不条理は思考停止 視野狭窄の産物
人生存在現象に元々意味価値理由目的はない
「真実は一つ」は錯誤。執着する者ほど矛盾を体験(争い煩悩)する
宗教民族領土貧困は争いの原因ではなく「理由口実動機言訳切欠」
社会問題の根本原因は低水準教育。必要なのは適切十分な高度教育
体罰は指導力・問題解決力の乏しい教育素人の独善甘え怠慢責任転嫁
死刑は民度の低い排他的集団リンチ殺人。「死ねば償える」は偽善
核武装論は人間不信と劣等感に苛まれた臆病な外交素人の精神安定剤
投票率低下は社会成熟の結果。奇人変人の当選は議員数過多の徴候

感情自己責任論 〜学校では教えない合理主義哲学〜 m9`・ω・)
2018/02/03(土) 13:09:18.63ID:LDloXLSS
ArrayListはArrayList独自のメソッドを使わなければList型で宣言すべきとあったのですが、
LinkedListも同様にList型で宣言したほうが良いのでしょうか?
2018/02/03(土) 14:40:05.82ID:3WnFr6b6
Windowsコマンドプロンプトで実行させて文字列を表示する時に
奇数行と偶数行とで文字の色を変えたいのですがどうすればできるのでしょうか?
2018/02/03(土) 15:26:30.39ID:3WnFr6b6
比較文で==を=にしててもコンパイル通ってしまうために、たまに間違えたまま気づかないことあるんだけど
間違わないようにするライフハック的なものは何かないですか
658デフォルトの名無しさん
垢版 |
2018/02/03(土) 15:50:25.92ID:0PCikDkt
ヨーダ記法はどうなんすかね?
if (x = 0) 通っちゃう
if (0 = x) 通らない
2018/02/03(土) 15:56:11.82ID:ZHqj1jBJ
>>655
やめたほうがいい
LinkedListはgetがO(N)なので、不用意に混ぜるとパフォーマンス劣化の原因になる恐れがある
Javaのよく知られた設計上の欠陥だよ
2018/02/03(土) 15:56:26.08ID:3WnFr6b6
両方変数の場合はどうするのでしょうか?
2018/02/03(土) 15:59:56.33ID:I3vkx3c9
>>657
定数との比較だと、左辺を定数にしたりするけど、最近は嫌われる。
662デフォルトの名無しさん
垢版 |
2018/02/03(土) 16:25:54.75ID:hQBrYqp7
左辺w
2018/02/03(土) 16:31:05.72ID:hgzMgIyl
>>659
それは変だ、かってに混ざることはないよ
2018/02/03(土) 16:59:13.66ID:ZHqj1jBJ
>>663
混ぜたい(というか区別したくない)からListにするんだよ
常にこのコレクションの実体はLinkedListだと意識してるんならLinkedListのまま扱えばいい
その方がより「意図の伝わる」コードになる
2018/02/03(土) 17:42:09.54ID:VDv79Nx+
>>656
エスケープシーケンスを使うとできると思う(但しコマンドプロンプトの設定に左右される可能性はある)。
以下のページはC言語で作ったサンプルがあるが参考になると思う。
https://www.grapecity.com/tools/support/powernews/column/clang/047/page02.htm
2018/02/03(土) 18:31:16.63ID:RDoavzQ+
LinkedListの要素アクセスがO(N)なのはそういうデータ構造だから仕方ないんじゃないのか?
その代わり要素の挿入とか削除がArrayListより高速な利点があるわけだし用途によって向き不向きがあるだけ
2018/02/03(土) 18:36:59.57ID:T/IRCOLF
>>665
ありがとうございます
とりあえずやってみたらそのまま表示されただけだったので
面倒なので諦めます
668デフォルトの名無しさん
垢版 |
2018/02/03(土) 19:00:05.99ID:YCx21dTa
>>666
意図を明確にするためにListインターフェースを使うべきじゃないよね
2018/02/03(土) 19:06:33.31ID:LDloXLSS
>>655です
>>659 >>663 >>664 >>666 >>668
ありがとうございました。LinkedListはLinkedListということで
ListはΟ(1) でLinkedListはΟ(N) なので自分や他人が混乱しないためにもLinkedListのままで良いと・・・多分
2018/02/03(土) 19:08:07.71ID:uBCfwyBi
使うべきかどうかは文脈によるが、あえて一般化するならListインターフェースにすべき。
データ構造をどうすべきかは、インスタンス化のときだけは関心があるが、実際にアクセスしたり挿入したりするときに気にならないようにしておくのが抽象化という考え方。
2018/02/03(土) 19:10:55.15ID:uBCfwyBi
>>669
Listはインターフェースなので、計算量とかない。
そのロジックでLinkedListで宣言するならArrayListもArrayListと宣言すべき。
>>670にも書いたが、何を抽象化したいかはときと場合によるので、どっちがいいとか悪いとかない。
ただ、一貫性がないのは悪いと言えよう。
2018/02/03(土) 19:20:16.63ID:ZHqj1jBJ
>>671
それは極論
現実にはほとんど全てのケースにおいてリンクリストより配列ベースのリストの方がパフォーマンスやメモリ効率に優れているんだから、
リンクリストの存在なんか無視してListの実装は全てランダムアクセス可能であるという前提で作るのは実用的判断としては悪くない
.NETは現にそうなってるね
673デフォルトの名無しさん
垢版 |
2018/02/03(土) 20:51:19.18ID:YCx21dTa
>>671
抽象データ構造として計算量はあるべきだと思うよ
ArrayListはインデックスでアクセスするならArrayListを使うべきだよ
674デフォルトの名無しさん
垢版 |
2018/02/03(土) 20:52:59.73ID:YCx21dTa
JavaのListインターフェースはゴミと言っていいでしょう
675デフォルトの名無しさん
垢版 |
2018/02/03(土) 20:55:21.26ID:YCx21dTa
うそです、言い過ぎました本当にごめんなさい
676デフォルトの名無しさん
垢版 |
2018/02/03(土) 20:56:30.47ID:YCx21dTa
MapでさえもHashMapとTreeMapで計算量違うんで
Listインターフェースの実装によって計算量が違うのも
認めるべきだと思い直しました
677デフォルトの名無しさん
垢版 |
2018/02/03(土) 20:57:51.86ID:YCx21dTa
違うのか、ListインターフェースもMapインターフェースも
ゴミだという結論も出せるのか
678デフォルトの名無しさん
垢版 |
2018/02/03(土) 20:59:28.16ID:YCx21dTa
インターフェースは奥が深いということで
2018/02/03(土) 21:24:43.36ID:VDv79Nx+
>>667
変だなと思ってこちら(Windows10)でやってみたら確かにできなかった。
作ったプログラムはこんなやつだ。

public class EscSeq {
 public static void main(String[] args) {
  for (int i = 31; i <= 37; i++)
   System.out.println("\u001b[" + i + "mABC\u001b[0m");
 }
}

こういう出力になった。

[31mABC[0m
[32mABC[0m
[33mABC[0m
[34mABC[0m
[35mABC[0m
[36mABC[0m
[37mABC[0m

ところが実行時に以下のように Perl の何もしないプログラムにただ出力を渡してそのまま出力させてみたら色が付いて出た。

java EscSeq | perl -pe ""

この perl は Cygwin の perl だ。とすると Cygwin のライブラリが実行時に何かしているのかも知れない。
とすると同じことができれば Java でも同じようになるだろうとは思うが、今のところ俺にはやり方がわからない。
2018/02/03(土) 21:27:46.33ID:VDv79Nx+
>>667
もう一つ色を出す方法を発見。プログラムの出力をファイルにリダイレクトしてからそのファイルを type コマンドで出力したら色が出た。
とすると java コマンドが何か変なのかも知れないが、どういうことなのかよくわからないね。
2018/02/03(土) 22:04:14.38ID:Vrj5+lre
適切な抽象度合いは文脈によるって言ってんだろうが
なにがいいとか悪いとかない
2018/02/03(土) 22:05:12.43ID:hgzMgIyl
>>672
配列ベースは概念は簡単で便利だけれども、削除や挿入のコストは考えないといけないのではないでしょうか?
そういうときはリンクリストベースの方が適している
2018/02/03(土) 22:25:13.44ID:aUhNWyY8
>>682
いや、途中削除挿入が少々あったとしても配列リストのほうがほとんどの場合において速い
リンクリストってとんでもなくメモリ効率の悪いデータ構造なんだよ
2018/02/03(土) 22:38:51.39ID:aUhNWyY8
ついでに言っておくと、Listのaddやremoveを使ってLinkedListにインデックス指定して途中への挿入や削除をしたらO(N)だ
LinkedListのパフォーマンスの恩恵を受けるためには必ずListIteratorを使わなければならない
逆にArrayListでわざわざListIteratorを使う意味なんかないわけで、そういう点でも両者を一括りにして抽象化する意味はほとんどないのよ
685デフォルトの名無しさん
垢版 |
2018/02/03(土) 23:29:16.51ID:N6/Ci9xF
LinkedListはLinkedHashMapのためのクラス。
LinkedHashMapは、LRUとかでよく使う。
2018/02/03(土) 23:41:38.70ID:hgzMgIyl
>>683
配列ベースでの挿入や削除は、オブジェクトのコピーが延々と繰り返される点を考えれば、重大なコストですよ
単にコピーするだけならまだしも、コピーコンストラクタが働くことは、これは大きなコストだから、できるだけ避けないといけないのでは?
これは私が C++er だから考えてしまうことなのだろうか?

リンクリストでの挿入や削除では、コピーコンストラクタは働かない(既存のオブジェクトに手が加わらない)。
リンクリストの効率が悪い、というのは、リンクリストのメリットに触れない、一面的な意見に思えます
2018/02/03(土) 23:45:32.04ID:hgzMgIyl
>>684
>Listのaddやremoveを使ってLinkedListにインデックス指定して途中への挿入や削除をしたらO(N)だ

それはおかしい、抽象オブジェクトやインターフェースを介しているからといって、実装側の効率が極端に変わることはありえない
List がリンクリストな実体を指しているのなら、そのメソッドは、リンクリストの効率に従うはず
2018/02/04(日) 00:58:59.24ID:fXO59JwO
>>686
そうだけど Java の場合は参照だから C++ に置き換えて考えればポインタの配列になる。
だからコストは掛かるんだけど思ったほど遅い感じがしない。

それと実際の実装は一つ追加したら即配列全体を作り直すみたいになっておらず、
大きめに配列確保しておいてそれをオーバーするまでは同じ配列を使い続けて
その中でのコピーになるから要素数が少ないと気になるほど遅くならない。
2018/02/04(日) 01:45:48.83ID:0M2nQfAn
>>687
挿入や削除の前に、指定されたインデックスの位置までポインタを手繰らないといけないからね
getもそうだけど、Listインターフェースに宣言されているから実装せざるを得ないだけで
本来存在すべきではない操作だよ
690デフォルトの名無しさん
垢版 |
2018/02/04(日) 05:00:56.17ID:2KjySip0
>>685
いいこと言った
2018/02/04(日) 05:35:13.14ID:p5zvJFKF
>>689
>挿入や削除の前に、指定されたインデックスの位置までポインタを手繰らないといけないからね
なるほど
たしかに二分探索を実装する必要があるなら、それは配列ベースになるだろうね
2018/02/04(日) 08:42:48.25ID:jtpbEfK1
Javaで巨大なコレクションの途中に挿入するコストが気になるっていったいどんなプログラムなんだろう
2018/02/04(日) 09:30:01.09ID:p5zvJFKF
>>692
巨大なコレクションだからこそ、List の挿入削除の実装に気を使うべきなんですよ
1000件 2000件の小さなリストならどっちでもいい
2018/02/04(日) 09:39:06.01ID:jtpbEfK1
>>693
だからそんな巨大で変更可能なコレクションを使う場面ってどんな時なのかなって
2018/02/04(日) 10:47:54.78ID:mA+9NwN1
ないよ。
普通そこはクエリの調整のほうが効きやすいし分業しやすいから。
しかもそんな長大レコードの途中にオンメモリで値挿入とか狂気じみてる。
2018/02/04(日) 11:37:52.68ID:S3cdJ5Jy
百歩譲って巨大なコレクションの途中へ挿入する必要があったとして、
挿入位置が予め決まっていなければリンクリストのメリットはないわけだが(689の理由で)、そんな状況あるのか?
挿入位置までのリンクリストのシーケンシャルスキャンのコストが無視できるくらい沢山の要素をまとめて挿入するのだとしても、
その場合は配列でブロックコピーした方が速そうだな
2018/02/04(日) 11:50:08.04ID:S3cdJ5Jy
ソート済みの巨大なリスト同士をマージするときには使えるかな?
と思ったけど新しい配列リスト作ってそこに追加してった方が速いだろうな
インプレースで処理できるといっても、もともとリンクリストはメモリをバカ食いするから本末転倒だし
2018/02/04(日) 11:57:14.26ID:p5zvJFKF
>>695
オンメモリとは限らないのでは?
普通にリンクリストでデータ構造が実装されている例はいくらもあると思うよ、二分木、多分木になる場合や
順序関係・比較関数が単純でない場合は特に

まあ List でまとめる必要ははなからないことは自明だけれども
699デフォルトの名無しさん
垢版 |
2018/02/04(日) 12:07:50.83ID:GvS2o5m7
>>694
そこでLinkedHashMapですよ
2018/02/04(日) 16:04:57.04ID:fXO59JwO
ま、何億件とかデータが巨大なら最初からRDB等を使った方が何も考えずに済んで良いかもね。
まあでも巨大かどうかは動かすコンピュータのスペックによるか。億単位だろうが京単位だろうが
軽く動いてしまうマシンはあるだろうし。
701デフォルトの名無しさん
垢版 |
2018/02/04(日) 17:06:48.49ID:XK4swbja
Test
2018/02/05(月) 12:43:28.93ID:nOjIwE3H
メモリプールとかで使うのかも
2018/02/07(水) 09:40:42.83ID:3I7vHPZK
あー。あの大阪によくある。
2018/02/07(水) 12:31:35.21ID:3a579GGi
>>703
それはたこ焼き器やろ
2018/02/07(水) 12:45:24.93ID:2VYDCh9o
モータープール、大阪でしか言わないんだよなぁ
2018/02/07(水) 21:32:24.68ID:7uNcNN/X
月極グループ
2018/02/07(水) 21:45:44.89ID:E5jit1hv
げっきょくさんは手広いよな
708デフォルトの名無しさん
垢版 |
2018/02/07(水) 21:50:59.77ID:isOebZIS
>>707
「つきじめ」って読むだぞ知恵遅れ
709デフォルトの名無しさん
垢版 |
2018/02/08(木) 00:52:45.22ID:y8xXRvXM
じめ
2018/02/08(木) 02:00:47.83ID:AXKuy5Is
ぢめ
2018/02/08(木) 15:24:48.89ID:GGxSZy0h
「つきぎめ」だろって、つっこんだら負けなの?
2018/02/08(木) 15:38:26.75ID:4mknIqIx
>>711
はい残念!
2018/02/08(木) 16:13:58.48ID:l038yywz
>>707は(なぜか変換できない)ネタだろ
って突っ込んだらダメなん?
2018/02/08(木) 16:39:10.89ID:5B+1l88d
つきじめ
はともかくつきぎめってなんだよ
2018/02/09(金) 20:41:22.83ID:TxhNGHRH
月極の読み方とは? 「月極」を「げっきょく」と読む人多数!
大人になってから知った読み間違い&意味間違い
https://gakumado.mynavi.jp/freshers/articles/11122
2018/02/09(金) 20:51:00.52ID:KKlW8Jyu
くっだらねぇレスを何日も続けるんじゃねぇよゴミカスども
ほんとゴミみてぇな奴しかおらんな
717デフォルトの名無しさん
垢版 |
2018/02/09(金) 21:09:31.63ID:2uCfWfAn
過疎ってJavaの話題を誰も書かなかったからだよ。何かネタがあるなら君が書け。
例えプロでも初心者になり切って何か質問書いてみろ。お題でもいいぞ。
2018/02/09(金) 21:09:53.42ID:b+xlXmOU
ゴミしか使わない言語なんだからしょうがないだろ
719デフォルトの名無しさん
垢版 |
2018/02/09(金) 21:38:03.63ID:9EA5viw/
こりゃダメだ
C#に転向するわ
2018/02/09(金) 21:47:11.01ID:2u4zZUXa
>>719
言語としての将来性を考えるならそれがいいかもね
Javaを置き換える言語はあるがC#を置き換える言語はまだない
2018/02/09(金) 21:49:51.06ID:qrKjYlTm
>>719
kotrinじゃなくて?
722デフォルトの名無しさん
垢版 |
2018/02/09(金) 21:52:38.51ID:9EA5viw/
>>720>>721
ネットでちょこっと見たけど
C#って制御文とかクラスの使い方とかJavaとほぼ同じじゃね?
■ このスレッドは過去ログ倉庫に格納されています