Java入門・初心者質問スレ Part.5©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/29(金) 17:53:25.24ID:XnizQSCA
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.4
http://mevius.2ch.net/test/read.cgi/tech/1498828456/
2017/10/19(木) 12:11:01.39ID:gt24D1Vb
俺って大体そこらへんの能無しより2倍ぐらい仕事早いほうなんだけど
金融系の内部管理システムで1画面にボタンが20個ぐらいあって
段階的に5回ぐらい認証する機能で鬼のように状態持ってるから
設計書の相関チェックも凄いことになってて当然こんなレベルの機能だと
設計書にも不備ありまくりで実装してく度に何十回も設計者と確認しないといけないレベルで
外部結合で持ってくる情報も鬼の用にあるからSQLも100行超えるわ
外部ファイルも取り込んだりするわでエビデンスのページ数も余裕で100ページ越えるレベルで
これが最初テスト完了まで2週間ぐらいの線表で
毎日残業して1か月かけて作ったらプロパーが後ろで「こんだけ時間かけられるとは思わなかったわ」とか
嫌味言ってくるのが典型的な能無し無能システム会社なんだよな
2017/10/19(木) 12:22:12.67ID:gjuTpzaj
で?
174デフォルトの名無しさん
垢版 |
2017/10/19(木) 12:24:42.39ID:ScM6nrf0
そういう無理のあるものを断れない立場に居ること事態が既に能のある状態とは言えない
2017/10/19(木) 12:41:04.00ID:gt24D1Vb
過疎ってるから暇つぶしに書いただけだ
プログラムやらず嫌いのプロパーしかいない無能会社の中でも大ハズレの部類
当たりはバグ調査が全然できないプロパーがいるところのバグ調査担当
2017/10/19(木) 12:43:13.55ID:PZ5DzTeM
書かなくていいです
2017/10/19(木) 12:47:12.90ID:q54VEuRQ
JDK 8u151と8u152、2つ出てるけどどっちをインストールすればいいの?
178デフォルトの名無しさん
垢版 |
2017/10/19(木) 12:59:35.28ID:ymhc97rd
リリースノート。
2017/10/19(木) 14:39:13.91ID:wexIKijw
>>171
スクリプトでもバージョン管理してるから他で書いてやっぱりデプロイしてる
個人でも
180デフォルトの名無しさん
垢版 |
2017/10/19(木) 18:18:57.97ID:r3vXhCvd
ストリームバッファについて質問です。どれがいいのでしょうか?

FileInputStream fis=new FileInputStream("file");
0.
InputStreamReader r=new InputStreamReader(fis);
1.
InputStreamReader r=new InputStreamReader(new BufferedInputStream(fis));
2.
BufferedReader r=new BufferedReader(new InputStreamReader(fis));
3.
BufferedReader r=new BufferedReader(new InputStreamReader(new BufferedReader(fis)));

そもそもバッファの効果もよくわかってません
181デフォルトの名無しさん
垢版 |
2017/10/19(木) 18:21:13.65ID:r3vXhCvd
訂正
3.
BufferedReader r=new BufferedReader(new InputStreamReader(new BufferedInputStream(fis)));
2017/10/19(木) 21:44:03.04ID:dFFGzMdP
BufferedReader br = Files.newBufferedReader(path,charset)
183デフォルトの名無しさん
垢版 |
2017/10/20(金) 09:35:26.11ID:swuaN5aR
>>180
バッファがあると一回の読み書きに時間が掛かる機器の場合に効率が良くなって速度が上がる可能性がある。

例えばHDD。一回の読み書きが遅いのでまとめて読んだり書いたりした方が速度は上がる。
ということでファイル入出力にはバッファがあった方が良い。
184デフォルトの名無しさん
垢版 |
2017/10/20(金) 09:42:05.09ID:VprmOZRL
どのくらい早くなりますか?
2017/10/20(金) 10:04:52.52ID:D9t+ZWOa
その手の質問には「1万回繰り返すと2倍くらい違う」と答えることにしてる
186デフォルトの名無しさん
垢版 |
2017/10/20(金) 10:20:18.18ID:VprmOZRL
100回繰り返した場合はどうですか?
2017/10/20(金) 10:30:19.12ID:D9t+ZWOa
割合算でいいんじゃないの
つまり速い方に書き換えると「その部分だけが」2%くらい速い
そこの処理が0.03秒だった場合は処理速度が0.0294秒になって0.0006秒の改善になる

