在初始化数组时,Java询问该数组的长度。否则我们会得到编译时错误。
char[] b = new char[3];
这里 3 是该数组的长度 b 。我们可以从 b.length
获取它当我们看到String类的构造函数
时 public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
String构造函数中的原始参数来自哪里?怎么得到它的长度?
字符串长度方法
public int length() {
return value.length;
}
MyQuestion#1
如何在没有初始化数组的情况下获取长度(因为构造函数中没有数组初始化)?
MyQuestion#2
String s = new String("MyString");
在上面一行中,我正在为String
类创建实例,当我检查String
类的构造函数时,我遇到了以下构造函数的代码
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
我怀疑是在构造函数中如何将String类本身作为参数?从哪里加载?
答案 0 :(得分:1)
以下语句在“String literal”中构造String
实例s
,在本例中为"MyString"
String s = new String("MyString");
等同于
,不太可取String s = "MyString";
根据官方docs
具体关于"MyString"
的长度,编译器在解析源代码时会计算文字中的字符数,并用适当的长度初始化该字符串中的char[]
。然后它会创建一个长度相同的新String s
作为旁注,您可以(出于类似的原因)创建一个数组,而无需自己指定长度。编译器将计算元素的数量并相应地设置长度。例如
char[] b = {'a', 'b', 'c'};
答案 1 :(得分:-2)
Java允许给出编写构造函数或其他方法的相同类对象的参数。
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
String类从散列中获取长度,因为散列有一个唯一的代码,告诉它有多少个字符。