Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.6
http://mevius.2ch.net/test/read.cgi/tech/1513783473/
探検
Java入門・初心者質問スレ Part.7
■ このスレッドは過去ログ倉庫に格納されています
2018/01/10(水) 11:06:04.02ID:ijSgjgrG
357デフォルトの名無しさん
2018/04/18(水) 16:04:40.45ID:AEcEsWpP お前らって断片的な回答ばっかで質問者が求めてる根本的な回答を全くできないよね
358デフォルトの名無しさん
2018/04/18(水) 16:24:51.29ID:q6pXgTbr359デフォルトの名無しさん
2018/04/18(水) 17:57:52.91ID:HOJmEonZ >>358
そう。しかし普通はmainの中から他のメソッドを使うように書いてあるのでそこでそちらに処理が移って終わったら帰ってくるという形式になる。
そう。しかし普通はmainの中から他のメソッドを使うように書いてあるのでそこでそちらに処理が移って終わったら帰ってくるという形式になる。
360デフォルトの名無しさん
2018/04/18(水) 19:34:08.75ID:1MQV5vND こうやってひとつの関数に全部書いた方がわかりやすいって奴が育っていくんだな
361デフォルトの名無しさん
2018/04/18(水) 20:15:05.19ID:La1cFYoE >>358
mainは書かずにJUnitのようなテストランナーで実行した方がいい
その方がクラスをコンポーネントとして捉える感覚が身に付く
mainを基準にすると処理を連続した手続きとして捉える考え方が染みついてしまう
仕事でプログラミングする場合もmainを書くことは殆どない
mainは書かずにJUnitのようなテストランナーで実行した方がいい
その方がクラスをコンポーネントとして捉える感覚が身に付く
mainを基準にすると処理を連続した手続きとして捉える考え方が染みついてしまう
仕事でプログラミングする場合もmainを書くことは殆どない
362デフォルトの名無しさん
2018/04/18(水) 20:40:56.23ID:AEcEsWpP お前らのアドバイスって段階がおかしいんだよね
初心者に対してそういうのってアドバイスになってないどころか悪手中の悪手なんだわ
物事には学習する順序ってもんがある
総じてレベルが低い
初心者に対してそういうのってアドバイスになってないどころか悪手中の悪手なんだわ
物事には学習する順序ってもんがある
総じてレベルが低い
363デフォルトの名無しさん
2018/04/18(水) 20:47:37.52ID:DGBedneT そう?
364デフォルトの名無しさん
2018/04/18(水) 20:48:23.55ID:DGBedneT >>362
お手本を見せてくれ。
お手本を見せてくれ。
365デフォルトの名無しさん
2018/04/18(水) 20:54:21.02ID:EvWKjHxH ID:AEcEsWpP先生が、レベルの高い返事の見本を書いてくれればいいよ
そしたらテンプレにするから
そしたらテンプレにするから
366デフォルトの名無しさん
2018/04/18(水) 21:08:08.83ID:UGx4xvOk + +
∧_∧ +
(0゜・∀・) ワクワクテカテカ
(0゜∪ ∪ +
と__)__) +
∧_∧ +
(0゜・∀・) ワクワクテカテカ
(0゜∪ ∪ +
と__)__) +
367デフォルトの名無しさん
2018/04/18(水) 21:31:40.64ID:mEUoKwFS >>358
main も printThreeValues も単に定義してるだけでしょ?
定義してるだけなので、呼び出されない限り実行されない。
だが main は呼び出される。これが main の特殊性。
main が呼び出されたので、その記述に従って printThreeValues が呼び出される。
main の中身がカラなら printThreeValues は呼ばれない。
main も printThreeValues も単に定義してるだけでしょ?
定義してるだけなので、呼び出されない限り実行されない。
だが main は呼び出される。これが main の特殊性。
main が呼び出されたので、その記述に従って printThreeValues が呼び出される。
main の中身がカラなら printThreeValues は呼ばれない。
368デフォルトの名無しさん
2018/04/19(木) 12:38:13.50ID:zY/x8X7C 継承とかでもここ呼んだらsuper通ってこっち行って…とか言ってるやついるよな
定義に従って完成されたものがメモリ上にロードされてるイメージだろ
んーちょうどいい言葉ではないな
定義に従って完成されたものがメモリ上にロードされてるイメージだろ
んーちょうどいい言葉ではないな
370デフォルトの名無しさん
2018/04/20(金) 00:49:16.60ID:K+iBTFnO 言ってることが意味不明すぎて1_も理解できないのでスルー
371345
2018/04/20(金) 01:59:16.14ID:KttnuZKi すいませんでした
JDKでpackageを使う方法は、出来なくても仕事とかで問題無いでしょうか?
JDKでpackageを使う方法は、出来なくても仕事とかで問題無いでしょうか?
372デフォルトの名無しさん
2018/04/20(金) 02:29:27.65ID:8BwjvaFI373345
2018/04/20(金) 02:37:41.72ID:KttnuZKi374デフォルトの名無しさん
2018/04/20(金) 13:10:09.62ID:8BwjvaFI >>373
ファイルが1000個とか煩雑過ぎるだろ
ファイルが1000個とか煩雑過ぎるだろ
375デフォルトの名無しさん
2018/04/20(金) 15:16:16.19ID:bJgJ2nSn 多分話が噛み合ってない
376デフォルトの名無しさん
2018/04/20(金) 15:59:16.02ID:5NB8H1Vn >>373
packageの構成も含めて設計だから、できるようにならないとね
packageの構成も含めて設計だから、できるようにならないとね
377デフォルトの名無しさん
2018/04/20(金) 16:30:35.14ID:bJgJ2nSn 手作りする意味は皆無だけどな
378デフォルトの名無しさん
2018/04/20(金) 21:10:35.11ID:qDS4Ifrc Kotlin は同じディレクトリに全ソースぶち込んでパッケージ違ってても問題ないんだよね。
やっぱ不便だから改良したってことなんだろうな。
やっぱ不便だから改良したってことなんだろうな。
379デフォルトの名無しさん
2018/04/20(金) 23:24:08.50ID:K+iBTFnO JavaアンチもそうだけどJavaスレでいつもkotlinガーkotlinガーって言ってる奴って何なんだろうね
380デフォルトの名無しさん
2018/04/20(金) 23:57:34.11ID:NIkAJy/D 俺、出来るよ。
あピってるんだよw
あピってるんだよw
381デフォルトの名無しさん
2018/04/21(土) 00:31:53.95ID:Oxipuy33 >>379
布教活動
布教活動
383デフォルトの名無しさん
2018/04/21(土) 13:04:10.38ID:O/LyWgef スーパクラスのメソッドをオーバライドする時に
アクセス修飾子の公開範囲を狭めることができないのは何で?
アクセス修飾子の公開範囲を狭めることができないのは何で?
384デフォルトの名無しさん
2018/04/21(土) 13:24:22.24ID:deWsZ6vs スーパークラスにキャストしたらメソッド使えちゃうガバガバ仕様になる。
もしくはほぼ全てのメソッド呼び出しで継承先で公開範囲が狭められたインスタンス使ってる可能性があるので
コンパイル時(Javaの場合はクラスロード時)でなくメソッド呼び出し実行時に毎回アクセス範囲チェックが必要になる。
当然実行速度は遅くなる。
どっちにしろアホすぎるので普通はやらない
もしくはほぼ全てのメソッド呼び出しで継承先で公開範囲が狭められたインスタンス使ってる可能性があるので
コンパイル時(Javaの場合はクラスロード時)でなくメソッド呼び出し実行時に毎回アクセス範囲チェックが必要になる。
当然実行速度は遅くなる。
どっちにしろアホすぎるので普通はやらない
385デフォルトの名無しさん
2018/04/21(土) 16:40:35.81ID:/j4q6H3B386デフォルトの名無しさん
2018/04/21(土) 21:58:22.29ID:7eG7nCds >>383
is-a関係の基本
スーパークラスのメソッドをサブクラスに対しても同じように呼び出せなきゃポリモーフィズムできないじゃん
例えば、Objectクラスのサブクラスは必ずtoStringメソッドを持つはずなのに、いざ呼び出したらprivateになってて
呼び出せませんでしたってことが起こってしまう
is-a関係の基本
スーパークラスのメソッドをサブクラスに対しても同じように呼び出せなきゃポリモーフィズムできないじゃん
例えば、Objectクラスのサブクラスは必ずtoStringメソッドを持つはずなのに、いざ呼び出したらprivateになってて
呼び出せませんでしたってことが起こってしまう
387デフォルトの名無しさん
2018/04/24(火) 00:20:30.16ID:3Pw6zIwf388デフォルトの名無しさん
2018/04/24(火) 00:57:13.36ID:dNZ0kff2 getPrice()をオーバーライドするなら、ちゃんとthrowsも付けろよ、って書いてあるまんまじゃね?
389デフォルトの名無しさん
2018/04/24(火) 02:53:39.07ID:swLaOBA7 >>387
Javaはチェック例外のハンドリングコードがないと構文違反という仕様だから。
Javaはチェック例外のハンドリングコードがないと構文違反という仕様だから。
390デフォルトの名無しさん
2018/04/24(火) 04:26:57.89ID:PQebw9pG 質問です
インターフェースはObjectクラスを継承しておらず、何らかのクラスに実装した時に
Objectクラスを継承する、という理解で合ってるんですよね?
インターフェースはObjectクラスを継承しておらず、何らかのクラスに実装した時に
Objectクラスを継承する、という理解で合ってるんですよね?
391デフォルトの名無しさん
2018/04/24(火) 08:28:13.84ID:zK8TVl/a >>390
違います
違います
392デフォルトの名無しさん
2018/04/24(火) 09:06:54.35ID:hoPd7aBI >>390
どんなクラス作っても必ずObjectは継承されている。interfaceは無関係。
どんなクラス作っても必ずObjectは継承されている。interfaceは無関係。
393デフォルトの名無しさん
2018/04/24(火) 16:11:36.60ID:wVocooKs394デフォルトの名無しさん
2018/04/24(火) 16:31:00.91ID:1D4v+3Mx 非同期は処理中でも、画面が固まらない
395デフォルトの名無しさん
2018/04/24(火) 17:00:45.22ID:wVocooKs 同期処理だとUIスレッドまで止めるのかな?
処理の終了を待ちたいけど出来るだけ軽くしたいのならPromiseを使うのが良さそうね、ありがとう。
処理の終了を待ちたいけど出来るだけ軽くしたいのならPromiseを使うのが良さそうね、ありがとう。
397デフォルトの名無しさん
2018/04/25(水) 16:22:50.98ID:fwgr11+u https://pastebin.com/hm55QbiV
上のコードの4行目で、throws IOExceptionという記述が無いと
コンパイルエラーになるのですが、
それはException系の例外が発生する可能性がある命令を呼ぶ場合、
例外処理をすることが課せられるからですか?
上のコードの4行目で、throws IOExceptionという記述が無いと
コンパイルエラーになるのですが、
それはException系の例外が発生する可能性がある命令を呼ぶ場合、
例外処理をすることが課せられるからですか?
398デフォルトの名無しさん
2018/04/25(水) 17:26:52.29ID:2C7nhQLD 例外処理しなかったら投げた例外はどこいくんだよ
宇宙の果てにでも飛んでくのか?
宇宙の果てにでも飛んでくのか?
399デフォルトの名無しさん
2018/04/25(水) 17:31:33.29ID:Arb+HwkF >>398
スタートアップが処理するのでは?
スタートアップが処理するのでは?
400デフォルトの名無しさん
2018/04/25(水) 17:34:11.55ID:vN7xx/wG 人気グループ「TOKIO」の山口達也メンバーが、自宅マンションの部屋で女子高校生に無理やりキスをするなどの行為をしたとして、警視庁は強制わいせつの疑いで書類送検しました。
全文は以下
https://www3.nhk.or.jp/news/html/20180425/k10011417181000.html
全文は以下
https://www3.nhk.or.jp/news/html/20180425/k10011417181000.html
401デフォルトの名無しさん
2018/04/25(水) 18:42:45.48ID:F5XB7b+1 >>398
そう。そしてブラックホールに飲み込まれる。
そう。そしてブラックホールに飲み込まれる。
402デフォルトの名無しさん
2018/04/25(水) 18:54:49.29ID:F5XB7b+1404デフォルトの名無しさん
2018/04/25(水) 20:44:16.06ID:3+niHUT+ 【マイトLーヤとPS4】 FFとDQの最新作、VR開発は危険、プレーヤーの日常感覚を損なうおそれ
http://rosie.5ch.net/test/read.cgi/liveplus/1524621704/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1524621704/l50
405デフォルトの名無しさん
2018/04/25(水) 23:17:47.60ID:2C7nhQLD 内容が陳腐で今まで読んでなかったスッキリ入門実践編を
この前ウンコしながら読んでたんだけど
listのremoveって内部でobjectのequal読んでるって初めて知ったわ
仕事でremove使ってるときに何かうまく削除できねーなぁって言うのが
何回かあったような気がしたから納得したわ
こんな本でも役に立つとは思わんかった
この前ウンコしながら読んでたんだけど
listのremoveって内部でobjectのequal読んでるって初めて知ったわ
仕事でremove使ってるときに何かうまく削除できねーなぁって言うのが
何回かあったような気がしたから納得したわ
こんな本でも役に立つとは思わんかった
406デフォルトの名無しさん
2018/04/26(木) 01:41:03.96ID:rfIza21B APIリファレンスに書いてなかったか?
407デフォルトの名無しさん
2018/04/26(木) 08:48:52.90ID:2wH2d+Gx JK的にそれしかありえんだろ
408デフォルトの名無しさん
2018/04/26(木) 09:39:16.37ID:M6xSFYLV JK的?
409デフォルトの名無しさん
2018/04/26(木) 11:22:14.87ID:ug01vewW メンバーか
410デフォルトの名無しさん
2018/04/26(木) 11:46:33.29ID:zm91irPY 35歳の間違いだろ
411デフォルトの名無しさん
2018/04/26(木) 14:20:36.08ID:LZqqVlEY 共同ツール 1
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
https://seleck.cc/685
https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり
共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/
共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903
ttps://goodpatch.com/blog/sketch-plugins/
412デフォルトの名無しさん
2018/04/27(金) 01:23:44.80ID:jNhgPBcU >>410
ここで出すな
ここで出すな
413デフォルトの名無しさん
2018/04/27(金) 10:56:04.65ID:3DjLi910 アレルギー発症するしな
414デフォルトの名無しさん
2018/05/03(木) 06:41:39.46ID:vbqExxbx int[] dt=new int[100];
これはやはり空白入れて
int[] dt = new int[100];
と書くのが一般的なんですかね?
これはやはり空白入れて
int[] dt = new int[100];
と書くのが一般的なんですかね?
415デフォルトの名無しさん
2018/05/03(木) 08:57:33.33ID:jd++Ii8/ 好きにしたらええ
416デフォルトの名無しさん
2018/05/03(木) 12:00:36.28ID:yhgdtgpW417デフォルトの名無しさん
2018/05/03(木) 20:35:04.46ID:BzzsX7PA418デフォルトの名無しさん
2018/05/03(木) 20:44:54.98ID:x/CfAno2 コンマの後ろは空白入れる派?
(1, 2, 3)
(1, 2, 3)
419デフォルトの名無しさん
2018/05/04(金) 03:59:25.88ID:id/9DuDj マンコの後ろの穴にチンコ入れる派
420デフォルトの名無しさん
2018/05/04(金) 03:59:46.06ID:id/9DuDj マンコの後ろの穴にチンコ入れる派
421デフォルトの名無しさん
2018/05/04(金) 04:06:53.55ID:WkIAkx0r マンコの後ろの穴にチンコ入れる派
( * )←ω
( * )←ω
422デフォルトの名無しさん
2018/05/04(金) 06:18:21.42ID:HEa1U9rI 数値リテラルとかビット〜みたいな細かい数字の話が基礎知識として出てきてとりあえず読み飛ばしてるんですが、やはり理解するのは必須なんでしょうか
423デフォルトの名無しさん
2018/05/04(金) 21:01:19.41ID:sij7cbOA 必須だと思うよ。
そういう基礎的部分がわからないままではプログラム作れないだろう。
そういう基礎的部分がわからないままではプログラム作れないだろう。
424デフォルトの名無しさん
2018/05/05(土) 00:41:00.51ID:4BKiiZ7N やはりそうですか……
ありがとうございます
ありがとうございます
425デフォルトの名無しさん
2018/05/05(土) 02:57:52.54ID:ia6t0Ogc Javaの基礎的な部分で混乱しそうな所は文字列定数かな。特にCやC++に慣れた人がダブルクォーテーションで括られてるだけでそれがStringのインスタンスであることを理解せずに String s = new String(”abc”); みたいな無駄な書き方をしてしまったりする。
426デフォルトの名無しさん
2018/05/05(土) 10:46:34.95ID:7fXWffH9 >>425
そんなところで混乱する奴なんていないよ
そんなところで混乱する奴なんていないよ
427デフォルトの名無しさん
2018/05/05(土) 15:19:26.83ID:ia6t0Ogc そうかなあ?前はよく見たけどなあ。
428デフォルトの名無しさん
2018/05/05(土) 16:41:30.46ID:FiSjDjb0 未だにequalsと==のバグ見かける
C#といったりきたりしてるとうっかりやるから
そろそろ言語仕様変えてほしい
C#といったりきたりしてるとうっかりやるから
そろそろ言語仕様変えてほしい
429デフォルトの名無しさん
2018/05/05(土) 17:06:56.84ID:ZO4AhgIr めっちゃ分かる
430デフォルトの名無しさん
2018/05/05(土) 17:19:52.83ID:HbTEHU9f なまじ似てるのが悪い。
431デフォルトの名無しさん
2018/05/05(土) 19:43:03.62ID:6mpGGgHw https://pastebin.com/Ls4mpSCv
本に載っていた上のコードの11行目で、byte型にキャストを行っているのですが、
その理由が分かりません
リファレンスで調べると、FileOutputStreamのwrite()メソッドは、byte[]か
intしか(第1)引数に取らないと書いてあります
どなたかこのキャストの理由が分かる方がいましたら、教えてもらえませんで
しょうか?
本に載っていた上のコードの11行目で、byte型にキャストを行っているのですが、
その理由が分かりません
リファレンスで調べると、FileOutputStreamのwrite()メソッドは、byte[]か
intしか(第1)引数に取らないと書いてあります
どなたかこのキャストの理由が分かる方がいましたら、教えてもらえませんで
しょうか?
432デフォルトの名無しさん
2018/05/05(土) 19:55:03.40ID:fekIGidl >>431
理由はない、完全に無駄なキャストだしflushも呼ばなくていい
理由はない、完全に無駄なキャストだしflushも呼ばなくていい
433デフォルトの名無しさん
2018/05/05(土) 20:08:07.19ID:ia6t0Ogc それだけでなくなんか無駄があるな。9〜13行目はこれでいいよなあ。
int data;
while ((data = is.read()) != -1)
os.write(data);
int data;
while ((data = is.read()) != -1)
os.write(data);
434デフォルトの名無しさん
2018/05/05(土) 20:10:31.11ID:ia6t0Ogc あ、でも、何れにしてもバッファリングしてないから遅くなるかな。
BufferedInputStream() や BufferedOutputStream() を通すことをお勧めする。
BufferedInputStream() や BufferedOutputStream() を通すことをお勧めする。
435431
2018/05/05(土) 22:47:05.28ID:6mpGGgHw437431
2018/05/05(土) 23:14:03.22ID:6mpGGgHw >>436
有名な、「スッキリわかるJava入門 実践編」です
該当箇所(p252)を引用します
「…flush()を呼び出さないとファイルに正しくデータが書き込まれないことがある
からです。
実は、write()メソッドはデータの書き込みを要求するだけの命令であり、
呼び出したらすぐにファイルにデータが書き込まれるとは限りません。
これはファイルの読み書きを高速化するためのバッファというしくみによって、
後でまとめて書き込み処理がされることがあるためです。…」
有名な、「スッキリわかるJava入門 実践編」です
該当箇所(p252)を引用します
「…flush()を呼び出さないとファイルに正しくデータが書き込まれないことがある
からです。
実は、write()メソッドはデータの書き込みを要求するだけの命令であり、
呼び出したらすぐにファイルにデータが書き込まれるとは限りません。
これはファイルの読み書きを高速化するためのバッファというしくみによって、
後でまとめて書き込み処理がされることがあるためです。…」
438デフォルトの名無しさん
2018/05/05(土) 23:14:53.02ID:ukbnMY+E 普通はcloseの内部でflushが呼ばれるか同等の処理がされるから、
きちんとcloseするプログラムの場合は明示的なflushは不要。
きちんとcloseするプログラムの場合は明示的なflushは不要。
440デフォルトの名無しさん
2018/05/05(土) 23:56:03.71ID:95YSYNlN flush していないと、電源断・強制終了時に、書き込まれない
何秒おきに、flushされるかなどの設定は、
Java と言うよりは、OS・外部装置の挙動
何秒おきに、flushされるかなどの設定は、
Java と言うよりは、OS・外部装置の挙動
441デフォルトの名無しさん
2018/05/06(日) 00:07:10.53ID:GsL2vTC2 また35歳来てるのかよ
442デフォルトの名無しさん
2018/05/06(日) 00:14:34.04ID:iIP+eAYQ flush使うのはログとかで途中経過を確実に見たいときだな
443デフォルトの名無しさん
2018/05/06(日) 04:49:26.60ID:Bse1bLkg flush() があった方が良いのは BufferedOutputStream や BufferedWriter のインスタンス経由で
出力していて尚且つ close() するよりも前に今まで出力した分がバッファから全て出力されて
欲しい場合だろう。そうでないのなら普通は無意味、というか、Bufferedでないクラスなら多分
何もしていない。(バッファがないなら flush() も何もないからね)。
>>431のプログラムの場合 FileOutputStream を作っているだけなのでバッファリングはされて
おらず write() した直後に書かれている筈だ。更に終わったらすぐに close() するだけなので
たとえバッファリングされていたとしても close() 前に flush() をする必要はない。
ただ問題は1バイトづつ読んだり書いたりするようになっていて非常に効率が悪いことだ。
入出力は両方ともこんな風にバッファリングされるようにした方が良い。
InputStream is = new BufferedInputStream(url.openStream());
OutputStream os = new BufferedOutputStream(new FileOutputStream("dj4.ico"));
更に読み書きする部分も以下のように自分でバッファ作ってまとめて読んでまとめて書くようにした方が良い。
(1000である必要はない。もっと大きくても良い)。
byte[] buf = new byte[1000];
int n;
while ((n = is.read(buf)) > 0)
os.write(buf, 0, n);
こうした時の速度差は何Mバイトとか何Gバイトもの大量のデータを扱うと分かると思う。
(但しJavaコンパイラやJITの最適化、およびJavaVMやOSやハードウェアの進歩により
将来的にはどう書いても速く動くようになる可能性はある)。
出力していて尚且つ close() するよりも前に今まで出力した分がバッファから全て出力されて
欲しい場合だろう。そうでないのなら普通は無意味、というか、Bufferedでないクラスなら多分
何もしていない。(バッファがないなら flush() も何もないからね)。
>>431のプログラムの場合 FileOutputStream を作っているだけなのでバッファリングはされて
おらず write() した直後に書かれている筈だ。更に終わったらすぐに close() するだけなので
たとえバッファリングされていたとしても close() 前に flush() をする必要はない。
ただ問題は1バイトづつ読んだり書いたりするようになっていて非常に効率が悪いことだ。
入出力は両方ともこんな風にバッファリングされるようにした方が良い。
InputStream is = new BufferedInputStream(url.openStream());
OutputStream os = new BufferedOutputStream(new FileOutputStream("dj4.ico"));
更に読み書きする部分も以下のように自分でバッファ作ってまとめて読んでまとめて書くようにした方が良い。
(1000である必要はない。もっと大きくても良い)。
byte[] buf = new byte[1000];
int n;
while ((n = is.read(buf)) > 0)
os.write(buf, 0, n);
こうした時の速度差は何Mバイトとか何Gバイトもの大量のデータを扱うと分かると思う。
(但しJavaコンパイラやJITの最適化、およびJavaVMやOSやハードウェアの進歩により
将来的にはどう書いても速く動くようになる可能性はある)。
444デフォルトの名無しさん
2018/05/06(日) 08:27:00.47ID:6iNSfcwx FileOutputStreamはJava側ではバッファリングしていないが
OS側のファイルシステムがバッファリングしてる場合もあるので、
flush呼び出しで明示的にディスク書き出しを指示できるので完全に無意味って事はない。
ただしディスク書き出しを指示するっても指示された側が直ちに実行するとは限らない。
典型的にはflushの呼び出しが終わった時には書き出しが終わっている事が期待されるが
実際にはディスクアクセスの優先順位待ちとかでflushの呼び出しが終わった時点でも
ディスクへの書き出しが終わってないとかそーゆーケースはある。
OS側のファイルシステムがバッファリングしてる場合もあるので、
flush呼び出しで明示的にディスク書き出しを指示できるので完全に無意味って事はない。
ただしディスク書き出しを指示するっても指示された側が直ちに実行するとは限らない。
典型的にはflushの呼び出しが終わった時には書き出しが終わっている事が期待されるが
実際にはディスクアクセスの優先順位待ちとかでflushの呼び出しが終わった時点でも
ディスクへの書き出しが終わってないとかそーゆーケースはある。
445デフォルトの名無しさん
2018/05/06(日) 11:03:17.43ID:6iNSfcwx FileOutputStreamだとflush上書きしてねーから>>444はウソだったわ。
446デフォルトの名無しさん
2018/05/06(日) 16:44:24.01ID:Bse1bLkg Java 側で FileOutputStream を使っていても OS 側で密かにバッファリングされていた場合は
Java の方からではどうすることもできないかもね。
ま、実際今時のOSだとディスクに対するライトキャッシュはデフォルトではONになっているのが
普通だろうからどんなプログラムでも(Javaであろうがなかろうが)OSのシステムコールの write()
直後にディスクに書かれていないことはあり得る。但しその場合は write() 直後に read() すると
あたかもディスクから読んだかのように書いた内容が読める。しかしいきなり電源が落ちると
ディスクに書いてない分の内容は失われる。
これを防止する方法は Linux ならシステムコールの sync() を呼ぶか sync コマンドを
実行れば良いのだが、しかし他のOSでは違うやり方になるだろう。統一された方法はない。
大雑把に UNIX 系 OS だと sync() でやると昔からの慣習で決まっているだけ。同じUNIX系
OSでも違う場合もあり得るし特殊なハードウェアのディスクの場合は違うかも知れない。
などという細かい事まで考えないといけないぐらい高度な要求があることは滅多にないだろうが、
どうしてもそこまで考えて作らねばならない場合は本当に Java だけで実現できるのか、または
Javaで作ることは適切かを事前によく検討した方が良いと思う。
Java の方からではどうすることもできないかもね。
ま、実際今時のOSだとディスクに対するライトキャッシュはデフォルトではONになっているのが
普通だろうからどんなプログラムでも(Javaであろうがなかろうが)OSのシステムコールの write()
直後にディスクに書かれていないことはあり得る。但しその場合は write() 直後に read() すると
あたかもディスクから読んだかのように書いた内容が読める。しかしいきなり電源が落ちると
ディスクに書いてない分の内容は失われる。
これを防止する方法は Linux ならシステムコールの sync() を呼ぶか sync コマンドを
実行れば良いのだが、しかし他のOSでは違うやり方になるだろう。統一された方法はない。
大雑把に UNIX 系 OS だと sync() でやると昔からの慣習で決まっているだけ。同じUNIX系
OSでも違う場合もあり得るし特殊なハードウェアのディスクの場合は違うかも知れない。
などという細かい事まで考えないといけないぐらい高度な要求があることは滅多にないだろうが、
どうしてもそこまで考えて作らねばならない場合は本当に Java だけで実現できるのか、または
Javaで作ることは適切かを事前によく検討した方が良いと思う。
447デフォルトの名無しさん
2018/05/06(日) 23:24:51.40ID:LrvTqzkb Linux では、アイドル時間を利用して、5秒毎にデバイスに書き込んでいるけど、
SSD の寿命対策で、書き込み回数を減らしたい場合に、
15秒毎とかに設定することもある
またデバイスも、バッファ・キャッシュを持つから、
バッファに書き込んだ時点で、OS に書き込み完了を知らせるかも知れない。
ここで電源断すると、デバイスに書き込まれない
まあ、デバイスの設定は、よく知らないけど
SSD の寿命対策で、書き込み回数を減らしたい場合に、
15秒毎とかに設定することもある
またデバイスも、バッファ・キャッシュを持つから、
バッファに書き込んだ時点で、OS に書き込み完了を知らせるかも知れない。
ここで電源断すると、デバイスに書き込まれない
まあ、デバイスの設定は、よく知らないけど
448デフォルトの名無しさん
2018/05/07(月) 11:28:57.25ID:sRlF3JnI 作成するアプリの規模にもよるかもしれませんが、
非同期処理を安全に書くために調べたら数年前まではRxJavaが流行りそうって記事が多いけども、
今はAsyncTaskとかで十分なのかな?
非同期処理を安全に書くために調べたら数年前まではRxJavaが流行りそうって記事が多いけども、
今はAsyncTaskとかで十分なのかな?
449デフォルトの名無しさん
2018/05/10(木) 20:09:13.57ID:2zvsPgeN Javaについてこの理解であってますか?
1 ソースコードは互換性がありどのJDKでもコンパイルできる
2 バイトコードは互換性がありどのJVMでも実行できる
3 JREやJDKはJVMとクラスライブラリを含む
1 ソースコードは互換性がありどのJDKでもコンパイルできる
2 バイトコードは互換性がありどのJVMでも実行できる
3 JREやJDKはJVMとクラスライブラリを含む
450デフォルトの名無しさん
2018/05/10(木) 20:17:53.23ID:+tTPUtlU >>449
教科書読めやハゲ
教科書読めやハゲ
451デフォルトの名無しさん
2018/05/10(木) 21:02:09.83ID:CK5Copcn >>449
大雑把にはそれでいいのだが標準ではないライブラリを追加して作られたプログラムはそれの無い環境では当然コンパイルエラーになる。
コンパイル済みのクラスファイルやそれを入れたjarファイルの場合は足りないライブラリのせいで動かない。
大雑把にはそれでいいのだが標準ではないライブラリを追加して作られたプログラムはそれの無い環境では当然コンパイルエラーになる。
コンパイル済みのクラスファイルやそれを入れたjarファイルの場合は足りないライブラリのせいで動かない。
452デフォルトの名無しさん
2018/05/11(金) 08:49:44.16ID:CudJysns453デフォルトの名無しさん
2018/05/11(金) 15:40:03.41ID:iIfcglOt やかましいわ!
454デフォルトの名無しさん
2018/05/11(金) 15:45:41.92ID:Z82lyl/Y 1. 完全な互換性はないので同じソースコードが全てのJDKで必ずコンパイルできるとは限らない。
2. 完全な互換性はないので同じバイトコードが全てのJVMで必ず実行できるとは限らない。
2. 完全な互換性はないので同じバイトコードが全てのJVMで必ず実行できるとは限らない。
455デフォルトの名無しさん
2018/05/11(金) 16:21:23.17ID:UhEMsKag456デフォルトの名無しさん
2018/05/11(金) 20:24:20.11ID:Cbg+X5+f Classクラスが持つメソッドについて質問です。
メソッドを取得するgetDeclaredMethod()やコンストラクタを取得する
getDeclaredConstructor()の引数に、Class<?>型が含まれているのですが、
何故この型なのでしょうか?
intやdoubleなどの基本型を取る場合もあると思うのですが…。
メソッドを取得するgetDeclaredMethod()やコンストラクタを取得する
getDeclaredConstructor()の引数に、Class<?>型が含まれているのですが、
何故この型なのでしょうか?
intやdoubleなどの基本型を取る場合もあると思うのですが…。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 津波警報の発表中にグーグル検索、AIが「すべて解除」と誤情報 [蚤の市★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【実況】博衣こよりのえちえち朝活🧪
- 寒すぎてハゲたんやが
- 【悲報】婚活女子(38)「婚活パーティーに行ったら婚活男性の大部分が年収350万円身長165cm未満のコミュ障子供部屋おじさんで絶望してる… [257926174]
- 「農林水産業」で賞与が激増!コメや卵など食料品高騰で大儲け [481941988]
- (´・ω・`)おはよ
- 朝からハイエースでカップラーメン食べてるドカタ
