java基础(四):字符串

1.String概念:字符串一旦被创建就不可以更改

(1)A.==B:判断地址;     A.equals(B):判断A,B的内容

(2).常用方法:

        长度:str.length();

        查看指定位置的字符:str.charAt(1);

        查看字符所在的位置:str.indexOf("a");

        将字符串变成字符数组:str.toCharArray();

        以A开头(结尾):startWith("A"),endWith("A");

        包含:A.contains("B");

        获取子字符串:str.subString(int start, int end);

        将A字符替换成B字符:str.subString("A","B");

        去除字符串两边的空格:str.trim();

        比较两个对象大小:A.compareTo(B)

(3).字符串与基本类型的不同之处:

        String str1 = "hello";

        String srr2 = "java";

        当在此方法里直接:str1 = str2,则输出结果为:java java

        如果在此方法里将str1,str2作为参数调用别的方法,在别的方法里写:str1 = str2,则输出结果为:hello java

 

        分析:因为字符串一旦写出来就不可更改,str1,str2实质上保存的是字符串的地址。如果在本方法里直接str1 = str2,意味着将str2的地址赋值给str1,此时str1保存的也是str2一样的地址,这个地址同时指向java。但是如果将str1,str2作为参数,只是将str1,str2的引用(也可以认为是副本)作为参数传递过去,他们本身是没有任何变化的,而且别的方法里无论发生什么对他们都没有影响。这就是字符串区别于基本数据类型的特性。

 

2.String里的常见的实例:

(1).关键字(key)在一串字符串(str)中出现次数

        int count = 0;

        int index = 0;

        while(index = str.indexOf(key,index) != -1){

                count ++;

                index += key.length();

        }

(2).两个字符串(s1,s2)的最大子串

        String longStr,shortStr;

        longStr = s1.length() > s2.length()?s1:s2;

        shortStr = s2.length() <= s1.length()?s2:s1;

        for(int x = 0; x < shortStr.length(); x++){

                for(int y = 0, z = shortStr.length() - x; z < shortStr.length() ; y++,z++ ){

                        String temp = shortStr.subString(y,z);

                        if(longStr.contains(temp))

                                return temp;

                }

        }

(3).将字符串(str)字符按自然顺序排序

        char[] chars = str.toCharArray();

        Arrays.sort(chars);

        return new String(chars);

 

3.StringBuffer:字符串缓冲区(字符容器)

(1).使用场景:有多种数据类型,但是最后都要变成字符串类型

    局限性:无论原本是什么类型,一旦用了StringBuffer,就不可单独操作,且最后一定是变成字符串。

(2).常用方法:

        创建缓冲区对象:StringBuffer sb = new StringBuffer();

        新增:sb.append("aaa");            //在最后加

                   sb.insert(1,"aaa");            //指定位置加

        删除:sb.delete(1,5);                  //包含头不包含尾

        修改:sb.replace(1,5,"aaa");      //包含头不包含尾

        设置长度:sb.setLength(20);

        字符串倒序:sb.reverse();

(3).StringBuffer一般情况下与StringBuilder一样。StringBuffer是线程同步,StringBuilder线程不同步。但是StringBuilder速度更快。

 

4.基本数据类型的对象包装

(1).基本数据类型对应的包装对象

        byte--Byte    short--Short    int--Integer    long--Long

        float--Float    double--Double    boolean--Boolean    char--Character

(2).与字符串的互相转换

        基本数据类型转成字符串:toString();

        字符串转成基本数据类型(以int举例):Integer.parseInt(str);

(3).现在的jdk支持自动装箱拆箱,具体实现2种方法:

        ^1.Integer i = new Integer(4);    //构造方法

        ^2.Integer.valueOf(4);              //静态方法

(4).Integer的一个注意点:

        Integer m = 127,n = 127;

        == >  m == n,  m.equals(n)

        Integer m = 128, n = 128;

        == > m != n , m.equals(n)

        所以,127是个临界值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值