どっちかってと速度なんかじゃなくHDDとメモリ酷使するのを良しとするかどうかで動作決めていいよバッファ系は
188デフォルトの名無しさん
垢版 |
2017/10/20(金) 10:40:23.48ID:VprmOZRL
OSはバッファしないのですか?
2017/10/20(金) 12:01:07.16ID:PeRsjtc9
ググレカス
2017/10/20(金) 12:44:07.68ID:q2wuGssb
>>188
するよ
そこまで行ったならオブジェクト生成コストやGC負荷とアルゴリズム、加えて「コ ン パ イ ラ が 完 全 最 適 な オ ブ ジ ェ ク ト 構 成 に 置 き 換 え て く れ る」まで考えて、
結局は実際に計測して遅くなきゃいいや、人力脳内最適化は無意味でクソである、といういま一番トレンドな結論に至る
おめでとう
191デフォルトの名無しさん
垢版 |
2017/10/20(金) 12:44:37.57ID:Gvoola1V
ヨハン・セバスチャン
192デフォルトの名無しさん
垢版 |
2017/10/20(金) 13:02:09.19ID:PCOS2CdI
>>184
接続されてるHDDやプログラムがどのぐらい細切れにデータを読み書きするかで変わる。
ま、なんだったら自分でバッファありとなし作って試してみな。だいたいはバッファありの方が速くなる筈。

速度差が出ないとか、むしろ遅くなる場合はバッファの大きさがそのプログラムでの一度の読み書き量に対して適切ではないとか接続されているHDDに対して適切ではないのかも知れない。
あるいは最初から適切だったためにバッファありにしても殆ど変わらないかかな。固定長の大きな電文を自分で作ってその単位で読み書きする場合はその電文の塊がバッファみたいなものなので変化がないかも知れない。
2017/10/20(金) 14:59:15.51ID:vmKCrAVU
特定環境だけ意識するのか
194デフォルトの名無しさん
垢版 |
2017/10/20(金) 16:29:37.22ID:umJD7f7O
HDDはあまり関係ないような気がする。
195デフォルトの名無しさん
垢版 |
2017/10/20(金) 16:37:33.80ID:umJD7f7O
OSはほぼ確実にバファリンしてるのでHDDの読み書きではなく、システムを呼び出すオーバーヘッドで
変わるだけじゃないだろか。
196デフォルトの名無しさん
垢版 |
2017/10/20(金) 16:42:56.58ID:umJD7f7O
BufferedReaderを使うとシステム呼び出し回数が減らせるのでスレッドの切り替え確率が
減るという説明のほうが納得がいくような気がスルスル。
2017/10/20(金) 22:57:05.24ID:h7aVEIq7
OS・HDD は、バッファリングしてる

だから突然の電源断により、書き込まれない事があるため、
必ず正常にシステムを終了させること

普通OSは、5秒ごとに、HDDに書き込む

フラッシュメモリーには、書き込み回数の上限があるため、
SSD の書き込み回数が気になるなら、15秒ごとに書き込むように設定できる
198デフォルトの名無しさん
垢版 |
2017/10/21(土) 02:10:59.27ID:x42CzbVN
Javaの最大の欠点は100kbのデータを扱うプログラムにGBクラスのメモリーが必要になるような
効率の悪さ。
2017/10/21(土) 02:34:16.89ID:mk4nuw3r
?
2017/10/21(土) 02:58:50.47ID:g5bh72yL
https://i.imgur.com/ex4qwLj.jpg
大学の課題なんだが、for文のi<5のあとにlengthをつけなくてもこの課題は解決できるのかを教えてくれ。
2017/10/21(土) 03:49:35.47ID:W+SO0xqJ
>>198
どういう場合にそうなんの?
普通なら大丈夫なんじゃね
2017/10/21(土) 03:59:19.02ID:W+SO0xqJ
>>200
この問題
「am[0]」の使い方に違和感があるな

