java字符串使用(2)

String类

重点:

new String() --à地址  final,不能被继承

String底层char[]数组 final,不能改变数组内容。

New String(“a”)+new String(“b”)---àStringBuilder

concat 开辟一个两个字符长度的空间,把两个字符串连接在一起

方法:

isEmpty 判空

length()长度,调用数组的属性 length

charAt()在某个索引位置上的字符

substring 以子串

getBytes() 取字节,在操作中文的相关内容

indexOf/lastIndexOf 索引

replace的替换方法

1、所有的修改字符串操作都是不能替换原串的,

2、原理:

底层:replaceAll

实际发生的String的替换方法

public String replaceAll(String replacement) {
    reset();
   
boolean result = find();
   
if (result) {
       
StringBuffer sb = new StringBuffer();
       
do {
            appendReplacement(
sb, replacement);
            result = find();
        }
while (result);
        appendTail(
sb);
       
return sb.toString();
    }
   
return text.toString();
}

实际String的替换底层使用StringBuilder

StringBuilder里面的replace特点,可以指定开始位置和结尾位置进行替换,String里面的replace特点,从字符串开始到字符串结尾遍历查找,查找到调用StringBuilder来替换。

在数组有一些文件名,.doc批量改成.txt

String[] arrs={"aa.doc","bbb.doc","ccc.doc","ddddddd.doc"};

for(int i=0;i<arrs.length;i++){

    StringBuilder sb=new StringBuilder(arrs[i]);

    int len=arrs[i].length();

    //StringBuilderreplace参数,第一个 start开始,第二个是结束,第一个替换的字符串

    sb.replace(len-4,len,".txt");

    arrs[i]=sb.toString();

}

System.out.println(Arrays.toString(arrs));

注意:

如果使用到字符的替换,使用StringBuilder中的替换代替String中的替换,方法很有效率。   

只有一种情况:替换的字符串在字符串中不知道位置。

indexOf结合StringBuilder()替换

StringBuffer方法中带synchronized 关键字,是并发的意思。 
 
hashCode/equals相等时,hashCode效率高,equals效率低
String:根据字节数组中每一个元素的哈希值来判断相等,+31*前一元素的哈希值。
matches  匹配正则表达,自己写正则表达式
contains包含 indexOf  lastIndexOf
contains相当于indexOf, lastIndexOf调用indexOf
 contains返回的true或者false, indexOf返回被查字符串的索引。
split 重要指数非常高,作用把字符串按照特定字符串分割成数组。
攻击            (穴头) 
应用的场景
  1. 网站的安全(封ip,macsplit切分ip  (攻击)
  2. 统计一个字符串中某些字符的出现次数。
(一个用户1分钟内刷网站1000次)
刷网站的痕迹在日志.
Split判断字符在字符串的次数,length-1,大致判断出来这个ip的驱势.
静态方法join 数组连接成字符串
toLowerCase 把字符转小写
toUpperCase 把字符转大写
trim()方法截取空格
toCharArray把字符串转成字符数组
静态方法 format
String.format(“%.2f”,s)
静态方法: valueOf
如果当前字符串变量为空,返回字符串为空
native 原生 
*******
集合类(变长)
应用最多的变长数组,也就列表
ArrayList  
了解原理
New ArrayList过程建立一个空数组
自己添加元素会报错。
ArrayList添加元素不报错,原因前面有一个方法
ensureCapacityInternal(size + 1);
在调用ArrayList上的add方法前, java做了一个
Arrays.copyOf拷贝数组
add一个元素,java默认产生一个数组,数组的长度是10.
查询列表是get方法
public E get(int index) {

    rangeCheck(index);



    return elementData(index);

}
在get方法中最开始执行一个rangeCheck
  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值