###調べていたこと
OCJP Goldの資格勉強をしている中で、{ equals() }メソッドがどのような動作をしているのか気になり、java.lang.String内を見てみることにしました。
Java
1public boolean equals(Object anObject) { 2 if (this == anObject) { 3 return true; 4 } 5 if (anObject instanceof String) { 6 String anotherString = (String)anObject; 7 int n = value.length; 8 if (n == anotherString.value.length) { 9 char v1[] = value; 10 char v2[] = anotherString.value; 11 int i = 0; 12 while (n-- != 0) { 13 if (v1[i] != v2[i]) 14 return false; 15 i++; 16 } 17 return true; 18 } 19 } 20 return false; 21}
この中で突然出てきた{ values.length }の部分ですが、恐らくメンバ変数なのかなと変数宣言の部分を見ていたところ、以下の記載がありました。
Java
1 private final char value[]; 2 3// 中略 4 5public String() { 6 this.value = "".value; 7}
コンストラクタにて行われていた、{ "".value }ですが、初めてこのような記載方法を見ました。
- { value[] }はchar型配列なので、{ this.value }に入れるのはダブルクォーテーションではなくシングルクォーテーションで囲んだ文字列ではないのか?
- Stringクラスの定義の部分なので、そもそもダブルクォーテーションを扱った文字列は扱えないのではないか?
- { "".value }とはどのような処理を行っているのか?
上記の3つがわからず、検索しようと苦戦してものの、記号が含まれているためGoogleで探すのが困難だったため、こちらで質問させていただきます。
駄文で申し訳ございません、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/10 08:26
2018/05/10 08:55
2018/05/10 09:07
2018/05/10 09:13
2018/05/10 09:14
2018/05/10 09:16
2018/05/10 09:50 編集
退会済みユーザー
2018/05/11 01:18
2018/05/11 02:47