AMCounterクラスとか作って
カウントの責務を分離したい感じがする
2017/10/21(土) 04:08:37.48ID:g5bh72yL
>>202
3つ目のクラスを作るってことか?それはまだ習ってないからそうしないのかも。
204デフォルトの名無しさん
垢版 |
2017/10/21(土) 04:20:38.55ID:xu+p9cdr
>>202
ああ。違和感あるな。これダメな設計だよなあ?

am[0].countAutomobile() や am[0].countHeavy() でカウントした結果が出るということは
new Automobile() した時にコンストラクタで Automobile クラス内にある static のクラス変数の
カウントをしていて countAutomobile() や countHeavy() メソッドでそれを読み出すという
ことになるが、そんなクラスは一つのVMで同時に一つしか動かせない。複数のスレッドで
同時に使おうとすると意図した通りに動かない。Java のクラスとしてはなんだかとても
嫌なクラスだ。
205デフォルトの名無しさん
垢版 |
2017/10/21(土) 10:41:58.06ID:PVB7G2Ex
ハイエークラスに集計メソッドを持たせてはどうか。
206デフォルトの名無しさん
垢版 |
2017/10/21(土) 10:42:56.10ID:PVB7G2Ex
せっかくだからシークエルを渡せるようにしてはどうか。
2017/10/21(土) 14:19:09.90ID:L87nxTYD
>>200
可能

5台と固定だから付ける意味ないんじゃないかな
クラス変数の挙動を知る課題かな
その使い方や設計としては悪いが
2017/10/21(土) 15:37:16.16ID:ej0bNcSX
>>200
amもweightも同じ要素数だから5回繰り返せばぴったりじゃん
209デフォルトの名無しさん
垢版 |
2017/10/21(土) 15:47:20.68ID:PVB7G2Ex
ぴったりじゃん?
2017/10/21(土) 16:49:24.05ID:oMtVUNUR
何この糞問題wwwひっでぇな・・マジで
これ作ったの教員?生徒?
なんで配列の一要素でしかないクラスが配列全体の情報を持ってこれるんだよw
こんなレベルだと生徒もダメになるゴミ問題だな
2017/10/21(土) 16:53:51.90ID:oMtVUNUR
しかもこれで大学だからなwww
>200も相当な馬鹿っぽいし100%Fランだなw
2017/10/21(土) 16:58:21.30ID:oMtVUNUR
あーこれあれかw
最初から車の総数と大型車の台数わかってるから
countAutomobileとcountHeavyは5台と2台を直打ちで返すようにしてるだけなのかwww
中学校のマイコン倶楽部の問題かよwwwwwww
2017/10/21(土) 17:35:53.13ID:g5bh72yL
>200です。みんな色々とありがとう。まあFランなのは否定しないですw lengthなくてもいけるのはわかったのでもうちょい頑張ってみます
2017/10/21(土) 17:58:44.98ID:ZBz0JWdz
countAutomobile()やcountHeavy()は
コレクションクラスに持たせるのが普通でしょ
AMCounterクラス作って切り出すほどでもない
この規模ならHighwayクラスのメソッドでも十分

for文の中括弧省略はアンチパターン
あと大型車を数えるのにcountHeavy()という名前は不適切
2017/10/21(土) 18:16:41.12ID:g5bh72yL
>>214
まあ一応課題に沿って作成しないといけないんで与えられたクラス内でやるしかないみたいです。ご指摘ありがとうございます。
2017/10/21(土) 18:22:53.02ID:W+SO0xqJ
>>204
その通りだね
課題の範囲だとstatic使うくらいしかないよな

>>205
それもアリだと思う
countメソッドはAutomobileよりかは
Highwayが持つ方が自然

