簡體   English   中英

在Java中,字符串是字符數組嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM