1,子类有StringBuffer和StringBuilder
2, 如果value需要扩容。那么会调用expandCapacity,放大的倍数为
int newCapacity =
(value.length + 1) * 2;
再这里做了一个判断。就是newCapacity < 0 时,
newCapacity =
Integer.MAX_VALUE;
如果Integer.MAX_VALUE+1 会循环到最小值,负数,估计就是这里用的。所以设为最大值
3,数组Value
在这个可变的字符串中,会增加长度的方法比如append和insert方法时,都会判断数组的长度。是否满足需求。如果不满足,则会扩充数组。而扩充数组本质上来说是创建新的数组,然后再复制。换句话说,如果你扩容的频率太快,也就会造成这样的复制过程太多。就会造成不必要的性能浪费。
其实可通过ensureCapacity或者构造函数来解决。
其两个字类,count的默认值都是16。如果是String类型。那么就是String.size()+16
4,
/**
* 获得数字位数的函数
*/
@Test
public void testPosition(){
int i = 32;
System.out.println(this.stringSizeOfInt(i));
}
final private static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
99999999, 999999999, Integer.MAX_VALUE };
// Requires positive x
private int stringSizeOfInt(int x) {
for (int i=0; ; i++){
if (x <= sizeTable[i]){
return i+1;
}
}
}
5, trimToSize, 其实我想不到有什么情况可能要使用这种情况。因为要出现trim的情况。必然是
Count> value.size()。但是通过这个类的代码,没有发现可能情况。也许是具体的实现类吧。其实这里只是mark一下。
6,String中的Substring的内存泄露依然存在。
分享到:
相关推荐
maven-resources-production java.lang.NegativeArraySizeException java.lang.NegativeArraySizeException 问题解决
java.lang.NoSuchFieldError: Companion 问题的解决方案
"Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...
idea启动项目报错 java.lang.NegativeArraySizeException解决方法
标题 "java.lang.Exception: java.lang.IllegalArgumentException: firstMovedIndex, lastMove" 描述了一个Java编程中的异常情况。这个异常通常发生在尝试执行一个不合法的操作时,例如数组或集合操作超出了其边界。...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...
Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...
2. Java代码导致错误的解决:重点排查以下几点: 1) 检查代码中是否有死循环或递归调用。 2) 检查是否有大循环重复产生新对象实体。 3) 检查对数据库查询中,是否有一次获得全部数据的查询。 4) 检查List、MAP等...
在Java编程中,`java.lang.StackOverflowError` 是一个常见的运行时异常,它通常发生在程序执行过程中,当Java虚拟机(JVM)的调用栈溢出时。调用栈是每个线程用来存储方法调用信息的数据结构,当递归调用过深或者...
Java中的`java.lang.UnsatisfiedLinkError`是一个常见的运行时异常,通常出现在Java试图加载本地(C或C++)库但找不到相应的库文件时。这个错误可能是由于多种原因引起的,如库路径设置不正确、库文件不存在或者版本...
解决 java.lang.NoSuchFieldError: STRING at org.jbpm.identity.hibernate.PermissionUserType. 不用jbpm的jbpm-identity.jar 用这个就好
解决 java.lang.RuntimeException: Could not generate DH keypair异常处理。 bcprov-ext-jdk15on-1.60、bcprov-jdk15on-1.60两个包放到jre下的$JAVA_HOME/jre/lib/ext的路径下,然后配置$JAVA_HOME/jre/lib/...
当出现`java.lang.UnsupportedClassVersionError`错误时,通常是因为编译Java源代码所使用的JDK版本与目标系统上的JRE版本不兼容。例如,在上述案例中,项目部署时遇到了以下异常: ```log 2019-03-1823:19:27[org....
java.lang.NoClassDefFoundError: de/javakaffee/kryoserializers/CurrencySerializer
在Java编程中,`java.lang.IllegalArgumentException` 是一个标准的运行时异常,它通常表示一个方法接收到的参数值不在预期范围内或者不合法。当尝试将一个无法转换为日期的对象格式化时,就会抛出"Cannot format ...
在Java编程中,`java.lang.NumberFormatException`是一个常见的运行时异常,它通常发生在尝试将一个字符串转换为数值类型(如int、long、float或double)时,但该字符串无法被解析为有效的数值。"For input string: ...
### java.lang.UnsupportedClassVersionError问题的解决方法 在开发Java应用程序的过程中,经常会遇到与JDK版本不兼容的问题,其中一种常见的异常就是`java.lang.UnsupportedClassVersionError`。该错误通常发生在...