
初心者です。
教えてください。
下記のサンプルプログラムがあるのですが、
dataにどこでsampleという文字が代入されているのでしょうか?
StringReader sr = new StringReader("samle");
char [] data = new char[1];
while (sr.read(data) ! = -1) {
System.out.println(data);
}
結果が以下の通り表示されます。
s
a
m
p
l
e
No.5ベストアンサー
- 回答日時:
一般的に関数を実行する際は、引数は読み込むだけで更新されません。
これは数学概念の関数に近い挙動です。例)
結果 = 関数(引数) ← 結果だけが更新され、引数はそのまま
ですが関数の中で各種オブジェクトを「操作」することにより、結果以外も更新してしまう関数の「副作用」を起こすことが可能です。
ご提示の処理の場合ですと、
read 関数は引数として指定した配列オブジェクトを、
読み込んだ値を格納するための出力バッファとして「操作」し、
配列の長さ分の文字が格納されるという「副作用」がおきています。
様々な理由により、この様な直観的でない API は多々ありますので、
関数を使用する際は Javadoc の確認を怠らないようにしましょう。
No.4
- 回答日時:
> readはsbの中身をreadするのでしょうか?
> 引数のデータをreadするのではなく。
>そうするとcharのdataはどういう引数になるのでしょうか?
> 配列の箱だけのような気がするのですが。
StringReaderなのですからそうです。
read()した結果が引数指定した変数に格納されます。
つまり、read()結果を1文字ずつ受け取る箱(ここではdata)を、予め定義しておき、read()によってその箱に値を受け取っていることになります。
https://docs.oracle.com/javase/jp/8/docs/api/jav …
引数からして、継承元のReader::read(char[]) を利用していますね。
https://docs.oracle.com/javase/jp/8/docs/api/jav …
https://paiza.io/projects/vDM8MKOs4vrFEBAAF8f4mw
dataを定義しているchar[]の配列数をいじると動きが分かると思います。
配列数を2とかにすると、読込文字数に満たない分は、直前で読み込まれた文字がそのまま出てきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleログインボタンのデザイ...
-
プログラミングの問題です。大...
-
JDONWROADER2のエラー修復
-
スプレッドシートからリマイン...
-
googleスプレッドシートのスク...
-
googleスプレッドシートのGASに...
-
Verilogについて質問です。この...
-
論理回路設計をVerilogで行う問...
-
ゲーム開発の入門書を探しています
-
jdbcでinsert,delete,createをe...
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
C言語 列挙型(enum型)変数について
-
processing エラーで、 "cannot...
-
Serialize(CArchive& ar)にて
-
整数xxxが大き過ぎますというエ...
-
最小二乗法
-
Variant型で宣言してるのにEmpt...
-
ラズベリーパイ B でgpioを使っ...
-
VBA 1行で複数の代入を行った...
-
C言語 アロー演算子について質...
-
processing "フラグcheckをfals...
-
Accessコンボボックスにレコー...
-
サブwindowをオープンして外部...
-
VBA 一つの変数への追加、selec...
-
【Excelマクロ】グラフの最小値...
おすすめ情報
ありがとうございます。srの参照文字列が2行目のdataにどう入るのかイメージできません。
2行目はあくまでも配列の箱を用意しているだけに考えてしまうのですが。