Java入門・初心者質問スレ Part.5©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>608
それは説明が面倒だからインナークラスになっているのかもしれない。 見やすさ考えたら別のクラスに分ける方がいいと思うんだけどね
入門書の違和感が凄いのは パッケージを使って複数の単純なjavaファイルを組み合わせろって言ってるのにも関わらず
実際にはインナー使いまくって
javaファイル1個で収めてしまってるっていうところかな
勉強にならないっていう コンパイルしたらクラスファイルがもりもりできてびっくりするやつ >>614
イベントハンドラ記述するのにインナークラス多用っつったら十中八九Androidでしょ TreeSetのソースコードを見てみましたが、Red Black Treeの実装はそこには含まれていませんでした。
たくさんのクラスやインターフェースが関係しているようで、全貌を理解するのは容易ではないみたいですね。
そこで質問なのですが、入門書を読み終わった後に、本格的に勉強するにはどの本を読めばいいのか
教えていただけないでしょうか。
本屋で見てみた結果、どうも日本語のJavaの本はやさしい入門書ばかりのようです。
Javaによるライブラリーの設計の仕方の本のようなものはないでしょうか? リスナーはインナーで当然としても、
各種機能は別クラスで書いて欲しいよ
実際には別クラスにする事が多いだろう
その為の教則本であり参考書なんだから頼む
それとも今はネイティブなんてどこも書かんのかね >>619
クラス分けでどう役割を分けるかとかならデザインパターンで、処理の効率とかメモリ消費とか言ってるんならアルゴリズムら辺じゃない? >>621
Javaのような広く使われている言語のライブラリーがどのようなものなのかを
理解したいです。
アルゴリズムとデータ構造の本のあるトピックを読んだ後に、実際に広く使われている
ライブラリーではどのように実装されているのかが知りたくなります。
細かいテクニックも使われていると思いますし、プログラミングの勉強にもなると思います。 >>619
入門書ちゃんと読んでればTreeSetはTreeMapを使ってるってわかるっしょ
TreeMapがRed Black Treeの実装だよ >>622
ありがとうございます。
TreeSetのソースコードを読んでみてあまりにも沢山のクラスやインターフェースが
からんでいるので、圧倒されてしまいました。
肝心のRed Black Treeの実装部分以外の部分がコードの行数の大半を占めている
というのに驚きました。
デザインパターンの本を読んでみようと思います。 >>624
ありがとうございます。
コアな部分を見つけるのですら大変な感じで、見つけられませんでした。 >>627
TreeSetはTreeMapに処理を委譲してるスカスカのクラスじゃん
見つけられないわけないだろ
たとえばTreeSetのaddメソッドを見ればこうなってるから
mがなんのオブジェクトか調べるだけっしょ
public boolean add(E e) {
return m.put(e, PRESENT)==null;
} そんな実装だったんか…w
共通ライブラリのくせにムダすぎんだろ 平衡二分木の赤黒木を図解している本は、あまりない。
川中真耶の本で、図解していたかも知れない
まず、AVL の図解で、木の回転・縮約などを勉強する。
それから赤黒木
AVL では、木の高さをそろえるため、最小最大の高さの差が、2になると、
木の回転・縮約をして、差を1以内に収束させる。
この処理が頻繁に入るため、赤黒木が考案された
赤黒木では、最小最大の高さが2倍になるまで、何もしない。
例えば、最小の高さが10、最大の高さが20になると、木の高さをそろえる
Linux で、数ミリ秒毎にプロセスを切り替える、プロセス実行ツリーは赤黒木。
プロセスをツリーに挿入し、実行されたら、ツリーから削除する
同じノードの挿入・削除が繰り返される場合に、
一々、木の高さをそろえないから、赤黒木は効率的 >Linux で、数ミリ秒毎にプロセスを切り替える
間違えた。もっと速い。
コンテキストスイッチは、1秒間に10万回だったな javafxのButtonでボタンの大きさ変えるには? >>633
scenebuilder使って大きさ変えれば分かるだろ Java始めるためにEclipseダウンロードしました
人気らしいんですが使ってる人いますか?
あと他の言語を使う場合Eclipse一つで賄えるのですか?
ここにいる人たちのおすすめ統合開発環境かエディタ教えてもらいたいです ほとんどの入門書がeclipse導入を前提にしていると思う
だから学習用途でならユーザー数は多いんでないかね >>635
何せ古いからねー
困ってもググればなんとかなるし、
よほど複雑な事しない限りはeclipseでいいと思うよ Vimでええやん
Eclipseは大した機能ないくせに動作が緩慢すぎてイライラする xyzzyにantでビルドするという時代もありました >>641
Kotlin用またはAndroid Studioのベース用
既存プロジェクトがIntelliJで動いてるとか職場になんでも知ってるIntelliJマイスターがいるとかでない限り新規で選ぶ積極的理由はない
加えて、きちんとしたプロジェクト方向性(と有償IDEに使えるお金)があるならAndroidスマホはC#&UnityでもC++でもいいからAndroid Studioの優位性は思ったほど高くない
IntelliJはいまが踏ん張りどころ >>642
なるほど
素直にEclipseにしとくのが良さそうですね Java使ってる人って何作ってるの?
ゲームで使うにしてもJavaダウンロードしなきゃ動かないんじゃないの?
てか同人ゲーの主な言語って何?C#?C++? >>644
サーバ用プログラムとAndroid用プログラムが一番多いんじゃないかな。
PCでクライアント用プログラムというのも業務用だとたまにある。
個人向けPC用だとやはり JavaVM インストールしなきゃいけなかったりするのがあってかあまりないように思う。
2chの専ブラにJavaで作ったやつがあったが、2chが接続に関して制限をした時に対応しなかったので
2ch用としては終わった(その他互換性のある掲示板には使えたが)。 >>644
>同人ゲーの主な言語
ツクール(RGSS) >>644
ゲーム製作はゲーム用ライブラリやゲームエンジンに強く依存する
むろん、言語から選んでOpenGLバインディングをゼロからごりごり書いてもいいが、それは言語の理解のためにゲームを利用してる状態で、あんまりゲーム製作とは言えない
(企業ならそうやって時間とコストかけて特定言語の自社製フレームワークを作ってもいいが、それは企業だから維持できることだ)
いまいちばん新しくて個人人気があるのがUnity+C#。PC/スマホの両対応。有料アセットストアのゲーム用リソース支援が強すぎる。おかねは正義
ゲーム用途ではJava+JavaライブラリはAndroidですら少数派だと思う(昔はこれしかなかったから今もこれで作ってる人は多いが)
もっとプログラミングレベルを下げたもの、つまりやれることが減ってるがその分作りやすいもの、となると各種ゲームエディタやツクールになる(スマホ向けはあまりうまくいってないようだ)
ゲーム製作プログラミング自体をしたいわけじゃない、ネタやリソースはすでに持っててありものに反映させたいだけ、という人が効率よく使う
ツクールツクール言って煽る人がいるが、そう馬鹿にしたものでもない。だって願望の実現効率がいいんだから そんな融通の利く奴がプログラマやってるわけ無いだろ 彼の言ってることを3行にまとめると
Unity3Dスキスキだいすきー
あれC#だ、Java使わない
金ないならツクールで作れ やっぱなんかソフトを思い描いて作りながら勉強するほうが効率的なのかなぁ
今スッキリ入門、実戦、SQLまで読んだ、というか何回も読んでる途中だけどソフト作れる気がしねぇ 最初から実用レベルのアプリを作るのは難しくて
小さいツールをたくさん作っていくうちに
パターンが分かってきて作れるようになっていく >>655
あんがいそうでもない
プログラミングの思考が好きでプログラミングをやっている、という向きもある >>656
文から察するに>>652はプログラミングやってないぞ プログラミングのお題スレでも見て作れそうなの作れば良いのではないかな この本で、オブジェクト指向を学んだら、
スッキリわかる Java入門 第2版、2014
その後、この2冊をこの順に読む。
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
これで基礎ができるから、パズルを解くか、ツールを作れる ・スッキリわかる Java入門 第2版、2014
これは読みました。
わかりやすさに感銘を受けました。
ところでこの2冊を読む意義はなんでしょうか?
言語としてのRubyとPythonには興味がない人でも読む価値はありますか?
・たのしいRuby 第5版、2016
・みんなのPython 第4版、2017 Ruby, Python は、シェルスクリプトの代わりになる。
OS のコマンドを実行できる。
その後に、PowerShell もやった方が良い
Vagrant, Chef も、Rubyだから、仮想OS, Linux で使える。
つまり、環境構築に強くなる
関数型言語の勉強にもなるから、Kotlin, JavaScript へ移行しやすい。
さらに、ツールも作りやすくて、パズルも解きやすい
ここまでが基礎で、その後に数言語を学ぶ Eclipseを使っていますが、タブキーを押すとスペースが4個入力されるようにするにはどうすればいいのでしょうか? >>655
作ってみたいプログラムならあるよ
データベースとウェブを組み合わせた何かを作ってみたい
具体的にはゲームのwikiページみたいなのとか
ネットによくある装備シュミレーターみたいなのとか
ネットショップとかの会員管理や取引決済管理みたいなのとか
ネトゲがどういう形でデータベースを使ってるのかわからないけどネトゲみたいな自由自在にデータベースの使う方法を知りたいとかもある
ただどれも今は雲をつかむような感じで出来る気がしねぇ
>>657
何書いていいかわからないんだから書けないよ
C言語から入って入力を求めて数学的処理をしてテキストに出力するようなプログラムは数個書いた
でもなんか思ってたのと違うと思ってJava勉強してるんだけどこっちでも何書いて良いかわかんない あとスッキリの例題なんかもやってるけどミナト君のRPGとかなんか書いててしょぼく感じるんだよなぁ・・・ >>668
俺もスッキリの問題解いてみたけど、問題を解くだけだとアルゴリズムを考える力が
あまり付かない感じがした。ああ、あくまでも入門書なんだなあって。
前AOJのサイトこのスレで勧められたんだけど、良かったらやってみたら?
本見てコード打つより考える力が付く気がする。 >>668
GUIがないからだろ
でもGUIは複雑で別物になるから
まずはCLIから始めるのが王道 息抜きにawtでもswingでも簡単なguiをつくればモチベには繋がると思う
自分の思い描いていたプログラミング感みたいな >>667
こんな感じのそれぞれのやり方を調べてやってみれば勉強にはなるんじゃない?
Springとライブラリ使った方が簡単だけど
1.JSONを解析して内容を返すクラスを作る
2.JSONをPOSTされたら内容に応じて特定の応答を返すWebアプリを作る
3.そのWebアプリをDB使うように変更する
4.ブラウザで見られるページを作る
5.WebページからJSONをPOSTできるようにする
6.レスポンスに応じてWebページを変えてみる java始めたきっかけは
仕事の効率化やったな
エクセル集計やpdf整理や雛形メール送信できたらなあってのがきっかけだった
目的があれば逆引きで勉強しながらトライアンドエラーの繰り返しですぐできるようになるよ まず本を読む
良いコードとは何かについて考える
考えをまとめたら実際に書いて確かめる
書くものは実用性のないサンプル用の課題でいい
例えば架空のオンラインショップなど
この思索の経験が実務で活きてくる
これをやらない奴のシステムはいつもめちゃくちゃ >>675
ちょっと違和感がある
目的に沿うのが良いコードだと思う
コードがきれいなのも使いやすさのうち 確かに寄せ集めだったり 動けばいいって感じだから最初は汚いなwww
でもまずは動くものを完成させるというのが大切よ
そこがスタートライン 1年前に自分が書いたソースはまるで他人が書いたソースだしなw ほんとここって質問に対してゴミみたいな返しばっかだなw
まぁここで質問する奴も馬鹿なんだが回答とは程遠い的外れレスしかなくて呆れるわ 座学と実技は交互にやるのがいいよ
飽きにくくなるし
Javaに限らず
なかなか座学に戻るきっかけがない
通勤中の読書とかいいね ゲーム作るなら正直C#のがいいの?
マイクラのMOD作りたかったらやっぱマイクラと同じJava使わないといけないの? modがjavaのクラスファイル読み込むならjavaで作るしかないだろ
バカかお前? サーブレットの勉強をしているのですが、web.xmlの仕様がよく分かりません。ググっても説明を羅列しているのが多く、具体的にどういう時に使用するのか理解できていません。
(Welcomefile、アノテーションで代替されたサーブレットのタグは除く)
なにかよい本かサイトはありますでしょうか GoFの入門にお勧めの本ありませんか
Java言語で学ぶデザインパターン入門は買って見たけど全然意味解りませんでした >>688
あれって、サンプルプログラムなかったっけ
ちゃんとプログラムを動作させてみた?
単にコピペするだけじゃなくて、多少アレンジしてどのような挙動をするのかの確認とかもしないとね Javaのfocusの使い方が分かりやすい本があれば教えて頂きたい(Swing)
トップコンテナをFlameとして
子コンテナをjpanel
孫コンポーネントをlabelとかtextとか
キーイベントで画像出すとか
簡単なもの作って見ようかとやってたんだけど focusの使い方がサッパリ分かりません
今持ってる入門書は明快入門javaですが
Guiについてはほとんど書かれてない
書店や図書館行って見てきたけども
これといってguiの本は無かったので
どのように勉強すればいいか
ご教授お願いします >>686
スッキリわかる サーブレット&JSP入門、2014
>>690
Javaで、GUI の本は無いね。
Kotlin で、Android とか、Web(HTML)とかかな? >>691
遅くなりましたがスッキリシリーズの本紹介ありがとうございます。
実は何年版かわかりませんが既に持っているのですが、2014版が詳しく載ってるんですかね
まずは持っている版を見なおしてみます セジウィックとウエインのcourseraのオンライン講義を聴講しています。
java.util.List
java.util.Stack
java.util.Queue
は最低だそうですね。
Best practices: Use our implementations of Stack, Queue, and Bag.
だそうです。 まあ誰も使ってなさそうなListIteratorとかgetがO(1)である保証がなかったりするのとかはクソだと思う zipファイル、7zファイルを読み込み、圧縮されているファイルを
ランダムアクセスで処理するプログラムを作ろうと思ってます
ファイルを実際に展開してそのファイルをランダムアクセスする、
ということになるのかなと思ってるのですが、一応、パスワード付きzipにも
対応する必要があって、例えばプログラムを強制終了したときに
パスワードを入れて展開した一時ファイルが残ると嫌だなあと思ってて、
メモリ上に展開し、メモリの内容をランダムアクセスして、ということが
できないかと思ってます
圧縮ファイルの内容をメモリ上に展開し、それをランダムアクセスする方法を
教えてください npm とかの、immutable.js が流行っているからかな? >>697
Ruby なら、IO の振りをする、StringIO というクラスがあるけど
つまり、メモリ内だけに存在する、単なるバッファ 質問です。
下記のコード(ブロンズの問題)の結果が、empNo : 0となる理由が分かりません。
https://ideone.com/PDvonb
どなたか回答お願いします。 >>701
スーパークラスのコンストラクタで0に初期化されてしまうからじゃない? インスタンスフィールドが初期化されるのはオブジェクトが作られたときでは
あるけれどもコンストラクタではないっすよ
なぜならばコンストラクタよりも先に実行される初期化ブロックで
すでに初期化された値を使用できるから
細かいようだけれども細かいことを問う試験なので用語は慎重に選んだがよいかと
>>701
0になる理由がわからないということだけれども
100になると思ったとするならば、クラスとオブジェクトの理解が不十分かと
クラスは設計図でオブジェクトはクラスをもとにメモリを確保したもの。
値を保持するのはオブジェクト。
Employee emp = new Employee();
Sales sal = new Sales();
これらの2つは別のオブジェクトなので
empに設定した値がsalに引き継がれるわけじゃないっすよ java10からはvarとかexprswitchとか大分モダンになりそうだな
特にvarは左辺にジェネリクス書く必要性で代入のコードが大分見苦しかったから嬉しいわ >>701
emp.empNo には 100 を代入してるけど sal.empNo には何も代入してないからだ。 javaがモダンになるならc#で良いよ
もうjavaに余計な仕様追加すんな Item が Generic Type Parameter のときに
new Item[n]
とするのが禁止されている理由は何ですか? >>710
Javaのジェネリクスは引数渡すときと戻り値受け取るときに暗黙的に片っ端からObjectからのダウンキャストを挿入しまくるだけ
当時のSunにはJVM弄る金がなくて、無理にC#に対抗しようとしてこんな手抜き実装になった
Javaのジェネリクスの不可解な制限は、「型パラメータの箇所は実際には全てObjectになる」と考えると理解できる ■ このスレッドは過去ログ倉庫に格納されています