Java基础
宇哥996
Java全栈技术分享,大厂内推面试题,jvm,juc,多线程,高并发,框架spring全家桶,flink,分布式组件,中间件,数据库,运维docker,k8s等.内功修炼设计模式,算法,网络,操作系统.前端技术js,Vue等.满满技术干货.
展开
-
String StringBuffer StringBuilder之间的区别
String:给String赋值,会在常量池中查找是否有相同的字符串常量,如果有则返回栈中的引用,如果没有则创建常量返回引用.new String()除了在栈和常量池中创建对象之外,同时会在堆中创建对象.StringBuffer:线程安全的String,jdk1.0之后出现,初始容量为16个字符,源码如下StringBuffer 不会像String一样改变字符串就会重新生成一个对象,而是以连接的方式直接拼接字符串.append(String str)为StringBuff原创 2020-12-19 22:48:29 · 2190 阅读 · 11 评论 -
String被final修饰
源码:为什么String被final修饰?String str = "test";给String变量对象赋值,在常量池生成一个常量,栈中有该常量的引用,如果字符串改变,则会copy一个新的值.原因一: final能够缓存结果,传参时不需要考虑谁会修改它的值,如果是可变类的话,则有可能需要重新拷贝出来一个新值进行传参,这样在性能上就会有损失。原因二: String设计成不可变的另一个原因是安全,当你在调用其他方法时,例如调用一些系统级操作指令之前,可能会有一系列校验,如果是可变类的原创 2020-12-18 17:31:09 · 597 阅读 · 2 评论