java中String的粗浅使用

demo1


public class StringDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "abcd";
        str = "haha";//内存中多了一个haha对象,abcd对象没有变str从
        //指向abcd到指向haha
        System.out.println("str="+str);

        //-------------
        System.out.println("---------多个引用指向同一个字符串--------");
        System.out.println("itcast");
        String s1 = "itcast";
        String s2 = "itcast";
        System.out.println(s1==s2);

        System.out.println("---------两个内容相同,创建方式不同的字符串--------");
        String s3 = "abc";
        String s4 = new String("abc");
        //s3和s4有什么不同
        /*
         * s3创建,在内存中只有一个对象  常量池
         * s4创建,在内存中有两个对象  堆中有一个 常量池中有一个
         * 
         */
        System.out.println(s3==s4);//flase
        System.out.println(s3.equals(s4));//true
        //String 复写了equals方法,建立字符串相等的依据是按照内容来判断的,
        //Object的equals是比较对象的地址
        System.out.println("-------");
        String s5="abcdefgaijk";
        System.out.println("s5.length()="+s5.length());
        //--------a字母出现的位置--------
        int index = s5.indexOf('a');//获取a字符第一次出现的位置
        System.out.println("a出现的位置"+index);
        //--------a字母第二次出现的位置--------
        int index2 = s5.indexOf('a',index+1);
        System.out.println("a第二次出现的位置"+index2);
        //----------获取部分字符串------------
        String s = s5.substring(0, 3);//包含头不包含尾
        System.out.println("s="+s);
    }


}

demo2

public class StringDemo2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "lisi,wagnwu,zhaoliu";
        String s = str.replace("Demo", "Test");//没有被替换的时候返回原值
        System.out.println("s="+s);
        String[] names = str.split(",");//以“,”分割点产生数组的元素
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
        int result = "cd".compareTo("abcd");
        //只要想让对象具备比较大小的功能只需要实现CompareTo接口
        System.out.println("result="+result);
    }

}

demo3

import java.util.Arrays;

public class StringDemo3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        /*
         * 案例一:字符串数组
         * ["abc","nba","cctv","itcast"]
         * 要求从小到大排序
         * */
        String[] str={"abc","nba","cctv","itcast"};
        System.out.println("交换前");
        print(str);
        sortString(str);
        //Arrays.sort(str);//这样一句话就可以了
        System.out.println("交换后");
        print(str);
        /*
         * 案例2:
         * "sdafasdgadjhfskajdfhkjsdhfkjalsdhfklas"//sd出现的次数
         * 思路:
         * 1,无非是在一个字符串中查找另一个字符串。indexOf
         * 2,查找到第一次出现的指定字符串后如何查找第二个呢?
         * 3,无需再从头开始,只要从第一次出现的位置开始+key的长度之后开始找第二个
         * 4,返回-1是查找结束
         * */
        String str2 ="sdafasdgadjhfskajdfhkjsdhfkjalsdhfklas" ;
        String key="sd";
        int count = getKeyCount(str2,key);
        System.out.println("count="+count);
        /*
         * 案例三:
         * "itcast_sh"按照长度输出
         * */
        String str3="itcast_sh";
        System.out.println("str3.length="+str3.length());
        System.out.println("按长度输出");
        printStringByLength(str3);
    }
    /**
     * 按长度输出
     * @param str
     */
    private static void printStringByLength(String str) {
        // TODO Auto-generated method stub
        for (int i = 0; i < str.length(); i++) {
            for(int start =0,end = str.length()-i;end<=str.length();start++,end++){
                String temp=str.substring(start, end);
                System.out.println(temp);
            }
        }
    }
    /**
     * 获取key在str中出现的次数
     * @param str
     * @param key
     * @return
     */
    private static int getKeyCount(String str, String key) {
        //1,定义变量。记录每一次找到的key的位置
        int index = 0;
        //2,定义变量,记录出现的次数。
        int count=0;
        //3,定义循环。只要索引值的位置不是-1,继续查找

        while((index=str.indexOf(key, index))!=-1){
            //每一次循环,就要明确下一次查找的其实位置
            index=index+key.length();
            count++;
        }
        return count;
    }
    /**
     * 打印字符数组
     * @param str
     */
    private static void print(String[] str) {
        // TODO Auto-generated method stub
        for (int i = 0; i < str.length; i++) {
            System.out.println("str="+str[i]);
        }
    }
    /**
     * 字符串数组排序
     * 思路:
     * 1,曾经玩过int数组排序
     * 2,字符串排序同理
     * 3,for嵌套循环。
     * 4,循环中进行元素的大小比较,满足交换
     * @param str
     */
    private static void sortString(String[] str) {
        // TODO Auto-generated method stub
        for (int i = 0; i < str.length; i++) {
            for(int j = i+1;j<str.length;j++){
                if(str[i].compareTo(str[j])>0){
                    swap(str,i,j);
                }
            }
        }
    }
    /**
     * 交换数组中元素的值
     * @param str
     * @param i
     * @param j
     */
    private static void swap(String[] str, int i, int j) {
        // TODO Auto-generated method stub
        String s=str[i];
        str[i]=str[j];
        str[j]=s;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值