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

■ このスレッドは過去ログ倉庫に格納されています
2020/04/01(水) 15:09:15.95ID:9COIb57q0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.9
https://mevius.5ch.net/test/read.cgi/tech/1552143555/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
201デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/20(水) 17:40:15.80ID:i5a3FP8I0
>>200
そうです

普通はJVMを終了させるようなメソッド書かないよ
例外投げて呼び出し元でSystem.exitしたがいんじゃない?
2020/05/20(水) 17:40:51.80ID:dX3YGYcq0
ググレカス
アホ
2020/05/20(水) 17:43:35.87ID:dX3YGYcq0
5日ぶりについた糞な質問に20分でアホな回答つけてるとか自演か?
自演じゃなくてもなんで即レスでアホな回答する馬鹿しかここにはいないのか
ほんと理解に苦しむ
204デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/20(水) 17:44:09.05ID:i5a3FP8I0
>>202
まあまあ

普通はどうやるんだろ
・Eitherで正常値と異常値をわける
・OptinalでEmptyを返す
・例外を投げる
あたりかなー
jvmを終了させるのはないわー
そんな凶悪メソッド使いたくないわー
205デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/20(水) 17:44:39.98ID:i5a3FP8I0
>>203
おいプリン俺を誰だと思ってるんだ
プリン先生の大ファンです、サインください
2020/05/20(水) 17:50:32.00ID:QpPYirMD0
Eclipseでエラー箇所にカーソルを当て、提案された解決策に従うのが吉。
2020/05/20(水) 18:19:50.74ID:mYNR9VNU0
答えてくれた方、ありがとうございました。

>>204
exit()を使うより、例外を発生させて終わった方がいいですか?
2020/05/20(水) 18:30:46.08ID:XP47V45A0
>>200
この質問デジャブかな
https://mevius.5ch.net/test/read.cgi/tech/1588770728/23

そこらの関数に自由にVM終了されたらテストコードもまともに書けない
致命的エラーならランタイム例外投げてmainメソッドでリターンコードにまつわる処理を集約だろ
209デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/20(水) 18:43:45.91ID:i5a3FP8I0
>>207
値を返すメソッドの中でjvmを終了させない方が良いよ

それはそれとして終了ステータスを3にしてるのはjavaを実行したあとに
終了ステータスで処理を変えたいとかがあるわけっしょ?
そういうのがなくてなんとなく3にしてるだけだったら
例外投げて終わりでよいと思うけど、何をしたいのかわからないので
System.exitを使わなくてよいかはわからぬよ

System.exitを使うならmainメソッドで使ったが良い
2020/05/20(水) 18:48:51.78ID:mYNR9VNU0
>>208
それ俺の質問です!
その時は別の解決策を見つけたんでよかったのですが(finallyをせずに処理を書く)、
今度はうまくいかなかったんです。

例外を検討してみます。
ありがとうございました。
2020/05/20(水) 18:58:53.26ID:mYNR9VNU0
>>209
参考までに書いているコードをアップします。
https://pastebin.com/62aSxerK

じゃんけんをするプレーヤークラスのサブクラスを書いています。
5回誤入力があると、主工程の次のステップに進ませず終了させたいので、
exitメソッドを思い付きました。

前述の通り例外を発生させたいと思います。
2020/05/20(水) 19:34:03.56ID:XP47V45A0
これは終了理由のエラーメッセージも詰め込んで例外スローだな
一介のPlayerクラスがVMの命運を握ってるのはおかしいので
古典的には不正な入力に対して-1を返してもいい
それをもっとJavaっぽく書くならグー、チョキ、パー、不正の4値のenumで
2020/05/20(水) 19:38:33.74ID:XP47V45A0
いや4値より3値でOptional<Hand>を返すのがいいか
214デフォルトの名無しさん (ワッチョイ 1aa5-ksJK)
垢版 |
2020/05/20(水) 20:08:48.94ID:WJVU+U120
>>211
>exitメソッドを思い付きました