ただ何を作るかにもよるけど
Highwayが将来的に肥大化しそうだから
Counterクラスに切り出す場合もありそう
2017/10/21(土) 18:27:25.26ID:W+SO0xqJ
>>214
コレクションクラスでもいいというか
課題だとそっちの方がいいね

ただ課題のはサンプルコードで超小規模だけど
実用的なプログラムだと
カウントの仕方が多種類で複雑になるから
2017/10/21(土) 18:28:53.58ID:CGeTMVG8
俺様が素晴らしい解答を用意してやったぞ
但し実行結果は見てない

class Automobile {
private static AtomicInteger count = new AtomicInteger();

private static AtomicInteger weight = new AtomicInteger();

public Automobile(int weight) {
this.weight.addAndGet(weight);
}

public int countAutomobile() {
return count.incrementAndGet();
}

public int countHeavy() {
return this.weight.get();
}
}
2017/10/21(土) 18:37:22.59ID:CGeTMVG8
よく考えたらincrementAndGetはコンストラクタでやるしかねえな
オブジェクト作る意味無いコード書いたの初めてだから中途半端なコードになっちまった
2017/10/21(土) 18:42:09.63ID:oMtVUNUR
ダメだ・・このあまりに低レベルな流れ見てると吐き気がしてくる・・
問題の質があまりに低レベルなの見れば設計とかそういう以前の問題で真面目に考える余地なんかないのに
staticだのコレクションだの将来性だのアホか・・
2017/10/21(土) 19:10:52.71ID:3cF6dV6+
>>220
だったら参加しなきゃいいのに
この話題が何日も続くわけじゃあるまいし
2017/10/21(土) 19:17:48.71ID:L87nxTYD
スレタイ読めない奴は国語の勉強から初めた方がいいと思うの
223デフォルトの名無しさん
垢版 |
2017/10/21(土) 20:07:37.18ID:mG9cdR79
国語よりJavaのほうが必修だろ。
2017/10/22(日) 09:20:00.50ID:TMuVy25k
>>220
高レベルなレス期待してるわ
2017/10/22(日) 10:10:46.11ID:kBkM80le
>>220
初心者スレに何を求めてるの?
2017/10/22(日) 12:27:36.98ID:/zkBCLsm
初心者どうこういう以前にお前等のその解釈って無駄というか”無意味”なんだよね
問題文がインスタンス作りましょうとかっていうレベルのものなのに
問題に書かれない範疇のことまで勝手に想像を膨らませてあーだこーだ考えて
逆に質問者を混乱させ、陥れる無能の典型というか馬鹿の代表というか
なんだろうねこのド素人特有の客観的に問題点とそれに対する回答を指摘できない低知能ぶりは
2017/10/22(日) 12:33:56.55ID:dJ6mfyJW
いや学校の課題の質問だったから
わざとやってんだよ……
2017/10/22(日) 12:57:00.14ID:87G6xIOf
>>198
普通のパソコンが512mbくらいしか積んでなかったときからjavaは動いていたと思うが・・・

お前はどの世界線から来たんだ?

それとも、ただのうすら馬鹿か?
229名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 13:31:52.16ID:hgYX0k8x
>>228
昔のjava重かっただろ
2017/10/22(日) 13:51:31.80ID:xuXRPzMa
ただの口の悪いだけの奴だから気にするな
2017/10/22(日) 13:57:03.56ID:87G6xIOf
嘘を放置するのはよくないと思わんの?
2017/10/22(日) 14:05:17.09ID:xuXRPzMa
仮にまともなこと言っていても口が悪い奴の相手するのは時間も精神的にも無駄
2017/10/22(日) 14:32:44.32ID:87G6xIOf
嘘つきがチヤホヤされるべきだとでも言うんかね
このバカは

つか、お前がうすら馬鹿かよwww
2017/10/22(日) 14:33:57.23ID:87G6xIOf
あ、うすら馬鹿に話しかけられると鬱陶しいから、消えてくれよな

