黑马程序员---String学习笔记

来源:互联网 发布:小米5突然没有网络 编辑:程序博客网 时间:2024/04/29 03:14

String学习笔记

(一)String 一旦初始化就不可被改变;

package cn.cx.string.study;

publicclass Demo01 {

    publicstaticvoid main(String[] args) {

        String s1  = "asd";//s1是一个类类型变量,"asd"是一个对象。

       

        //s1 = "as";//"asd"没变,s1这个引用变了

       

        String s2 = new String("asd");

        System.out.println(s1==s2);//false,比较地址值

        System.out.println(s1.equals(s2));//true,String类覆写了equals                                          法,定义了自身独特的    

                                               //内容,并未再去比较地址值。

               //s1与s2的区别:s1代表一个对象,s2有两个

    }

package cn.cx.string.study;

 

publicclass Demo02 {

    publicstaticvoid main(String[] args) {

        String s1 = "abc";

        String s2 = "abc";

        String s3 = new String("abc");

        System.out.println(s1==s2);//true,指向同一对象

        System.out.println(s1==s3);//false

       }

}

(二)四道练习:

package cn.cx.string.study;

 

publicclass MyTrim {

 

    publicstaticvoid main(String[] args) {

       

        /*String s = "   dfg jh      ";

        System.out.println(myTrim(s));

        System.out.println(myTrim(s).length());*/

        //System.out.println(myReverse("asdfrth"));

        /*String ori = "aaffgsgaaghdaafraalaak";

        String myStr = "aa";

        System.out.println(myNum2(ori,myStr));*/

        String l = "asdfgjavajdch";

        String s = "asjavappoub";

        System.out.println(getMaxSubStr(l,s));

    }

    //自定义trim

    publicstatic String myTrim(String str) {

       

        int start = 0;

        int end = str.length()-1;

        while(start<end && str.charAt(start)==' ') {

            start ++;

        }

        while(start<end && str.charAt(end)==' ') {

            end --;

        }

       

        return str.substring(start, end+1);

    }

    //反转

    publicstatic String myReverse(String str) {

        char[] chs = str.toCharArray();

        for(int i=0; i<chs.length/2; i++) {

            char temp = chs[i];

            chs[i] = chs[chs.length-i-1];

            chs[chs.length-i-1] = temp;

        }

        returnnew String(chs);

    }

    //获取一个字符串在另一个字符串的次数

    publicstaticint myNum(String oriStr, String myStr) {

       

        int num = 0;

        int index = 0;

        while((index = oriStr.indexOf(myStr)) != -1) {

            num ++;

            oriStr = oriStr.substring(index+myStr.length(), oriStr.length());

            System.out.println(oriStr);

        }

        return num;

    }

    publicstaticint myNum2(String oriStr, String myStr) {

        int num = 0;

        int index = 0;

        while ((index=oriStr.indexOf(myStr, index))!= -1) {

            num ++;

            index = index + myStr.length();

        }

        return num;

    }

    //获取两字符串中最大相同子串

    publicstatic String getMaxSubStr(String l, String s) {

        String temp = null;

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

            for(int j=0,z=s.length()-i; z!=s.length()+1; j++,z++) {

                temp = s.substring(j, z);

                if(l.contains(temp)) {

                    return temp;

                }

            }

        }

        returnnull;

    }

(三)StringBuffer是字符串缓冲区,是容器,且长度可变,线程同步。StringBuilder是线程不同步的,单线程时使用效率高。

0 0
原创粉丝点击