っつってもJavaだけやっててexitなんてそうそう思い付くモンじゃないよ
たぶんC言語からの流れじゃね
2020/05/20(水) 20:19:12.44ID:B2u2opfc0
というかコードの書き方がCだな。
str系の代わりにStringだのScannerだの使っているだけで。
2020/05/20(水) 21:25:38.19ID:5CB6iDJ+0
>>210
エラーが取れて動けばいいって思っていそうな感じだけど、
メソッドの設計やどうあるべきかってのをよく考えような。
217デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/21(木) 18:42:09.45ID:ROmcCwHn0
>>211
ご査収ください
https://paiza.io/projects/NRXnLObeNNh6AvTnVeK28w
2020/05/21(木) 20:26:55.00ID:Dd1/b7z+0
ここは宿題スレじゃねぇからゴミコードにゴミコードを貼り付けるなゴミ
ほんとなんでこういう場違いな自己顕示欲低能しかいないのか
アホ
219デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/21(木) 20:27:42.73ID:ROmcCwHn0
>>218
うるせえ!黙ってろハゲ
2020/05/21(木) 21:03:36.37ID:NWdv9zmd0
相変わらず実は自分だった感がすごい
221デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/21(木) 21:19:51.39ID:ROmcCwHn0
質問した人と僕が同一人物だと疑ってるわけですね
それが事実だったとして一番得をするのはプリン先生です
つまり犯人はプリン先生です

プリン先生は僕の才能に嫉妬しています
僕はプリン先生の一番弟子としてそれを誇りに思うしプリン先生を尊敬しています
222デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/21(木) 21:34:09.74ID:ROmcCwHn0
『プリン先生の深層心理』

質問した人と僕が同一人物だと, どうしてプリン先生が得をするか
それは, 僕の才能あふれる回答が自作自演によるものならプリン先生が僕の才能を否定できるからです
そればかりか卑劣な行いとして僕を糾弾する正義の立場に立てるからです

プリン先生は自分よりも才能のある人を恐れています
自分の方が優秀だと思いつつも僕の才気あふれる回答を目にしてとまどっています
質問した人と僕が同一人物ならばその葛藤に折り合いをつけることができます

このことが原因でバイアスが発生します
おそらくプリン先生はそのことを自覚していません
深層心理は無意識下で働き, 意識の表層には苛立ちとして現れます
俗に言う嫉妬です
223デフォルトの名無しさん (ワッチョイ 8b01-oW4g)
垢版 |
2020/05/21(木) 21:34:56.39ID:a/mGIkT10
女が友達がヤバかった話するときは、自分がヤバかった話だからな。
2020/05/22(金) 01:41:56.50ID:lEHu0gid0
まだ話続いてたんですね…。

>>217
ありがとうございます。
しかしJava8までしか知らないので読めないです…。

例外処理で終了するようコードを修正しました。
https://pastebin.com/8hjNRc4C

それと先(>>211)のコードでは、数字以外を入力したときにうまく動作しないので、
改行文字を読み捨てるようnextLineメソッドを追加しています。
2020/05/22(金) 09:10:40.98ID:ePCFLxw/0
入力を誤るとRuntimeExceptionなのか。
意味を何も考えないで結果しか見てないな。
226デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/22(金) 09:47:22.48ID:MygyNOFw0
>>225
5回試行してそれでもダメなら例外なので
良いと思うけどね
227デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/22(金) 09:50:13.09ID:MygyNOFw0
想定される例外なら検査例外そうでないなら実行時例外というわけ方はあるけれども
検査例外を捕まえるのは正常フローから外れた処理を正常フローに引き戻すという目的があって
やることなので今回の場合はプログラムを終了させたいわけだから実行時例外で問題ないと思うけどね
2020/05/22(金) 10:01:18.04ID:I4qPJ3i7a
検査例外はそもそも大失敗な機能なんで正しく運用するなんて不可能
GroovyやKotlin等の後発JVM言語にすら省かれてるし、Java自身もラムダと相性悪過ぎてついに失敗を認めUncheckedIOException追加しちゃった
2020/05/22(金) 10:31:49.68ID:+nON9XYM0
単純にはもともとがexitなのだから代替はRuntimeExceptionでもいいとは思うが、
これは複数人のじゃんけんなんだろうから、そのたった一人の入力ミスが
exitやRuntimeExceptionで全体を強制終了に追い込むのは、それもおかしい。
2020/05/22(金) 11:49:41.01ID:ePCFLxw/0
>>227 >>229
まあexitの代わりってことならそれでいいのかもな。
exitが出てきた時点でしっかりとしたメソッドを作ろうという考えではないのだろうし。
231デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/22(金) 13:38:30.38ID:MygyNOFw0
>>229
なるほど、それもそうか

