Java中的String

1.String是不可变对象
1.java.lang.String 使用了final修饰,不能被继承;
2.对象创建后,内容是不可改变的,一旦改变会创建新对象


String常量池
字面量 直接量
* 编译器在编译该程序时若发现,一个表达式两边的内容都是确定值时,会直接进行计算,并将结果生成到字节码文件.


字符串支持String

内存编码及长度

                char中文的范围:\u4e00--- \u9fa5: 编码从4e00到9fa5

String在内存中采用Unicode编码
int length() 字符串的该方法用来获取字符串中的字符个数,不管中文还是英文都是一个。

1)查找字符(串):
int indexOf(int ch) :查看给定的字符在当前字符串中的位置(第一次出现),若不包含, 返回-1
        int indexOf(int ch, int fromIndex) : 从指定的索引开始搜索 “第一次”出现指定字符处的索引;


int indexOf(String str): 返回指定子字符串在此字符串中第一次出现处的索引。

int indexOf(String str,int start) 从指定的索引开始搜索

类似还有lastIndexOf(..)

    查看给定位置 对应字符    char charAt(int index)

2)截取字符串:
        String substring(int start,int end)方法用于截取字符串中的部分内容.

在java的api中有一个特点,凡是使用2个数字表示范围,通常都是含头不含尾.

        String substring(int start) 若要截取到末尾,则不写end

3)拆分:

        String[] split(String regex):将当前字符串中凡是满足正则表达式的部分就拆开。取出两边的内容。
若拆分的内容在字符串末尾连续匹配,是不会拆出空字符串的。其他位置的话中间都会拆出一个空字符串。
用户上传的图片重命名:
String name = "1.jpg";
String[] data = name.split("\\.");
String newname = System.currentTimeMillis()+"";//得到当前系统时间并转换为字符串
newname = newname+"."+data[1];//加上截取的后缀
System.out.println(newname);

String trim():去除当前字符串中两边的空白String trim = str.trim(); 
4)判断:
boolean startsWith(String str):判断当前字符串是否以给定的字符串开始
        boolean endsWith(String str):判断域名是否以:http://开头,判断文件格式.jpg, .gif, .png

5)替换:

        String toUpperCase() :将字符串中的英文部分转换为大写或小写,可以用于忽略大小写的验证,例如验证码

String toLowerCase()

String replaceAll(String regex,String str):将当前字符串中满足给定的正则表达式的部分替换为给定的字符串。

6)其他:

static String valueOf():静态方法,类名.valueOf(参数).区别普通方法 对象.dosome();
字符串提供了若干重载的valueOf方法,主要作用是将基本类型,字符数组转换为字符串.

        reverse()反转




2.String Builder:
java提供了一个类StringBuilder,专门负责修改字符串内容
并且由于其内部维护一个可变长的字符数组,所以不会出现内存消耗问题.
insert插入 只要不是在字符串末尾追加,都算是插入
append(String str)
replace(int start, int end, String str)
delete(int start, int end)

void setLength(0); //清空缓存
3)清除内容中的空格:
str.replace(" ", ""); 去掉所有空格,包括首尾、中间  
replaceAll(" +",""); 去掉所有空格  //正则空格字符
replaceAll("\\s*", "") 可以替换大部分空白字符, 不限于空格   \s 可以匹配空格、制表符、换页符等空白字符的其中任意一个  





String、StringBuffer与StringBuilder之间区别:
a.执行速度方面的比较:StringBuilder >  StringBuffer  >  String
b.线程安全:StringBuffer:线程安全的 StringBuilder:线程非安全的
* 编译器在编译该程序时若发现,一个表达式两边的内容都是确定值时,会直接进行计算,并将结果生成到字节码文件.
对于三者使用的总结: 
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值