有没有办法在不分配内存的情况下连接两个字符串(不是最终的)?
例如,我有这两个字符串:
final String SCORE_TEXT = "SCORE: ";
String score = "1000"; //or int score = 1000;
当我连接这两个字符串时,会创建一个新的 String
对象。
font.drawMultiLine(batch, SCORE_TEXT + score, 50f, 670f);//this creates new string each time
由于这是在主游戏循环中完成的(一秒内执行约 60 次),因此有很多分配。
我可以在没有分配的情况下以某种方式做到这一点吗?
最佳答案
显而易见的解决方案是不在每一帧上重新创建输出 String
,而是仅在它发生变化时才重新创建。
实现此目的的一种方法是将其存储在主循环之外的某个位置,并在特定事件发生时更新它,即“分数”实际发生变化。在您的主循环中,您只需使用预先创建的 String
。
如果您不能/或不想使用这种基于事件的方法,您可以始终存储“先前”分数,并且仅在先前分数与当前分数不同时才连接一个新字符串。
根据您的分数实际变化的频率,这应该会减少大多数重新分配。当然,除非分数以 60 fps 的速度变化,在这种情况下,这整点是完全无声的,因为没有人能够阅读您正在打印的文本。
关于java - java中没有分配的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502871/