>>228
HDDに対するIOの例外は検査例外ではなくて実行時例外であるべきだとは思うけど
それ以外の検査例外もなくして良いかは微妙なところ
検査例外の利点は例外のハンドリングが抜けてることにコンパイル時に気づけることなのであっても良いと思う

Javaを設計したゴスリンは航空機のシステムを開発してて例外のハンドリングが抜けてることを見落として
航空機が墜落することを経験してたから検査例外を作りましたっていう物語を読んだことがある
Javaでミッションクリティカルなシステムを作ってる人は少ないだろうけど
2020/05/22(金) 13:42:32.29ID:kWW4bzxt0
知っていますか、そのじゃんけんプログラムを書いた御仁は、
Javaをもう二年以上勉強していて、
Javaはマスターした、オブジェクト指向は完璧に理解したと豪語しているということを
233デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/22(金) 13:43:34.34ID:MygyNOFw0
質実剛健、完璧堅牢、Java
2020/05/22(金) 18:14:14.93ID:0HVeN7gU0
あのレベルでJAVAをマスターしたって言っていいのか!
それじゃあ今日から自分もJAVAマスターだ!
235デフォルトの名無しさん (ワッチョイ 3761-f9m4)
垢版 |
2020/05/22(金) 18:46:31.08ID:QUisHt510
RuntimeExceptionなんて名前を付けちゃったから混乱するんだけど、
IOExceptionやSQLExecptionなども「実行時例外」ではあるぞ。
236デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/22(金) 18:56:33.04ID:MygyNOFw0
すごーい
2020/05/22(金) 21:03:08.85ID:veQ7/4xe0
>>235
それは検査例外
238デフォルトの名無しさん (ワッチョイ 9a61-f9m4)
垢版 |
2020/05/23(土) 11:41:11.01ID:VbPuW/L00
Javaは非チェック例外をRuntimeExceptionとしたが、
チェック例外も非チェック例外も実行時例外であることに変わりない(だからカッコ付けたんだけど)。
RuntimeExceptionを実行時例外と訳すのは、Classクラスをクラスクラスと訳してしまう同じ過ち。
2020/05/23(土) 11:56:00.95ID:UKShC8hO0
>>238
文法や構文の誤りはコンパイル時に検出されるけど例外は実行時にスローされるのだからすべて「実行時例外」だという主張ですか?
実行時例外をそんな意味で使ってる人見たことないです
240デフォルトの名無しさん (ワッチョイ 9aad-SEkD)
垢版 |
2020/05/24(日) 05:08:04.89ID:vB1Q/4mw0
Kotlinもよろしく
2020/05/24(日) 23:54:16.19ID:q2M3xOHv0
質問です。

https://ideone.com/K2YLZm
上のコードでは、なぜNoSuchElementExceptionが発生するのでしょうか?

どなたかよろしければ返答よろしくお願いします。
242デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 00:25:50.67ID:Ou5xo5qn0
>>241
ScannerがInputStreamをバッファリングして読み込んでてInputStreamが空になってるからでしょ
Scannerを共有すれば良い
2020/05/25(月) 15:20:08.37ID:6axksZvO0
>>242
回答ありがとうございます。
でも俺頭が悪いのでそれがどういうことなのかよく分からないです…。

修正はしてみました。
https://ideone.com/ZA15Gv
こんな感じでよろしいでしょうか?
2020/05/25(月) 15:36:45.55ID:6axksZvO0
すいません、間違えました。
正しいリンク先は以下です。こちらをご参照下さい。
https://ideone.com/zK0JTK
245デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 15:37:03.60ID:Ou5xo5qn0
>>243
詳細はこの辺参照

FIO06-J. 1つの InputStream に対して複数のバッファ付きラッパーを作成しない
https://www.jpcert.or.jp/java-rules/fio06-j.html

修正はそんな感じで良い
引数で渡しても良い
https://paiza.io/projects/kXQ8hCf_3TDfBZYmoUQ2LA
2020/05/25(月) 16:10:14.87ID:6axksZvO0
>>245
回答ありがとうございます。

>>241>>244では別メソッドという観点からアプローチしましたが、
本当は>>243のように別のクラスでどうか、という観点でやりたかったんです。

JPCERTの記事はまだ理解出来ていませんが、
・別メソッドでScannerを使う場合は、そのクラスのフィールドでscanner変数を宣言してそれぞれ利用
・別クラスで使う場合は、scanner変数ををstatic付きで(Mainクラス等に)宣言し、クラス変数としてそれぞれ利用
という理解でいいですかね?

