System.out.print()中java中的“+”拼接操作是否耗内存?
Does "+" concatenation operation in java in System.out.print() consume memory?
我对 Java 中 String 和 String Builder 的使用有疑问。
我正在使用 Java 1.8
版本一:
System.out.println("ServerSocketTimeOut = " + serversocketTimeout + " ReadTimeOut = " + readTimeout + " SleepDelay =" + sleepDelay);
版本二:-
StringBuilder viewString= new StringBuilder("ServerSocketTimeOut = ");
viewString.append(serversocketTimeout).append(" ReadTimeOut = ")
.append(readTimeout).append("SleepDelay =").append(sleepDelay)
由于 StringBuilder 是可变的,我能否在内存方面获得任何性能?
Version_1 对比 Version_2 ??
在 java 1.6+ 中,优化器可能会使您的两个版本的性能相等。
但请记住,在更复杂的串联中,实际上使用 StringBuilder 可以获得更好的性能。
(例如阅读 Java: String concat vs StringBuilder - optimised, so what should I do? )
如果我是你,我会考虑过多地委托给一些带参数的日志记录框架,(例如阅读 )
这里有一个可能的简单例子"version 3"
LOGGER.info("ServerSocketTimeOut = {} ReadTimeOut = {} SleepDelay = {}", serversocketTimeout, readTimeout, sleepDelay);
我对 Java 中 String 和 String Builder 的使用有疑问。 我正在使用 Java 1.8
版本一:
System.out.println("ServerSocketTimeOut = " + serversocketTimeout + " ReadTimeOut = " + readTimeout + " SleepDelay =" + sleepDelay);
版本二:-
StringBuilder viewString= new StringBuilder("ServerSocketTimeOut = ");
viewString.append(serversocketTimeout).append(" ReadTimeOut = ")
.append(readTimeout).append("SleepDelay =").append(sleepDelay)
由于 StringBuilder 是可变的,我能否在内存方面获得任何性能?
Version_1 对比 Version_2 ??
在 java 1.6+ 中,优化器可能会使您的两个版本的性能相等。
但请记住,在更复杂的串联中,实际上使用 StringBuilder 可以获得更好的性能。 (例如阅读 Java: String concat vs StringBuilder - optimised, so what should I do? )
如果我是你,我会考虑过多地委托给一些带参数的日志记录框架,(例如阅读
这里有一个可能的简单例子"version 3"
LOGGER.info("ServerSocketTimeOut = {} ReadTimeOut = {} SleepDelay = {}", serversocketTimeout, readTimeout, sleepDelay);