java silver 起動パラメーターの指定
Q&A
Closed
質問したいことは
java silver 11 の学習をしています。
起動パラメーターに関する問題で、解説を読んでもわからないところを質問させていただきます。
問題
(実行コマンド)
> java Sample a ¥" a¥" "a "b c
1. public class Sample {
2. public static void main(String... args){
3. System.out.println(args.length);
4. }
5. }
問題
Sampleクラスを実行した結果は?
選択肢
A. 4が表示される
B. 5が表示される
C. 6が表示される
D. 7が表示される
解答
B(5が表示される)
どこが分からないのか
(表示が5と分かったうえで)分解してみる。
① a →単純に文字
② " →エスケープされたダブルクォーテーション
③ a" →文字とエスケープされたダブルクォーテーション
④ ここがわからない
⑤ c →前の文字bとの間にスペースがあるのでbの次の文字がくる
解説によると
④の部分が「a b」になるということです。
「4つ目のダブルクォーテーションが「a 」というスペースを含む文字列と「b」という文字列が連結されて1つの文字列になっている」と説明がありました。
自分はどう考えているか
起動パラメータの
"a "b
の部分ですが、
● aの前のダブルクォーテーションはエスケープしていないので
データとして扱われない
● 「a "b」の部分は、bの前のダブルクォーテーションは
エスケープされていないからデータとして扱われない
● 「a b」と同じ意味になる?から、
a
b
とここで一回区切りが入ってしまう
でもそうすると表示は6になるので違う、、、
なぜ④の部分が「a b」で空白を含む1つの文字列になるのだろう。。。
以下のことは理解しているつもりです
・スペースで区切って列挙する
・スペースを含む文字列を渡すにはダブルクォーテーションで括る
・ダブルクォーテーションを文字として使うには「¥"」とする
・ダブルクォーテーションはエスケープしない限りデータとして扱われない
教えてくださいm(_ _)m
解説文をみて、なるほど!となれません。
段階を踏んで教えてくださる方がいましたらサポートを
お願いしたいです。
よろしくお願いいたします。