- ベストアンサー
戻り値について
javaの勉強をしている者です。 初歩的な質問で申し訳ありませんが、 メソッドの戻り値を確認するためには、 returnをつかわければいけないですか? それとも、例えばread()だと、 ch=read();とすれば、データの次のバイトを取得する と思うんですけど、この方法でも戻り値を 確認したということになるのでしょうか? ちがうのであれば、説明していただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「メソッドの戻り値を確認する」というのが質問としてあいまいかも。 JVMのバイトコードレベルで考えるなら、オペランドスタックの中身を見ることで戻り値を確認できます。 そういう意味じゃなく、ch=read();と記述するためには、read()の処理本体の中で「return 戻り値;」と記述しなければならないのか、という事ならYES。詳しくは言語仕様が公開されてますので、そちらをご覧になってみては。
その他の回答 (2)
- komi1341
- ベストアンサー率65% (25/38)
> 今のコードだとreturn 戻り値;という形になっていないので、 > 返り値を確認したことにはなっていないのでしょうか? まるで誰かに「返り値を確認しろ」と言われて、意図を理解しないままやり方だけをやみくもに探しているように見えます。一度その質問をそっくりそのまま周囲の人にしてみてください。遠回しな言い方ですが、それが一番いいような気がします。
お礼
回答ありがとうございます。 そうしてみます。
- osamuy
- ベストアンサー率42% (1231/2878)
> ((part = in.read(buf, 0, buf.length)) >= 0 read()の戻り値を変数partに代入して、そのpartを0以上か確認してますね。即ちread()の戻り値を確認していることになるかと。 > return 戻り値;という形になっていないので、返り値を確認したことにはなっていないのでしょうか これが思い込みになってるような。何故そのように思ったのか、どこか本に書いてあったとか、誰かから聞いたとか補足したら回答がえられやすいと思います。
お礼
回答ありがとうございます。 勘違いをしていました。本を見たらそうやって戻り値を 返していたので、そうしなければいけないと思っていました。 アドバイスをありがとうございました。
お礼
回答ありがとうございます。 説明不足ですいません。補足します。通信のプログラムを作っていて、 送信されたバイトを受信して、受信にかかる時間を計測するものを作っています。 受信側で実際に受信したバイト数をread(buf,int,int)を使って確認したいのです。 以下のコードは自作したプログラムの受信処理です。 BufferedInputStream in = new BufferedInputStream(sock.getInputStream()); startNs = System.nanoTime(); while ((part = in.read(buf, 0, buf.length)) >= 0) { total += part; } stopNs = System.nanoTime(); この処理で受信したバイト数をtotalで表しています。 今のコードだとreturn 戻り値;という形になっていないので、 返り値を確認したことにはなっていないのでしょうか? なっていないのなら、どうやってreturn 返り値;を追加すればよいでしょうか?返り値というキーワードで検索しても、既存のメソッドの返り値の返し方が見つかりませんでした。 アドバイスをお願いします。