包阅导读总结
1. `Java`、`字符串拼接`、`技术演进`、`阿里巴巴`、`StringConcat`
2. 这段文本主要介绍了 Java 字符串拼接技术的演进,涉及到阿里巴巴的相关贡献,展示了`StringConcat`类中的一些方法实现。
3.
– `StringConcat`类继承自`java.lang.StringConcatHelper.StringConcatBase`
– 构造函数`StringConcat(String[] constants)`用于初始化
– `concat`方法进行字符串拼接操作
– 先对一些参数转换为字符串
– 计算编码和长度
– 生成新的数组和进行前置操作
– 最终返回新的字符串
– `length`方法计算拼接后的长度
– `coder`方法处理编码
– `prepend`方法进行前置操作
思维导图:
文章地址:https://mp.weixin.qq.com/s/bWOL_aN94qqiJV6SOlKcYg
文章来源:mp.weixin.qq.com
作者:高铁
发布时间:2024/8/30 0:17
语言:中文
总字数:5761字
预计阅读时间:24分钟
评分:83分
标签:Java,字符串拼接,JDK 9+,阿里巴巴,性能优化
以下为原文内容
本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com
import static java.lang.StringConcatHelper.newArrayWithSuffix;
import static java.lang.StringConcatHelper.prepend;
import static java.lang.StringConcatHelper.stringCoder;
import static java.lang.StringConcatHelper.stringSize;
class StringConcat extends java.lang.StringConcatHelper.StringConcatBase {
StringConcat(String[] constants) {
super(constants);
}
String concat(int arg0, long arg1, boolean arg2, char arg3, String arg4,
float arg5, double arg6, Object arg7
) {
String str4 = stringOf(arg4);
String str5 = stringOf(arg5);
String str6 = stringOf(arg6);
String str7 = stringOf(arg7);
int coder = coder(this.coder, arg0, arg1, arg2, arg3, str4, str5, str6, str7);
int length = length(this.length, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
String[] constants = this.constants;
byte[] buf = newArrayWithSuffix(constants[paramCount], length. coder);
prepend(length, coder, buf, constants, arg0, arg1, arg2, arg3, str4, str5, str6, str7);
return new String(buf, coder);
}
static int length(int length, int arg0, long arg1, boolean arg2, char arg3,
String arg4, String arg5, String arg6, String arg7) {
return stringSize(stringSize(stringSize(stringSize(stringSize(stringSize(stringSize(stringSize(
length, arg0), arg1), arg2), arg3), arg4), arg5), arg6), arg7);
}
static int cocder(int coder, char arg3, String str4, String str5, String str6, String str7) {
return coder | stringCoder(arg3) | str4.coder() | str5.coder() | str6.coder() | str7.coder();
}
static int prepend(int length, int coder, byte[] buf, String[] constants,
int arg0, long arg1, boolean arg2, char arg3,
String str4, String str5, String str6, String str7) {
return prepend(prepend(prepend(prepend(
prepend(apppend(prepend(prepend(length,
buf, str7, constant[7]), buf, str6, constant[6]),
buf, str5, constant[5]), buf, str4, constant[4]),
buf, arg3, constant[3]), buf, arg2, constant[2]),
buf, arg1, constant[1]), buf, arg0, constant[0]);
}
}