
初心者です。
教えてください。
下記のサンプルプログラムがあるのですが、
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も見ています
-
教えて!gooグレードポイントがdポイントに変わります!
dアカウント連携を行っていただくと、グレードに応じて「dポイント」が進呈されるようになります。
-
javaが上手くいきません
Java
-
13歳です。ハッカーになるためにはどうすればよいですか。
その他(プログラミング・Web制作)
-
プロゲートを終えて絶望しています...
その他(プログラミング・Web制作)
-
4
リッチクライアントってなんですか
Java
-
5
いまいちfor文が分かりません 自分で書いたプログラムの一部ですが なぜa[0]とa[1]の合計が2
Java
-
6
DBからのデータを配列に格納してJSONファイルの生成について
Java
-
7
どのプログラミング言語が最強ですか?
その他(プログラミング・Web制作)
-
8
HTMLは、プログラミング言語じゃない。その理由・根拠を教えてください。
HTML・CSS
-
9
プログラミングについて。
C言語・C++・C#
-
10
プログラミングを勉強したいのですが、はじめての言語が機械語(マシン語)ってどう思いますか?
その他(プログラミング・Web制作)
-
11
このコードを実行すると無限に結果が出てくるのですがなにかうまくまとめる方法はあるでしょうか?目的は解
C言語・C++・C#
-
12
Javascript の関数の引数箇所について。
JavaScript
-
13
Javaについて質問です。 要素数5のInt型配列に1から100までの整数乱数 5件をそれぞれ格納し
JavaScript
-
14
たとえば、s = Tokyo Kyoto という文字列で s2 = s.split() しますと、s
C言語・C++・C#
-
15
HTMLとpython を使って猫との会話プログラムしたいです。 プログラムが完成したですが会話がた
HTML・CSS
-
16
c言語の本を教えてください。分厚くて辞書みたいなやつがいいです。日本の本屋さんで変える、のにしくださ
C言語・C++・C#
-
17
javascript の export default について
JavaScript
-
18
Javadcriptでwebサーバー側にあるデータベースのデータを取得
AJAX
-
19
printが「ダブルスタンダード」にならないのはなぜ?
PHP
-
20
C#のラムダ式に関する質問です
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
「%」を使って、偶数か奇数かを...
-
5
StringReaderのサンプルプログ...
-
6
txtファイルから値の取得方法 ...
-
7
複数の演算子を選択する場合の処理
-
8
VBAでダブルコーテーション入り...
-
9
jsp~jspにhiddenを使って変数...
-
10
VBAでコマンドプロンプトの結果...
-
11
processing エラーで、 "cannot...
-
12
EXCEL/VBA 変数の値をクリップ...
-
13
テキストボックスの値を変数に...
-
14
Accessコンボボックスにレコー...
-
15
[VBS]変数を定数に変換する方法...
-
16
C# String str ...
-
17
int→unsigned int キャスト
-
18
コマンドプロンプト バッチ|結...
-
19
数字の位ごとの値を表示するプ...
-
20
フォームを開くときに、コンボ...
おすすめ情報
公式facebook
公式twitter
ありがとうございます。srの参照文字列が2行目のdataにどう入るのかイメージできません。
2行目はあくまでも配列の箱を用意しているだけに考えてしまうのですが。