Java - 计算字符串长度

时间:2015-12-23 17:09:23

标签: java string char java-native-interface

在初始化数组时,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类本身作为参数?从哪里加载?

2 个答案:

答案 0 :(得分:1)

以下语句在“String literal”中构造String实例s,在本例中为"MyString"

String s = new String("MyString");

等同于

,不太可取
String s = "MyString";

根据官方docs

  1. 字符串文字是对String类实例的引用(§4.3.1,§4.3.3)。
  2. 字符串文字始终引用类String(interning)的相同实例
  3. 具体关于"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类从散列中获取长度,因为散列有一个唯一的代码,告诉它有多少个字符。