以下は、後者の場合のコード作成例です。
https://ideone.com/3YvgD5
247デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 17:11:26.36ID:Ou5xo5qn0
>>246
どうしてエラーになるかの説明でリンクを貼った

どういう理由でクラス分けようとしてるのかわからないけど
フィールドにScannerをもたせるならこうじゃないかな
https://paiza.io/projects/kIlKd0LmbbTwohyXEL0Glw

可変のフィールドをパブリックに公開するのは責任の範囲がわからなくなるので
よろしくないし、それに依存するクラスもよろしくないと思うよ
248デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 17:24:28.23ID:Ou5xo5qn0
一般論としてはだけどね
結局のところなんでもあり
249デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/25(月) 17:25:10.64ID:Ou5xo5qn0
動けば正義
2020/05/25(月) 18:09:13.78ID:6axksZvO0
>>247-249
ありがとうございました。

理解できてないというのは、意図が分からないということではなく、
読んでみたものの内容が理解できなかったという意味です。

ちょっと俺にはその水準のコードはまだ書けないですね。
もう少し本を読んでみようと思います。
251デフォルトの名無しさん (ワッチョイ 5a7c-rJCj)
垢版 |
2020/05/26(火) 13:44:52.25ID:RAWR5qso0
超はじめたてです。質問があります。

関係演算子と分岐分を用いる問題です。

「int型の変数a,b,cを宣言し、それぞれ適当な整数を代入する。
a.b.cのうち最大値を求めてその値を表示してください」というコードはどうすればいいですか?
252デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 13:58:27.88ID:rvZgOtV/0
>>251
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 System.out.println(max(max(a, b), c));
}

static int max(int x, int y) {
 if (x >= y) {
  return x;
 } else {
  return y;
 }
}
253デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:01:28.38ID:rvZgOtV/0
もしくはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 if (a >= b) {
  if (a >= c) {
   System.out.println(a);
  } else {
   System.out.println(c);
  }
 } else {
  if (b >= c) {
   System.out.println(b);
  } else {
   System.out.println(c);
  }
 }
}
254デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:03:04.65ID:rvZgOtV/0
あるいはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 System.out.println(Stream.of(a, b, c).max(Integer::compareTo).get());
}
255デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:04:39.34ID:rvZgOtV/0
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 System.out.println(Stream.of(a, b, c).reduce((x, y) -> x >= y ? x : y).get());
}
2020/05/26(火) 14:07:14.22ID:9m0COC3M0
荒らすなゴミ
257デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:09:36.09ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 int[] xs = {a, b, c};
 Arrays.sort(xs);
 System.out.println(xs[xs.length - 1]);
}
258デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:11:53.33ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 TreeSet<Integer> tree = new TreeSet<Integer>();
 tree.add(a);
 tree.add(b);
 tree.add(c);

 System.out.println(tree.last());
}
259デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:17:23.59ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(Comparator.reverseOrder());
 maxHeap.add(a);
 maxHeap.add(b);
 maxHeap.add(c);

 System.out.println(maxHeap.remove());
}
260デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:19:48.13ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 int[] xs = {a, b, c};
 int max = 0;

 for (int i = 0; i < xs.length; i++) {
  if (i == 0 || xs[i] > max) {
   max = xs[i];
  }
 }

 System.out.println(max);
}
261デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:21:57.57ID:rvZgOtV/0
>>256
またはこう
public static void main(String[] args) {
 int a = 3;
 int b = 1;
 int c = 2;

 int max = a;

 if (b > max) {
  max = b;
 }

 if (c > max) {
  max = c;
 }

 System.out.println(max);
}
262デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:25:18.85ID:rvZgOtV/0
>>253
これバグってるwごめん
263デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:42:03.35ID:rvZgOtV/0
あれバグってなかった、天才でごめん
264デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 14:44:26.65ID:rvZgOtV/0
>>256
つまりこう
public static void main(String[] args) {
 int a = 1;
 int b = 2;
 int c = 3;

 System.out.println(a >= b ? a >= c ? a : c : b >= c ? b : c);
}
2020/05/26(火) 14:46:23.47ID:gtoMtdIk0
>>251
3枚のトランプa,b,cがあったとき、どうやって一番大きい数字のカードを見つけるかを、まずは日本語で順を追って書いてみな。
初めから効率とかきれいに書こうとか考えず、漏れなく正しく判断する手順を考える。
選んだカードの比較結果によって次に行う手順が変わるから、そういう可能性を漏れなく考えて、a,b,cがどんな組み合わせでも大丈夫な方法を見つける。
ここまででちゃんときてから、実際にJavaのコードを書き始めてみな。
2020/05/26(火) 15:33:06.22ID:WdlDkKkA0
>>251
参考にするのはおそらく>>261だね
2020/05/26(火) 15:36:01.37ID:XukcPGMU0
そもそも質問者がどこまで出来たかの確認が先では
268デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 15:59:31.21ID:rvZgOtV/0
>>256
どこまでできたん?
269デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 15:59:55.46ID:rvZgOtV/0
あ、ごめん、間違えた
270デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 16:00:27.57ID:rvZgOtV/0
>>251
どこまでできたん?
2020/05/26(火) 16:01:01.71ID:q+hnim2U0
【悲報】まさかのMath.max(int, int)氏
これだけコードを書かれたのに存在を無視される
2020/05/26(火) 16:56:54.52ID:9m0COC3M0
キチガイ警報

