扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
PS. 所以以后对引用数据类型,不要用“==”,改用.equals()方法
创新互联公司-专业网站定制、快速模板网站建设、高性价比营山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式营山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖营山地区。费用合理售后完善,十余年实体公司更值得信赖。拼接的时候没有变量,都是字符串,会触发字符串的优化机制,在编译的时候(将.java文件编译为.class文件)就已经是最终的结果了,在执行运行代码(用java命令运行)的时候,也就是运行的最终结果了,即 “a”+“b”+“c”和“abc” 一样,也就是会复用串池中的字符串(若已有“abc”,则“a”+“b”+“c”不会创建新的字符串,而是直接复用“abc”),如图:
拼接的时候有变量参与,在JDK8以前,底层会用StringBuilder,以及它的.append()方法来进行拼接,最后用.toString()方法变回字符串,过程如图:
PS. 有变量参与,会先在堆中new一个StringBuilder对象,而toString()方法返回的字符串也是new出来的,所以也会在堆内存中开辟一块新空间来存放返回的字符串。综上,一个“+”,会创建两个对象。
拼接时有变量参与,从JDK8开始,会先预估拼接后字符串的长度,并创建对应长度的数组,同时,往数组中存入数据,最后把这个数组整体变回字符串,也是new出来的,不受串池管理,如图:
PS. 预估,和创建数组,在创建返回的字符串也需要较多时间,需要较多内存
综上:如果很多字符串变量拼接,不要直接“+”。在底层会创建多个对象,浪费时间,浪费性能。改为采用StringBuilder或StringJoiner来拼接。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流