頼むわw
2017/10/22(日) 14:40:05.22ID:Nwk+EhzR
>>226
>>210-212のレスも無意味やで
自分のやることには意味があると信じたいんだろうけど、もう少し客観的になろう
2017/10/22(日) 14:50:54.26ID:dJ6mfyJW
>>235
そうそう
空気読めないだけ
2017/10/22(日) 16:33:04.80ID:ACH5Qj3i
なんかさぁ
俺はjavaを勉強してるつもりだったのに気づいたらSQLやHTML/CSSの本を読んでるんだが間違ってないよな・・・?
2017/10/22(日) 16:45:56.69ID:kBkM80le
バカがたむろってる所でしか粋がれないやつなんだからほっといてやれよ
2017/10/22(日) 18:06:04.46ID:TMuVy25k
>>226
そういうのは回答を指摘してから言え
2017/10/22(日) 18:17:46.07ID:/zkBCLsm
入門書未満のくだらない質問の回答はお前等馬鹿の担当だけど
それですらまともにできないから呆れるわ
いつ見てもアホしかいない
2017/10/22(日) 18:20:42.92ID:kBkM80le
>>240
じゃあお前は何でここにいるの?
2017/10/22(日) 18:29:26.25ID:cbaZLKfH
>>237
CLI、GUIアプリ系の本を選べばだいたいJavaで完結する
あとは隠蔽するようなフレームワークとか使えば、とりあえずは知らなくてもできる
2017/10/22(日) 19:11:00.87ID:xuXRPzMa
>>237
web系なら他言語行ってもつぶし効くから損はないと思う
244名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 19:31:25.01ID:AUtmH3Uy
>>237
いいじゃん。全部覚えろよ。
2017/10/22(日) 20:21:51.73ID:8vyNBiTj
>>221
初心者スレに必ず湧く奴だよ。
2017/10/22(日) 22:19:13.28ID:2tnXS/Sc
gradleの使い方って覚えといて損はない?
2017/10/23(月) 00:52:06.58ID:Zv+DKPlp
>200です。もう無理だw大学で配られた資料だけじゃだめだ、理解が追いつかない。本とか買わないとまずいかな。まあ勉強不足なのはわかってるんだがやっぱ無理なもんは無理だ。誰か教えて…
2017/10/23(月) 01:05:36.93ID:u5IDZl2p
>>247
実現するならstatic変数を作ってコンストラクタでインクリメントするだけ

