- Java.lang 包类
- Java.lang - 首页
- Java.lang - Boolean
- Java.lang - Byte
- Java.lang - Character
- Java.lang - Character.Subset
- Java.lang - Character.UnicodeBlock
- Java.lang - Class
- Java.lang - ClassLoader
- Java.lang - Compiler
- Java.lang - Double
- Java.lang - Enum
- Java.lang - Float
- Java.lang - InheritableThreadLocal
- Java.lang - Integer
- Java.lang - Long
- Java.lang - Math
- Java.lang - Number
- Java.lang - Object
- Java.lang - Package
- Java.lang - Process
- Java.lang - ProcessBuilder
- Java.lang - Runtime
- Java.lang - RuntimePermission
- Java.lang - SecurityManager
- Java.lang - Short
- Java.lang - StackTraceElement
- Java.lang - StrictMath
- Java.lang - String
- Java.lang - StringBuffer
- Java.lang - StringBuilder
- Java.lang - System
- Java.lang - Thread
- Java.lang - ThreadGroup
- Java.lang - ThreadLocal
- Java.lang - Throwable
- Java.lang - Void
- Java.lang 包其他
- Java.lang - 接口
- Java.lang - 错误
- Java.lang - 异常
- Java.lang 包有用资源
- Java.lang - 有用资源
- Java.lang - 讨论
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
广告