《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
private static void testStringBuilder() {
System.out.println(“--------------testStringBuilder---------------”);
long beginTime = System.currentTimeMillis();
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append(url).append(“uId=”).append(uId).append(“&userName=”).append(userName)
.append(“&userPwd=”).append(userPwd);
String resultStr = resultBuilder.toString();
System.out.println(resultStr);
System.out.println(System.currentTimeMillis() - beginTime);
}
private static void testStringAdd() {
System.out.println(“--------------testStringAdd---------------”);
long beginTime = System.currentTimeMillis();
String resultStr = url + “uId=” + uId + “&userName=” + userName + “&userPwd=” + userPwd;
System.out.println(resultStr);
System.out.println(System.currentTimeMillis() - beginTime);
}
public static void main(String[] args) {
testStringFormat();
testStringBuilder();
testStringAdd();
}
}
效果:
可以看到,单纯一次的拼接下,其实三种方式差异基本可以忽略,没什么区别,时间基本可以忽略不计。
接下来我们在每个方法里面都加入循环,而且加入内存占用计算:
private static void testStringFormatFor() {
System.out.println(“--------------testStringFormatFor---------------”);
Runtime runtime = Runtime.getRuntime();
long memory = runtime.freeMemory();
long beginTime = System.currentTimeMillis();
String resultStr=“”;
for (int i = 0; i <= forTimes; i++) {
resultStr = String.format(“%suId=%s&userName=%s&userPwd=%s”, url, uId, userName, userPwd);
}
System.out.println(System.currentTimeMillis() - beginTime);
System.out.println((memory - runtime.freeMemory()) / 10000 + “W”);
}
private static void testStringBuilderFor() {
System.out.println(“--------------testStringBuilderFor---------------”);
Runtime runtime = Runtime.getRuntime();
long memory = runtime.freeMemory();
long beginTime = System.currentTimeMillis();
StringBuilder resultBuilder = new StringBuilder();
for (int i = 0; i <= forTimes; i++) {
resultBuilder.append(url).append(“uId=”).append(uId).append(“&userName=”).append(userName)
.append(“&userPwd=”).append(userPwd);
}
System.out.println(System.currentTimeMillis() - beginTime);
System.out.println((memory - runtime.freeMemory()) / 10000 + “W”);
}
private static void testStringAddFor() {
System.out.println(“--------------testStringAddFor---------------”);
Runtime runtime = Runtime.getRuntime();
long memory = runtime.freeMemory();
long beginTime = System.currentTimeMillis();
String resultStr =null;
for (int i = 0; i <= forTimes; i++) {
resultStr= url + “uId=” + uId + “&userName=” + userName + “&userPwd=” + userPwd;
}
System.out.println(System.currentTimeMillis() - beginTime);
System.out.println((memory - runtime.freeMemory()) / 10000 + “W”);
}
这里循环的次数是 1万次,这样就初步区别出差异了:
总结
以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!
下面给大家分享下我的面试大全资料
- 第一份是我的后端JAVA面试大全
后端JAVA面试大全
- 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
- 第三份是Spring全家桶资料
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
+JVM+JAVA核心知识整理
- 第三份是Spring全家桶资料
[外链图片转存中…(img-Y7VImh0b-1714432707440)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!