String字符串
我们创建变量的时候又两种方法:
第一种:常量式赋值创建,这样创建的变量将会常量化,放在栈内存,比如:
Integer a = 10;
String str = “abc”;
第二种:
new对象进行创建,这种变量不会被常量化,放在堆内存
Integer c=new Integer(10);
String d=new String(“abc”);
栈内存空间较小,但是读取的速度快
堆内存空间较大,但是读取的速度慢
我们用new方法调用类的构造函数创建对象时,java会以为对象很大
而我们创建一个值已经确定的常量的时候,因为确保值不会变动,那么就可以放在栈内存方便调用;
字符串的常用方法 :
方法名称 | 参数列表 | 返回值 |
---|---|---|
subString | 1、int start/2、(int start,int end) | 第一种截取从start位置到最后的字符串,包括start、第二种截取从start到end的左闭右开区间字符串 |
lengh | 无 | 返回字符串长度 |
charAt | int index | 返回字符串内部字符数组在index位置的字符 |
compareTo | String anotherString | 按照字典序来将两个字符串一个个字符进行比较,如果相等返回0,否则返回第一个不相等的字符的ASCII码之差 |
trim | 无 | 去掉字符串前后的空格 |
split | char a | 以a来分割字符串,返回一个字符串数组 |
join | (char a,String[] arr) | 把一个数组中的所有元素进行组合拼接,字符a作为分隔符 |
equals | ||
equalsIgnoreCase | 不区分大小写的比较,返回Boolean | |
toUpperCase | 全部转换为大写,对数字、汉字等不影响 | |
toLowerCase | 小写 | |
contains | CharSequence s | Boolean值,表示字符串中是否包含传入串 |
startsWith | CharSequence s | Boolean值,表示字符串是否以传入串开头 |
endsWith | CharSequence s | Boolean值,表示字符串是否以传入串结尾 |
getBytes | 将字符串转化为Byte[]数组 | |
replace | (CharSequence target, CharSequence replacement) | 将字符串中所有targer子串转化为replacement串,返回值是String类型 |
toCharArray | 无 | 将字符串转化为字符数组返回 |
String.valueOf | 静态方法,参数任意 | 可以将传入的参数转化为字符串 |
synchrnized关键字
表示线程安全,StringBuffer的appen方法用其修饰
但是StringBuilder类的append没有它修饰,表示线程不安全
synchronize关键字修饰的方法可以保证:在多用户同时访问数据的时候数据不会错,而线程不安全的方法可能会出现数据错误
StringBuffer
因为String拼接会产生大量的垃圾自妇产,因此我们需要更为高效的操作字符串的方法
StringBuffer是线程安全的,适合多线程大量对字符串进行修改的情况
常用方法:
方法名称 | 参数列表 | 返回值 |
---|---|---|
append | String str |
StringBuilder
JDK1.4之后提供了StringBuilder,和StringBuffer功能相同
但是线程不安全,适合单线程多次对字符串进行修改的情况