Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群25
Java1234官方群25:838462530
     

GIT视频教程(结合github,码云)免费领取

BAT一线大厂笔试面试打包下载

java1234.vip企业级站点全新上线(可以领取站点源码)

SpringBoot打造企业级进销存

Java1234 VIP课程

领取微信扫码登录Java实现视频教程

Java1234至尊VIP(特价活动)
当前位置: 主页 > Java文档 > Java基础相关 >

Java资深开发工程师知识体系 PDF 下载


分享到:
时间:2020-05-27 16:49来源:http://www.java1234.com 作者:小锋  侵权举报
Java资深开发工程师知识体系 PDF 下载
失效链接处理
Java资深开发工程师知识体系  PDF  下载

本站整理下载:
 
相关截图:
 
主要内容:

一、Java基础
最难的是多线程(并发编程,Concurrent)和JVM。
String类为什么是final的。
1、线程安全。
2、支持字符串常量池数据共享。
节省资源,提高效率(因为如果已经存在这个常量便不会再创建,直接拿来用)
字符串相关的类String、StringBuilder、StringBuffer区别
1、线程安全。
String,StringBuffer 是线程安全。
StringBuilder       不是线程安全。
2、底层结构
a、String底层使用了一个不可变的字符数组final char[],是不可变的字符串。
【注:final修饰一个类,这个类不可以被继承,若是修饰一个变量,这个变量被赋值后不可以改变。】
b、StringBuilder和StringBuffer底层是可变的字符数组。
3、字符串拼接效率
StringBuilder  >  StringBuffer  >  String
a、String进行拼接 String = "a"+"b";  //在此创建了三个对象
b、StringBuilder sb = new StringBuilder();sb.append("a").append("b");//仍然还是原来的对象
所以拼接字符串尽量不要用String进行拼接
b、StringBuilder是线程不安全的效率高 
StringBuffer在append方法上增加了sycronized关键字线程锁
4、为什么有时候String 和 StringBuffer 拼接字符串效率接近,甚至String 效率是远要比 StringBuffer 快。
简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
  而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。
某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成,用加号拼接字符串常量, String 效率是远要比 StringBuffer 快的:
 String S1 = “This is only a” + “ simple” + “ test”;
 StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
 其实这是 JVM 的一个把戏,在 JVM 眼里,字符串常量之间的加号直接拿掉拼接,这个
 String S1 = “This is only a” + “ simple” + “test”; 其实就是:
 String S1 = “This is only a simple test”; 所以当然不需要太多的时间了。
但要注意的是,如果字符串是来自另外的 String 对象的话,速度就没那么快了,譬如:
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
这时候 JVM 会规规矩矩的按照原来的方式去做
所以 ,在大部分情况下操作效率  StringBuffer > String。

 
 
------分隔线----------------------------
锋哥公众号


锋哥微信号


关注公众号
回复 666
获取 java
从菜鸡到大神
全套视频教程