处理String的常用工具函数:
subString(); //前面包含,后面不包含。 (适合大多数API)
trim(); //去掉字符串前面后面的空格
常用的String函数:
通过字符串中特定的符号,将字符串分割为多个字符串数组:
Split(); //分割很严格参数是String
//String s1 = “caihongwang,时彦芳,李梦川”;
//String[] s2 = s1.split(“,”);
将基本数据类型转换为字符串类型:int---------------->String
String str = String.valueOf(1); //将基本数据类型转换为String类型
将字符串类型转换为基本数据类型:String----------------->int
Int a = Interger.parseInt(“1”);
Integer类叫做int类型的包装类,int是基本类型,对应于他的Integer是引用类型。
String常用的函数:
根据String类的API执行线面代码:
String扩展:StringBuffer和StringBuilder
这两个类创建出来的对象是可以改变的,那么什么时候使用他们?
答:当定义出来的字符串变量需要做频繁的更改。
String str = “I”;
Str = str + “like”;
Str = str +”java”;
内存分配图:
因为String,会产生较多的辅助对象 容易浪费内存。
垃圾回收制:将无用的,没有引用的对象进行回收的一种机制,但是内存回收的时候需要耗费一定时间,创建(即内存的分配)也需要一定时间,系统性能降低(代码的执行速度降低),而且为额外对象分配辅助内存,浪费内存。
StringBuilder:
StringBuilder strB = new StringBuilder(); //其实底层创建了一个长度为16字符数组,默认值是0,但是不会让你访问。就算使用strB.length求数组的值也是0. Count表示是实际存啦多少个字符。
当count大于数组的长度时,数组的长度会自动扩充。 数组扩充的算法:原有长度*2+2。
第一种创建方式
StringBuilder sb = new StringBuilder();
第二种创建方式StringBuilder sb = new StringBuilder('I');
JDK = JRE + javac
JRE = JVM(相当于java) + 类库
StringBuilder和StringBuffer在使用上是完全相同,只是底层有点不相同
区别:StringBuilder不支持多线程 非线程安全
单线程(只有main线程)的时候使用StringBuilder的效率比较高
StringBuffer 支持多线程 线程安全
面试题1:String ,StringBuilder和StringBuffer的区别(和如何使用)?
String类创建的对象,是字符串常量,对象一旦创建,其值就不可以改变,但是左边是引用,右边才是对象。
StringBuilder和StringBuffer类创建的对象,是字符串变量,对象一旦被创建,其值是可以被改变。
如果字符串的值需要经常改变,就在StringBuffer和StringBuilder中二选一。如果是在单线程中最好选择StringBuilder,多线程就选择StringBuffer。
面试题2: StringBuilder对String + 的优化。
String s1 = “I”;
S1 = s1 + “asd”;
S1 = s1 + “asdf”;
在编译时已经对String + 进行啦优化,会将String类型弄成StringBuffer然后最后将它变为String类型。仅仅是对一行代码String + 多个字符串进行优化。单独分开的话,没有什么明显的效果。