在Java中,String是一个字符数组吗?

时间:2013-11-27 16:50:52

标签: java string

我想知道,如果String是一个集合。我已经阅读过,但仍然很困惑。

7 个答案:

答案 0 :(得分:4)

字符串是类String的对象,它也不是Collection。它是在char数组之上实现的。您可以在下面的代码段中看到它:

public final class String implements 
        java.io.Serializable, Comparable<String>, CharSequence
    {           
    private final char value[];

答案 1 :(得分:2)

不,它不是一个集合,因为它没有实现Collection<E>接口。

从概念上讲,它是一个不可变的字符序列(并实现CharSequence接口)。

在内部,String类可能会使用一组字符,但我很确定规范并没有强制要求。

答案 2 :(得分:2)

字符串是表示字符序列的不可变对象CharSequence是String实现的接口之一)。 char数组和chars集合的主要区别:String无法修改,添加/删除/替换字符是不可能的(忽略反射)。

在内部,他们代表字符数组 偏移长度(这允许创建轻量级)子串,使用相同的char数组)。

示例:['F','o','o','H','e','l','l','o','','W','o',' r','l','d'],偏移= 3,计数= 5 = "Hello"

答案 3 :(得分:1)

不,字符串是类String

的对象
  

String类表示字符串。中的所有字符串文字   Java程序,例如“abc”,被实现为此实例   类....

     

String表示UTF-16格式的字符串   补充字符由代理对表示(参见   section字符类中的Unicode字符表示形式   更多信息)。索引值是指char代码单元,所以a   补充字符在字符串中使用两个位置。

答案 4 :(得分:1)

不,它不是数组或集合。但是,如果你需要一个char数组并且你有一个String,那么有一个方便的方法 - 即String.toCharArray();你可以像这样使用它

    // Prints the String "Hello, World!" as a char[].
    System.out.println(Arrays.toString("Hello, World!".toCharArray()));

答案 5 :(得分:1)

不,String是不可变的字符串,并且该类直接扩展Object并且不实现任何Collection接口。真的,这是基本的答案。

然而,在运行时中有很多内容 - 有一整套由JVM保存的缓存字符串,并且在最原始的表示中,是的,String基本上是一个字符数组(意思是它是一个一堆内存地址指向字符的表示)。尽管如此,一旦你低于String的定义,因为它定义了作为一个类,你可以继续前进,直到你谈到你只是在谈论有组织的组合和零。

我猜这里,但我想你提出了这个问题,因为你正在研究这个问题,一位教练说了一些关于String是一系列角色的事情。虽然技术上是正确的,但这确实令人困惑,因为这两个概念存在于完全不同的抽象层次。

答案 6 :(得分:0)

String类只是一个允许您创建字符串对象的类。像所有类一样,使用其拥有方法可以轻松使用这些对象。 char数组是一个字符串,但它的方法是相对于数组或数组的元素。

因此,例如,如果要在类String的字符串中查找carácter的位置,则使用名为IndexOf的方法。 但是如果你想在char数组中找到一个字符,那么你必须使用循环手动完成它。