staticを解説するためだけのアンチパターンな設計だから深く考えたらだめなやつ
2017/10/23(月) 01:06:44.62ID:y4/LHG7i
>>247
とりあえず何がわかんないのか箇条書きで書いて見なよ
親切なおじさんと不親切なおじさんがレスするから
2017/10/23(月) 01:14:38.16ID:Zv+DKPlp
>>249
まず、合計台数だけを出力するプログラミングを作ろうと思ったんですけど、
整数型配列の初期化とかはあってるはずなんだけど、Automobileクラスでint countAutomobile(){(←コンストラクタ?)内で何を打てばいいのかわからないです。ただ、return weightだと配列の1つ目の値だけが出力されますので。
https://i.imgur.com/APIeS93.jpg
2017/10/23(月) 01:16:06.32ID:Zv+DKPlp
>>249
もちろん課題の内容としてはさらに大型車の台数も出力しないといけないんですけど、まず簡単なとこからと思って合計台数だけをやり始めたらそこすらできない次第です。
2017/10/23(月) 01:17:56.31ID:Zv+DKPlp
>>250
コンストラクタじゃなくて、インスタンスフィールド?適当なこと言ってすみません…
2017/10/23(月) 01:23:14.60ID:y4/LHG7i
>>250
なるほど、それほど筋悪く無いと思うよ

他の人がいろいろ書いてるように1台の車を表現してるAutomobileクラスのインスタンスが
全部で何台あるのかを把握してること自体がおかしい、つまり課題のコードのほうがおかしい

だからそこは分からないほうが普通というか
100人いたら100人ともam[0].countAutomobile()とは書かないから
他のやり方したらいいんでないの?
2017/10/23(月) 01:29:14.79ID:u5IDZl2p
Automobile(int g)がコンストラクタだよ
int weight → static int weight って変えてみたらわかると思う
253が言うように筋はいいと思う

>>253
残念ながら課題として出てるのでこれに回答せねばならないんだよ
とてつもなく不服だがな
2017/10/23(月) 01:29:54.34ID:Zv+DKPlp
>>253
課題がおかしいんですかね…どこか一部を直せばいいんでしょうか?それか他の意見でもあったように新しいクラスを作るべきなのでしょうか?たびたびすみません。
2017/10/23(月) 01:33:18.03ID:Zv+DKPlp
>>254
そちらがコンストラクタでしたか、ご指摘ありがとうごさいます。
2017/10/23(月) 01:38:13.20ID:y4/LHG7i
>>255
HighwayクラスにcountAutomobile()やcountHeavy()を作って上げるのが一番簡単

どうしても課題のコードに従ってやるならAutomobileクラスに
クラスレベルの変数として台数合計を管理するものを用意する
2017/10/23(月) 01:55:19.63ID:Zv+DKPlp
>>257
前者の方法についてもう少し詳しく教えていただけませんか?自分の解釈ではまずHighwayクラス内にint countAutomobile()と int countheavy()をつくる。
2017/10/23(月) 01:55:42.85ID:Zv+DKPlp
>>257
countAutomobileに関してはreturn weightで返して、heavyに関してはif文で大型車の時だけreturn で返せる。と考えたのですが、あってますでしょうか?無知ですみません
2017/10/23(月) 01:57:12.01ID:u5IDZl2p
int weight → static int weight って変えてみたらわかると思う
2017/10/23(月) 02:00:11.05ID:Zv+DKPlp
>>260
先ほどの画像にstaticを足してみたところ5つ目の配列の要素が表示されたのですが、どこがおかしいんですかね?
2017/10/23(月) 02:01:39.23ID:Zv+DKPlp
>>261
配列の5つ目と言ったほうが正しいでしょうか
2017/10/23(月) 02:05:09.61ID:u5IDZl2p
>>261
8って出たならあってるよ
出力してるところでは1番目を指定してるのに5番目が出たってところが大事
2017/10/23(月) 02:06:00.66ID:yUlbauj/
またアホどもが初心者を混乱させてるwww
問題が糞で最初から台数わかってんだから台数はハードコーディングングでそのまま返せばいいんだよ
なんでsataticにすんだよ阿呆
2017/10/23(月) 02:07:20.46ID:Zv+DKPlp
>>263
まだ途中の段階ってことですか?結果は8と表示されました。
2017/10/23(月) 02:07:26.45ID:u5IDZl2p
>>264
ちげぇねぇwww
その発想はなかったわ
2017/10/23(月) 02:11:15.70ID:u5IDZl2p
>>265
まだまだ途中
そもそも台数を出すのであれば重さを設定する必要はない
static int weight → static int weight=0 って変えて
weight=g → weight++ って変えてみな
2017/10/23(月) 02:20:42.33ID:Zv+DKPlp
>>267
言われた通りやってみたのですが、コンパイルでエラーが出てしまいました。int countAutomobile()の()内のintを消したのがまずかったでしょうか?
https://i.imgur.com/ULVykxO.jpg
2017/10/23(月) 02:21:38.59ID:y4/LHG7i
>>259
Automobileの配列使わないと
2017/10/23(月) 02:23:07.33ID:T8WMGQAM
>>268
yes
int gは消さずにそのまま
後で必要になるからね
2017/10/23(月) 02:24:18.98ID:Zv+DKPlp
>>270
いけました!まあこれもまだ途中だと思うと…
しっかり5台と表示されました!
2017/10/23(月) 02:28:32.08ID:c0Vu/KQR
>>271
ok
じゃあ次は
weight++ → if(11<=g) weight++ って変えてみな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況