[英]In Java, is a String an array of chars?
我想知道一個String
是否是一個集合。 我讀過一些,但仍然很困惑。
string是String
類的對象,它也不是Collection
。 它在char數組的頂部實現。 您可以在下面的代碼片段中看到它:
public final class String implements
java.io.Serializable, Comparable<String>, CharSequence
{
private final char value[];
字符串是表示字符序列的不可變對象 ( CharSequence
是String實現的接口之一)。 與char數組和char集合的主要區別:無法修改字符串,不能(忽略反射)添加/刪除/替換字符。
在內部,它們由具有偏移量和長度的char數組 表示 (這允許使用相同的char數組創建輕量級子字符串)。
例如:['F','o','o','H','e','l','l','o','','W','o','r', 'l','d'],offset = 3,count = 5 = "Hello"
。
不,它不是集合,因為它沒有實現Collection<E>
接口。
從概念上講,它是一個不可變的字符序列(並實現了CharSequence
接口)。
在內部, String
類可能使用一個char數組,盡管我很確定規范沒有強制要求。
不,字符串是String類的對象
String類表示字符串。 Java程序中的所有字符串文字,例如“ abc”,都作為此類的實例實現。
字符串表示采用UTF-16格式的字符串,其中補充字符由代理對表示 (有關更多信息,請參見Character類中的Unicode字符表示部分)。 索引值指的是字符代碼單位,因此補充字符在String中使用兩個位置。
不,它不是數組或集合。 但是,如果您需要一個char數組並且有一個String,即String.toCharArray() ,則有一個便捷的方法。 你可以這樣使用
// Prints the String "Hello, World!" as a char[].
System.out.println(Arrays.toString("Hello, World!".toCharArray()));
不, String
是字符的不可變字符串,並且該類直接擴展Object
且不實現任何Collection
接口。 確實,這是基本答案。
但是,在運行時的幕后有很多事情要做-JVM擁有一整套緩存字符串,並且以其最原始的表示形式,是的,String本質上是一個字符數組(這意味着它是一堆內存)指向字符表示的地址)。 但是,一旦您將String
的定義定義為一個類 ,就可以繼續下去,直到您發現所談論的是1和0的有組織的組合為止。
我在這里猜測,但我想您是在提出問題,因為您正在研究此問題,而一位講師說了一些有關String
是字符數組的問題。 盡管從技術上講是正確的,但這確實令人困惑,因為這兩個概念存在於完全不同的抽象級別。
String
類只是允許您創建字符串對象的類。 像所有類一樣,它可以通過自己的方法輕松使用這些對象。 char數組是一個字符串,但是其方法是相對於數組或數組元素的。
因此,例如,如果您要在String類的字符串中查找字符的位置,則可以使用一種稱為IndexOf的方法。 但是,如果要在char數組中查找字符,則必須使用循環手動進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.