トップページ > プログラム > 2014年12月01日 > wlgWogTe

書き込み順位&時間帯一覧

4 位/211 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000111407



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
★★Java質問・相談スレッド171★★

書き込みレス一覧

★★Java質問・相談スレッド171★★
604 :デフォルトの名無しさん[sage]:2014/12/01(月) 19:25:23.27 ID:wlgWogTe
System.out.print(3);
System.out.print('\n');
System.out.print(4 + '\n');

上記のコードを書いて実行したところ出力が
3
14
となりましたが、1はどこから来たのでしょうか?
★★Java質問・相談スレッド171★★
606 :デフォルトの名無しさん[sage]:2014/12/01(月) 20:24:26.77 ID:wlgWogTe
なるほど改行コードの0x000Aがintの10として扱われていたんですね
ありがとうございました
★★Java質問・相談スレッド171★★
609 :デフォルトの名無しさん[sage]:2014/12/01(月) 21:14:25.14 ID:wlgWogTe
たびたびすみません
上記の
System.out.print(4 + '\n');
のコードで実際に4 + 10 が行われている瞬間、もしくは行われる際の
詳細な処理の流れを見る方法はありませんでしょうか?
System.out.print(4 + '\n'); の行にブレークポイントを設定して実行し
ステップインするとすでにprint()の引数のarg0に14が入っています。
見たいのは最初のブレークからステップインする間の処理なのですが…
★★Java質問・相談スレッド171★★
611 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:04:34.47 ID:wlgWogTe
>>610
レスありがとうございます
足し算は実行されないとはどういうことでしょうか?
4 と ¥n (0x0A) がどこかしらで足されているのは確かだと思うのですが…
★★Java質問・相談スレッド171★★
617 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:17:03.23 ID:wlgWogTe
>>612
System.out.print(4 + '\n');
の出力が
14
になるまでの流れを知りたいと思っています

>>613
ありがとうございます
自分なりに調べてコンパイルした.classファイルをjadで逆コンパイルしたところ
生成されたコードが System.out.print(14); だったことから、
>>610さんや>>613さんのおっしゃっている意味はわかりました
コンパイル時の計算というのは何らかの方法で可視化できないのでしょうか?
★★Java質問・相談スレッド171★★
621 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:47:22.11 ID:wlgWogTe
>>614-616
ありがとうございます
なぜ14という数字になったのかという点はおかげさまでわかりました

教えて頂いた情報から
System.out.print(4 + '\n'); がコンパイルされたバイトコード上では
すでに 14 になっていて、デバッガはJVMで実行される
バイトコードの流れを表示するものだから、求めていた 4 と 0X0A が
足される際の流れが表示されないということは理解できました。

>>618
ありがとうございます
そうなのですね。

皆さんありがとうございました。
おぼろげながらようやく理解できました。
コンパイラの仕組みについて勉強してきます。
★★Java質問・相談スレッド171★★
622 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:52:22.63 ID:wlgWogTe
>>620
教えて頂いたように書けば変数の中身を表示できました
ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。