程序人生——Java中字符串利用的发起
https://i-blog.csdnimg.cn/blog_migrate/594dc1eade291a3d6706be94cc80bffd.png引出
程序人生——Java中字符串利用的发起
字符串
发起52:推荐利用String直接量赋值
[*]一般对象都是通过new关键字天生,String还有第二种天生方式,即直接声明方式,如String str = “a”;String中尽力推荐利用直接声明的方式,不发起利用new String(“a”)的方式赋值。**原因:直接声明方式:**创建一个字符串对象时,首先检查字符串常量池中是否有字面值相等的字符串,假如有,则不再创建,直接返回池中引用,若没有则创建,然后放到池中,并返回新建对象的引用。**利用new String()方式:**直接声明一个String对象是不检查字符串常量池的,也不会吧对象放到池中。String的intern方法会检查当前的对象在对象池中是否有字面值雷同的引用对象,有则返回池中对象,没有则放置到对象池中,并返回当前对象
发起53:注意方法中传递的参数要求
[*]replaceAll方法传递的第一个参数是正则表达式
发起54:精确利用String、StringBuffer、StringBuilder
[*]String利用“+”举行字符串毗连,之前毗连之后会产生一个新的对象,所以会不绝的创建新对象,优化之后与StringBuilder和StringBuffer采用同样的append方法举行毗连,但是每一次字符串拼接都会调用一次toString方法,所以会很耗时。StringBuffer与StringBuilder基本雷同,只是一个字符数组的在扩容而已,都是可变字符序列,不同点是:StringBuffer是线程安全的,StringBuilder是线程不安全的
发起55:注意字符串的位置
[*]在“+”表达式中,String字符串具有最高优先级)(Java对加号“+”的处理机制:在利用加号举行盘算的表达式中,只要碰到String字符串,则全部的数据都会转换为String类型举行拼接,假如是原始数据,则直接拼接,假如是对象,则调用toString方法的返回值然后拼接
发起56:自由选择字符串拼接方式
[*]字符串拼接有三种方法:加号、concat方法及StringBuilder(或StringBuffer)的append方法。字符串拼接性能中,StringBuilder的append方法最快,concat方法次之,加号最慢。
原因:
[*]1、“+”方法拼接字符串:固然编译器对字符串的加号做了优化,利用StringBuidler的append方法举行追加,但是与纯粹利用StringBuilder的append方法不同:一是每次循环都会创建一个StringBuilder对象,二是每次执行完都要调用toString方法将其准换为字符串—toString方法最耗时;
[*]2、concat方法拼接字符串:就是一个数组拷贝,但是每次的concat操纵都会新创建一个String对象,这就是concat速度慢下来的真正原因;
[*]3、append方法拼接字符串:StringBuidler的append方法直接由父类AbstractStringBuilder实现,整个append方法都在做字符数组处理,没有新建任何对象,所以速度快
发起57:推荐在复杂字符串操纵中利用正则表达式
[*]正则表达式是恶魔,威力强大,但难以控制
发起58:猛烈发起利用UTF编码
[*]一个体系利用统一的编码
发起59:对字符串排序持一种宽容的心态
[*]假如排序不是一个关键算法,利用Collator类即可。重要针对于中文
深入认识JVM
JVM内存分配,类加载
Java进阶(1)——JVM的内存分配 & 反射Class类的类对象 & 创建对象的几种方式 & 类加载(何时进入内存JVM)& 注解 & 反射+注解的案例
https://i-blog.csdnimg.cn/blog_migrate/9d86e3e499c9402c0f39ceb60d0babc4.png
创建对象的4种方法总结
Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化
https://i-blog.csdnimg.cn/blog_migrate/7cb8f7f19bfe1e2d7778aa3a1b112761.png
垃圾回收GC
https://i-blog.csdnimg.cn/blog_migrate/7a6a26a970996afb73168ac7c45be06b.png
Java进阶(垃圾回收GC)——理论篇:JVM内存模型 & 垃圾回收定位扫除算法 & JVM中的垃圾回收器
简介:本篇博客先容JVM的内存模型,对比了1.7和1.8的内存模型的变革;先容了垃圾回收的语言发展;阐述了定位垃圾的方法,引用计数法和可达性分析发以及垃圾扫除算法;然后先容了Java中的垃圾回收器,由串行、到并行再到并发,最后到G1的演变;最后给出了垃圾回收器的对比和利用指引。
JVM调优,Arthas利用
[*]Java进阶(JVM调优)——阿里云的Arthas的利用 & 安装和利用 & 死锁查找案例,重新加载案例,慢调用分析
[*]Java进阶(JVM调优)——JVM调优参数 & JDK自带工具利用 & 内存溢出和死锁问题案例 & GC垃圾回收
https://i-blog.csdnimg.cn/blog_migrate/af9ffe6991dd6b43e5873656cab3a11c.png
https://i-blog.csdnimg.cn/blog_migrate/fe07dfd768e7dfbcfef3c96fd4a63c05.png
https://i-blog.csdnimg.cn/blog_migrate/0e888eb85c22c9bd072906aee6bb84c4.png
认识多线程
创建多线程方法+了解线程池
Java进阶(5)——创建多线程的方法extends Thread和implements Runnable的对比 & 线程池及常用的线程池
https://i-blog.csdnimg.cn/blog_migrate/c18f86e823ba5f47065d2ac6a7ad7a61.png
多线程下-1非原子性问题即办理
Java进阶(6)——抢购问题中的数据不安全(非原子性问题)& Java中的synchronize和ReentrantLock锁利用 & 死锁及其产生的条件
https://i-blog.csdnimg.cn/blog_migrate/ebf58c28c7159cc3d3fa105db622f033.png
再论线程,创建、生命周期
Java进阶(再论线程)——线程的4种创建方式 & 线程的生命周期 & 线程的3大特性 & 集合中的线程安全问题
重要内容:
1.线程创建的方式,继续Thread类,实现Runable接口,实现Callable接口,采用线程池;
2.线程生命周期: join():运行结束再下一个, yield():暂时让出cpu的利用权,deamon():保卫线程,最后结束,sleep():假如有锁,不会让出;
3.线程3大特性,原子性,可见性,有序性;
4.list集合中线程安全问题,hash算法问题;
总结
程序人生——Java中字符串利用的发起
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]