Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.6
http://mevius.2ch.net/test/read.cgi/tech/1513783473/
Java入門・初心者質問スレ Part.7
■ このスレッドは過去ログ倉庫に格納されています
2018/01/10(水) 11:06:04.02ID:ijSgjgrG
346デフォルトの名無しさん
2018/04/18(水) 02:15:03.86ID:q6pXgTbr すみません、長くなるので2つに分けます
public class CopiedMethod {
static int a = 10;
static int b = 20;
public static void main (String[] args) {
printOneValue();
printThreeValues();
}
private static void printOneValue() {
int maximum = a;
if (b > a) {
maximum = b;
}
System.out.println(" 最大値;" + maximum);
}
private static void printThreeValues() {
int maximum = a;
if (b > a) {
maximum = b;
}
int minimum = a;
if (b < a) {
minimum = b;
}
int average = (a + b) / 2;
System.out.println("最大値:" + maximum);
System.out.println("[最小値:" + minimum);
System.out.println("[平均値:" + average);
}
}
というコードについてなのですが、
public class CopiedMethod {
static int a = 10;
static int b = 20;
public static void main (String[] args) {
printOneValue();
printThreeValues();
}
private static void printOneValue() {
int maximum = a;
if (b > a) {
maximum = b;
}
System.out.println(" 最大値;" + maximum);
}
private static void printThreeValues() {
int maximum = a;
if (b > a) {
maximum = b;
}
int minimum = a;
if (b < a) {
minimum = b;
}
int average = (a + b) / 2;
System.out.println("最大値:" + maximum);
System.out.println("[最小値:" + minimum);
System.out.println("[平均値:" + average);
}
}
というコードについてなのですが、
347デフォルトの名無しさん
2018/04/18(水) 02:40:02.45ID:q6pXgTbr すみません、>>346は長いコードになってしまったので、こちらのコードでお願いします;
public class OneMethod {
static int a = 10;
static int b = 20;
public static void main (String[] args) {
printThreeValues(); /////A
}
private static void printThreeValues() { /////B
int maximum = a;
if (b > a) {//[22]
maximum = b;
}
int minimum = a;
if (b < a) {//[25]
minimum = b;
}
int average = (a + b) / 2;
System.out.println("[28] 最大値:" + maximum); /////C
System.out.println("[29] 最小値:" + minimum); /////D
System.out.println("[30] 平均値:" + average); /////E
}
}
実行結果↓
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
こちらについてなのですが・・・
public class OneMethod {
static int a = 10;
static int b = 20;
public static void main (String[] args) {
printThreeValues(); /////A
}
private static void printThreeValues() { /////B
int maximum = a;
if (b > a) {//[22]
maximum = b;
}
int minimum = a;
if (b < a) {//[25]
minimum = b;
}
int average = (a + b) / 2;
System.out.println("[28] 最大値:" + maximum); /////C
System.out.println("[29] 最小値:" + minimum); /////D
System.out.println("[30] 平均値:" + average); /////E
}
}
実行結果↓
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
こちらについてなのですが・・・
348デフォルトの名無しさん
2018/04/18(水) 02:53:29.54ID:q6pXgTbr 1
実行結果は、A(/////A)の部分から出力されているのでしょうか?
もしそうなら、C、D、Eの部分も続けて読み込まれて、実行結果は、
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
と2回同じのが繰り返される実行結果表示にならないのは何故でしょうか?
mainメソッドの中にBのprintThreeValuesメソッドがあるのならわかるのですが、
コードを見た感じ2つは平等(?)な立場の位置に見えまして・・・
2
こちらのコードを上から順番に読みますと、
最初にAの部分が目に入り、ここだけですとこのメソッドが何なのかわからず、
続けてBからEまで読んで初めて理解できると思うのですが、
先にB-Eまでを表記して、その後にmainメソッドを書いた方が読みやすい気がするのですが、
それではなぜ駄目なのでしょうか?
質問が伝わらなかったらすみません
宜しくお願いします
実行結果は、A(/////A)の部分から出力されているのでしょうか?
もしそうなら、C、D、Eの部分も続けて読み込まれて、実行結果は、
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
と2回同じのが繰り返される実行結果表示にならないのは何故でしょうか?
mainメソッドの中にBのprintThreeValuesメソッドがあるのならわかるのですが、
コードを見た感じ2つは平等(?)な立場の位置に見えまして・・・
2
こちらのコードを上から順番に読みますと、
最初にAの部分が目に入り、ここだけですとこのメソッドが何なのかわからず、
続けてBからEまで読んで初めて理解できると思うのですが、
先にB-Eまでを表記して、その後にmainメソッドを書いた方が読みやすい気がするのですが、
それではなぜ駄目なのでしょうか?
質問が伝わらなかったらすみません
宜しくお願いします
349デフォルトの名無しさん
2018/04/18(水) 03:08:54.99ID:1MQV5vND350デフォルトの名無しさん
2018/04/18(水) 12:44:11.63ID:Rjtb0hvw351デフォルトの名無しさん
2018/04/18(水) 13:37:38.62ID:kBhJS0dX >>350
嫉妬か?
嫉妬か?
352デフォルトの名無しさん
2018/04/18(水) 14:05:49.15ID:AEcEsWpP まぁ言いたいことはわかるけど ID:q6pXgTbr レベルの奴に返す回答ではないね
基本的このスレは俺を除いて質問者も回答者もほぼ全員が誇張なしに馬鹿だと思う
基本的このスレは俺を除いて質問者も回答者もほぼ全員が誇張なしに馬鹿だと思う
353デフォルトの名無しさん
2018/04/18(水) 14:09:44.34ID:gg2GabAw >>348
コンピュータは人間が文章を読む時と同じように上から下にプログラムを読んで実行して行くが、
その文章の途中に「○○を読め」と書いてあり、それが出てきたら馬鹿正直にそちらを読んで実行し、
それが終わったら元に戻って続きを読む。
そんな感じで実行していくので文章の見た目の上下とは無関係に上に行ったり下に行ったりする。
同然文章の終わりが一番下になっているとは限らず、真ん中で終わることもある。
見た目に惑わされてはならない。
コンピュータは人間が文章を読む時と同じように上から下にプログラムを読んで実行して行くが、
その文章の途中に「○○を読め」と書いてあり、それが出てきたら馬鹿正直にそちらを読んで実行し、
それが終わったら元に戻って続きを読む。
そんな感じで実行していくので文章の見た目の上下とは無関係に上に行ったり下に行ったりする。
同然文章の終わりが一番下になっているとは限らず、真ん中で終わることもある。
見た目に惑わされてはならない。
354デフォルトの名無しさん
2018/04/18(水) 15:02:23.36ID:q6pXgTbr355デフォルトの名無しさん
2018/04/18(水) 15:29:51.02ID:yobQufC7 実行されるのは main 関数の中身だけだよ
356デフォルトの名無しさん
2018/04/18(水) 15:39:39.32ID:EU/tZBmZ357デフォルトの名無しさん
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はウソだったわ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【サッカー】上田綺世の活躍は「一過性」 15戦18発も…オランダ英雄は懐疑的な姿勢「確信に至っていない」 [ゴアマガラ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ180
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
- 🏡
- 高市早苗「竹島は日本領土」 [834922174]
- 【画像】小泉防衛大臣の頭皮、存立危機に認定 [834922174]
