Java StringBuilder capacity() 方法



Java 的 StringBuilder capacity() 方法返回當前容量。容量定義為可用於新插入字元的儲存量,超過此容量將發生分配。

簡單來說,空 StringBuilder 的預設儲存容量為 16 個字元。因此,當某些字元已插入時,該方法將返回現有字元數 + 16 作為輸出。因此,它超出了分配限制。

容量與字串的長度不同,因為長度僅計算字串中存在的字元數,而容量則計算 StringBuilder 目前可以容納的最大字元數。

語法

以下是 Java StringBuilder capacity() 方法的語法

public int capacity()

引數

此方法不接受任何引數。

返回值

此方法返回當前容量。

示例:獲取 StringBuilder 的容量

如果我們在任何 StringBuilder 物件上呼叫該方法,返回值將是當前容量。

以下示例演示了 Java StringBuilder capacity() 方法的使用。

package com.tutorialspoint;

public class StringBuilderDemo {

   public static void main(String[] args) {

      StringBuilder buff = new StringBuilder("TutorialsPoint");
   
      // returns the current capacity of the String buffer i.e. 16 + 14
      System.out.println("capacity = " + buff.capacity());
    
      buff = new StringBuilder(" ");
      
      // returns the current capacity of the String buffer i.e. 16 + 1
      System.out.println("capacity = " + buff.capacity());
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

capacity = 30
capacity = 17

示例:使用 null 時遇到異常

如果我們將 null 值作為輸入傳遞給 StringBuilder 物件,則該方法會丟擲 NullPointerException。

在以下程式中,我們宣告一個 StringBuilder 物件併為其分配 null 值。

public class StringBuilderCapacity {
   public static void main(String args[]) {

      StringBuilder cap = new StringBuilder(null);

      System.out.println("The capacity: " + cap.capacity());
   }
}

異常

如果我們嘗試編譯並執行上述程式,則該方法會丟擲 NullPointer 異常,而不是輸出:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
        at java.base/java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:117)
        at java.base/java.lang.StringBuilder.<init>(StringBuilder.java:158)
        at StringBuilderCapacity.main(StringBuilderCapacity.java:6)

示例:檢查 StringBuilder 的預設容量

當我們不向 StringBuilder 物件傳遞任何輸入時,它被視為一個空 StringBuilder。在這種情況下,該方法將返回預設容量值。

在以下示例中,我們宣告一個 StringBuilder 物件,並且沒有為其分配任何輸入。因此,StringBuilder 為空。然後,我們在此 StringBuilder 上呼叫該方法以嘗試獲取容量。

public class StringBuilderCapacity {
   public static void main(String args[]) {

      // declare an empty StringBuilder
      StringBuilder cap = new StringBuilder();

      //print the default capacity
      System.out.println("The capacity: " + cap.capacity());
   }
}

輸出

讓我們編譯並執行上述程式,輸出如下所示:

The capacity: 16
java_lang_stringbuilder.htm
廣告