ID:rvZgOtV/0
2020/05/26(火) 17:07:36.78ID:WdlDkKkA0
>>271
初心者だが普通に参考になったわ
あざす
274デフォルトの名無しさん (ワッチョイ 7601-o1js)
垢版 |
2020/05/26(火) 17:12:24.95ID:rvZgOtV/0
プリン先生のキレが悪い
2020/05/26(火) 17:25:13.92ID:inIOxWAr0
何このスレ、前からこんなだっけ
2020/05/26(火) 17:58:20.90ID:xHxMFosX0
37歳だかの無職荒らし発達障害者が住み着いてこんな風になってしまった。
2020/05/26(火) 18:55:29.24ID:9m0COC3M0
なんか頭のおかしい奴がいつも一人で低レベルな質問と回答の自演連投してるんだよな
2020/05/26(火) 19:09:45.75ID:8pq5ym9A0
>>276
俺のせいじゃねーよ
人のやり取りに文句ばかり言って自分は何もしない奴のせい
2020/05/26(火) 21:18:50.58ID:xHxMFosX0
>>278
お前が37歳だかの無職荒らし発達障害者なのか?
人のせいにしてるんじゃねーよ。

>人のやり取りに文句ばかり言って自分は何もしない奴のせい
自分のことだろ。他人を検索システムや採点システムとしてしか見ていないで
ただ人に行為に甘えるだけの努力しない幼児が。
2020/05/26(火) 23:05:30.84ID:XukcPGMU0
どれが誰とかよく分かるな
2020/05/27(水) 17:20:06.78ID:UfstZGFs0
>>232
>Javaはマスターした、オブジェクト指向は完璧に理解したと豪語しているということを
そんなことは言ってない

>>279
>自分のことだろ。他人を検索システムや採点システムとしてしか見ていないで
>ただ人に行為に甘えるだけの努力しない幼児が。
そんなことはない 黙ってろ
282デフォルトの名無しさん (ワッチョイ 93b9-AV50)
垢版 |
2020/05/27(水) 18:23:32.22ID:cA9U77a90
>>7ってまだ続けられてるのかな
2020/05/28(木) 07:41:33.74ID:/Vusj6Nw0
荒らしの住処

Br37歳、広汎性発達障害のB型作業所通所35
https://medaka.2ch.net/test/read.cgi/dame/1589185839/
2020/05/28(木) 07:53:13.38ID:/Vusj6Nw0
過去にはこんな事も

