コンテンツにスキップ

宿題:Java言語1#

Java言語#宿題2

Homework 約30分 答え

次のSJava言語のプログラムをバイトコード列に変換(コンパイル)せよ.

X x = new X();
x.m(i + 10);

以下の書式をコピーして回答せよ.変数xの相対位置は1,iの相対位置は2とせよ.

new X
???

回答フォーム

Answer

new X
dup
invokespecial X
astore_1
aload_1
iload_2
bipush 10
iadd
invokevirtual m

Q&A#

誤字#

  • f_compne
  • 2つの値が異なるならL1へ
  • s3.toUpperCases()

GCの実演が面白かった#

Great

実践を大切にして下さい.抽象的で曖昧な理解が具体的で確固としたものになります.

GCのアルゴリズムの違いがピンときていない#

ソートアルゴリズムのようなものか?同じ処理を違う手段で実現しているだけか?

Yes.何をガーベージと見なすかが違います.世代別GCは「若いデータはガーベージになりやすい」という経験に基づいたアルゴリズムです.

メソッドがたくさん呼ばれることによって実行時間が変わるか?#

メソッドの呼び出しによってstackへの代入がたくさん行われるので,遅くなりそう.

確かに遅くなります.ただし絶対に関数をまとめない方が良い.可読性のほうが重要です.

https://stackoverflow.com/questions/1083105/does-creating-separate-functions-instead-of-one-big-one-slow-processing-time

In almost all cases, "inlining" functions to increase speed is like getting a hair cut to lose weight. (関数の速度を上げるためにインライン化するのは,体重を減らすために髪の毛を切るようなものだ.)

なぜmainメソッドもクラスに含まれる必要があるのですか?#

Javaはあらゆる要素をオブジェクトとして表現するからです.クラスに属さないメソッドを書く方法がそもそも存在しません.

個人的な印象: Javaは様々な点で厳格な言語だと感じます.型に厳格なのは当然として,例外処理やクラス構造などに対する制約も強い.

他研究科への進学は可能か?#

もちろん可能です.

質問を読む限り,進路や人生に悩んでいるかと思います.こういうときの特効薬は「誰かに聞く」です.就職担当の先生やキャリア相談の窓口に積極的に相談に行って下さい.

進路等の不安は未知への不安がかなりの割合を占めます.これは人間の本能なので不可避です.なので目をそらさずに,真っ向から取り組んでみることをおすすめします.