Java StringBuffer capacity() 方法



Java 的 StringBuffer capacity() 方法返回当前容量。容量定义为可用于新插入字符的存储空间量,超过此容量将发生分配。

简单来说,空 StringBuffer 的默认存储容量为 16 个字符。因此,当已插入某些字符时,该方法返回字符数量 + 16 作为输出。因此,它超出了分配限制。

容量与字符串的长度不同,因为长度仅计算字符串中存在的字符数,而容量计算 StringBuffer 目前可以容纳的最大字符数。

语法

以下是 Java StringBuffer capacity() 方法的语法

public int capacity()

参数

此方法不接受任何参数。

返回值

此方法返回当前容量。

示例:获取 StringBuffer 的容量

如果我们在任何 StringBuffer 对象上调用该方法,返回值将是当前容量。

以下示例显示了 Java StringBuffer capacity() 方法的用法。

package com.tutorialspoint;

public class StringBufferDemo {

   public static void main(String[] args) {

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

输出

让我们编译并运行上述程序,这将产生以下结果:

capacity = 30
capacity = 17

示例:使用 null 时遇到异常

如果我们将 null 值作为输入传递给 StringBuffer 对象,则该方法会抛出 NullPointerException。

在以下程序中,我们声明一个 StringBuffer 对象并为其分配 null 值。

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

      StringBuffer cap = new StringBuffer(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.StringBuffer.<init>(StringBuffer.java:158)
        at StringBufferCapacity.main(StringBufferCapacity.java:6)

示例:检查 StringBuffer 的默认容量

当我们不向 StringBuffer 对象传递任何输入时,它被视为一个空 StringBuffer。在这种情况下,该方法返回默认容量值。

在以下示例中,我们声明一个 StringBuffer 对象,并且没有为其分配任何输入。因此,StringBuffer 为空。然后,我们在此 StringBuffer 上调用该方法以尝试获取容量。

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

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

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

输出

让我们编译并运行上述程序,输出如下所示:

The capacity: 16
java_lang_stringbuffer.htm
广告

© . All rights reserved.