720 名前: ◆BrBq2CJg6HGd [sage]
:2019/01/15(火) 17:39:56.71 ID:fyCw1kpR
>>711
Amazonで評判のいい本の内、なか見検索があるものということであの本になった。
それとスッキリ入門はマスター。
2020/05/28(木) 12:00:00.02ID:5Ki+INW40
俺のせいで変な奴連れてきちゃってすいません。
変なレスはスルーして下さい。
2020/05/28(木) 13:07:35.78ID:Ij/BzXFPp
>>285
お前が消えればいいんだよ
287デフォルトの名無しさん (ワッチョイ 93ad-atjb)
垢版 |
2020/05/29(金) 21:26:51.69ID:Ey9K/+fw0
throw
2020/05/31(日) 10:58:03.49ID:D+qUBqaG0
System.out.printlnに、日本語が含まれたプログラムをコンパイルするとき
文字化けするので、いつも-encording utf-8するのですがみんなそうなんですか?
2020/05/31(日) 12:10:18.82ID:wcfOBf6F0
うん、それはソースコードをUTF-8で書いてるってことだからとても良いことだよ
ソースコードをShift_JISで書けば-encoding指定を省略できるけど、いまさらShift_JISファイルを量産するのはおすすめしない
290デフォルトの名無しさん (ワッチョイ db01-5TGn)
垢版 |
2020/05/31(日) 13:00:48.17ID:0XZA+K880
>>288
ideでソース書いて実行する人がほとんどだと思う
javacを手打ちしてる人は少ないんじゃないかな
試しにjavacを実行してみたけど-encodingの指定は必要だった
入力するのが面倒ならbatファイルやps1ファイルにパラメータを書いておいて
batやpowershellからjavacを実行したり
gradleやmaven、antなどのビルドシステムを使ったり
ide使ったりとか
291デフォルトの名無しさん (オッペケ Sr8d-moxv)
垢版 |
2020/05/31(日) 17:10:18.30ID:mlVfSsWXr
Robert Sedgewick & Kevin Wayne著『Algorithms 4th Edition』に以下の記述があります。

『One of Java's characteristic features is its policy that references cannot be modified.』

この意味が分かりません。リファレンスを変更できないとはどういうことですか?
2020/05/31(日) 17:14:26.76ID:w6MuXuh+0
>>291
C/C++言語で言うところのポインタ(または参照)という意味だろう。
オブジェクトのインスタンスは動かせない。
2020/05/31(日) 17:20:54.04ID:mlVfSsWXr
>>292

回答、ありがとうございました。

メモリ上に存在しているオブジェクトのインスタンスの場所を動かせないという意味でしょうか?

たとえば、1000番地にあるオブジェクトのインスタンスを2000番地に動かせないということですか?

もし、そういう意味だとしての質問なのですが、オブジェクトのインスタンスを動かす必要なんて起こる場合があるんですか?
2020/05/31(日) 17:48:55.16ID:w6MuXuh+0
>>293
その辺は、C/C++が自由すぎて自分の靴も撃てるという話。そこまで行くとプログラムのマネジメントがおかしいとしか言えない。
2020/05/31(日) 17:52:43.57ID:hHIdU/aR0
>>293
いや、Cだと、
BYTE *ptr = top;
for ( i = 0; i < 100; i++ ) {
 (ptrを使った処理)
 ptr++;
}
とできるが、このptr++のようにポインタを変更する処理がJavaではできないという意味と見た。
なお、Javaでも、
TYPE aaa = new TYPE;
としておいて、もう一度、新たに
aaa = new TYPE;
とすることは出来るはずだが。
2020/05/31(日) 17:56:08.91ID:hm54d19c0
ちょっと違うと思う
modify referenceと言うように参照側を動かせるかどうかの話
Cの場合、たとえば配列を参照しているポインタをひとつインクリメントすると配列の次の要素を参照する
ポインタが指し示す番地を書き換えられるということ
Javaの場合、オブジェクトや配列に対する参照に加算するような概念がない
変数に新たな参照を代入して上書きすることはできても、既に作られた参照をずらしたり書き換えたりができない

その意味はJavaがCのような言語と比べて高級言語であるということ
2020/05/31(日) 17:56:40.29ID:hm54d19c0
かぶった
2020/05/31(日) 18:08:33.49ID:u66u8maC0
>>291
同じ章のQ&Aにある「What is a pointer?」に少し詳しい説明が書いてある
他の人が書いてるようにp++のようなポインタ演算ができないってこと
2020/05/31(日) 18:15:50.91ID:hHIdU/aR0
Javaは、アドレス演算子も無くて、Cの
BYTE *ptr = buf + i;
BYTE *ptr = &buf[i];
TYPE *ptr = &type_data_s[i];
に相当することができなかったと思う。
だから、結構めんどくさい事になる。
2020/05/31(日) 19:17:38.10ID:wcfOBf6F0
インスタンスの配置されたメモリアドレスを変更できないという理解でいいよ
そうすることで「効率的なガベージコレクションができる」と説明が続いているので

プログラマーが勝手にインスタンスのアドレスを変更したり他のメモリーに複製できてしまったらガベージコレクタがそのインスタンスを破棄できなくなる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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