0
点赞
收藏
分享

微信扫一扫

hashmap专题

夜空一星 03-21 16:00 阅读 2
java

String知识点讲解

2.5字符串替换

 String str="abcabcabcabc";
        String ret=str.replace('a','p');
        System.out.println(ret);

(替换所有老的字符为第2个参数)还可以替换字符串

String str1="abcabcabcabc";
        String ret1=str1.replaceFirst("ab","ppp");
        System.out.println(ret1);

2.6 字符串拆分

split方法的使用:

指定位置去分割

String str="name=zhagnsan&age=10";
        String[] ret=str.split("&");
        for (int i = 0; i < ret.length; i++) {
            System.out.println(ret[i]);
        }
    }

limit可以在这里分割3次,指定位置去分割

String str="name = zhagnsan & age = 10";
        String[] ret=str.split(" ",3);
        for (int i = 0; i < ret.length; i++) {
            System.out.println(ret[i]);
        }
    }

如果limit大于最大分割,虽然不能分割超过,但是他能够保证能分割的最大次数。不够就不分了。

如果分割IP地址

 String str="192.168.1.1";
        String []ret=str.split("//.");
        for (int i = 0; i < ret.length; i++) {
            System.out.println(ret[i]);
        }

注意事项:

1. 字符"|","*","+"都得加上转义字符,前面加上"\\".

2. 而如果是"\",那么就得写成"\\\\".

3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

2.7 字符串截取

从一个完整的字符串之中截取出部分内容。

运用的是substring方法(左闭右开)

String str="abcdef";
        String ret=str.substring(2);
        System.out.println(ret);

String str="abcdef";
       String ret=str.substring(1,3);
        System.out.println(ret);

trim方法:消除左右两边的空格(trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符                                                            等).)

String str2="   a   bc    de    dsdwd      ";
        System.out.println(str2);
        String ret2=str2.trim();
        System.out.println(ret2);

2.9 字符串的不可变性

String是一种不可变对象. 字符串中的内容是不可改变。字符串不可被修改,是因为:

1. String类在设计时就是不可改变的,String类实现描述中已经说明了

2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象

为什么 String 要设计成不可变的?(不可变对象的好处是什么?)

1. 方便实现字符串对象池. 如果 String 可变, 那么对象池就需要考虑写时拷贝的问题了.

2. 不可变对象是线程安全的.

3. 不可变对象更方便缓存 hash code, 作为 key 时可以更高效的保存到 HashMap 中.

2.10 字符串修改

注意:尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率 非常低下。

public static void main(String[] args) {
    String s = "hello";
    s += " world";
    System.out.println(s);  // 输出:hello world
 }

但是这种方式不推荐使用,因为其效率非常低,中间创建了好多临时对象。

3. StringBuilder和StringBuffer

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。

             

                  

StringBuff append(String str)         在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、 double、float、int,long、Object、String、StringBuff的变量
char charAt(int index)获取index位置的字符
int length()获取字符串的长度
int capacity()获取底层保存字符串空间总的大小
void ensureCapacity(int mininmumCapacity)扩容
void setCharAt(int index, char ch)将index位置的字符设置为ch
int indexOf(String str)返回str第一次出现的位置
int indexOf(String str, int fromIndex)从fromIndex位置开始查找str第一次出现的位置
int lastIndexOf(String str)返回最后一次出现str的位置
int lastIndexOf(String str, int fromIndex)从fromIndex位置开始找str最后一次出现的位置
StringBuff insert(int offset, String str)在offset位置插入:八种基类类型 & String类型 & Object类型数据
StringBuffer deleteCharAt(int index)删除index位置字符
StringBuffer delete(int start, int end)删除[start, end)区间内的字符
StringBuffer replace(int start, int end, String str)将[start, end)位置的字符替换为str
String substring(int start)从start开始一直到末尾的字符以String的方式返回
String substring(int start,int end)将[start, end)范围内的字符以String的方式返回
StringBuffer reverse()反转字符串
String toString()将所有字符按照String的方式返回

StringBuffer reverse()反转字符串:

 StringBuilder stringBuilder=new StringBuilder("abcdef");
        stringBuilder.reverse();
        System.out.println(stringBuilder);

举报

相关推荐

0 条评论