我想知道,如果String
是一个集合。我已经阅读过,但仍然很困惑。
答案 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数组中找到一个字符,那么你必须使用循环手动完成它。