软件开发合同样本,郴州网站seo优化,网站建设电话销售说不需要,兰州seo网站排名号详解#xff1a; 1 左右两边是数值型#xff0c;做加法运算 2 有一边是字符串#xff0c;则拼接 3 两个字符串相加与两个字符相加截然不同 数据库性别字段 到底用字符#xff0c;还是字符串需要考量 注意运算顺序#xff1a;从左到右运…号详解 1 左右两边是数值型做加法运算 2 有一边是字符串则拼接 3 两个字符串相加与两个字符相加截然不同 数据库性别字段 到底用字符还是字符串需要考量 注意运算顺序从左到右运算
字符串拼接的底层逻辑 前置知识Java有字符串常量池的凡是直接出来的字符串对象不是new的都在常量池中 全是常量拼接有编译器的常量优化相当于直接拼接没有运算的 有变量参与 Java8前底层新new一个空stringbuilder对象然后将两边一个个放入拼接调用append方法每放入一 个就是一个新的stringbuilder对象最后转为string对象toString方法底层就是new String效率低 java8后jvm会估算拼接后的总长度会先new一个空的stringbuilder对象然后将两边的字符串字符放入这个对象的底层数组中不调用append方法直接放入底层数组最后转为string对象toString方法底层就是new String效率稍微高点
注意1如果是有大量的字符串拼接还是用stringbuilder好不要用号否则会创建很多对象很多stringbuilder对象和中间过程的string对象影响效率
注意2字符串常量池的对象和new出来的对象物理地址是不同的判断出来也是false-》面试题 编译器的常量优化如果字符串常量池有会直接取判断的是true
注意3stringbuilder底层 默认创建一个长度16的字节数组 添加内容长度字符串长度小于16直接存入 大于16数组会扩容为 原长度*22添加一次只会扩容一次 如果扩容后的长度还不够先算长度还每扩容发现不够会按实际长度扩容