程序人生——Java中字符串利用的发起

打印 上一主题 下一主题

主题 1029|帖子 1029|积分 3087



  
引出

程序人生——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)& 注解 & 反射+注解的案例

创建对象的4种方法总结

Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化

垃圾回收GC


Java进阶(垃圾回收GC)——理论篇:JVM内存模型 & 垃圾回收定位扫除算法 & JVM中的垃圾回收器
简介:本篇博客先容JVM的内存模型,对比了1.7和1.8的内存模型的变革;先容了垃圾回收的语言发展;阐述了定位垃圾的方法,引用计数法和可达性分析发以及垃圾扫除算法;然后先容了Java中的垃圾回收器,由串行、到并行再到并发,最后到G1的演变;最后给出了垃圾回收器的对比和利用指引。
JVM调优,Arthas利用



  • Java进阶(JVM调优)——阿里云的Arthas的利用 & 安装和利用 & 死锁查找案例,重新加载案例,慢调用分析
  • Java进阶(JVM调优)——JVM调优参数 & JDK自带工具利用 & 内存溢出和死锁问题案例 & GC垃圾回收



认识多线程

创建多线程方法+了解线程池

Java进阶(5)——创建多线程的方法extends Thread和implements Runnable的对比 & 线程池及常用的线程池

多线程下-1非原子性问题即办理

Java进阶(6)——抢购问题中的数据不安全(非原子性问题)& Java中的synchronize和ReentrantLock锁利用 & 死锁及其产生的条件

再论线程,创建、生命周期

Java进阶(再论线程)——线程的4种创建方式 & 线程的生命周期 & 线程的3大特性 & 集合中的线程安全问题
重要内容:
1.线程创建的方式,继续Thread类,实现Runable接口,实现Callable接口,采用线程池;
2.线程生命周期: join():运行结束再下一个, yield():暂时让出cpu的利用权,deamon():保卫线程,最后结束,sleep():假如有锁,不会让出;
3.线程3大特性,原子性,可见性,有序性;
4.list集合中线程安全问题,hash算法问题;

总结

程序人生——Java中字符串利用的发起

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表