Java String, StringBuilder相关操作

本篇文章只是本人为方便查找相关方法而记录,下面具体代码并没有全部真正运行。

 	//(一) String 不可变对象,默认为null
    // 对string对象的增删改等操作都会生成新的String对象,然后更改指针,效率低
    // 经常发生改变的字符串最好不要用String
        // (1) 字符串对象的创建
        String str1="hello";       //  字符串常量
        char[] ch=new char[]{'h','e','l','l','o'};
        StringBuilder sb=new StringBuilder("hello");
        //  char[]数组创建,第二条是数组中部分元素创建
        String str2=new String(ch);
        String str3=new String(ch,1,3);
        //  StringBuilder对象创建
        String str4=sb.toString();
        String str5=new String(sb);
        //  将int,double等基本数据类型转换为字符串
        String str6=String.valueOf(12.3);
        // (2) 字符串长度
        System.out.println(str1.length());
        // (3) 字符串内容比较
        System.out.println(str1==str2);             // 是否为同一个字符串(地址、引用)
        System.out.println(str1.equals(str2));      //内容是否相同
        System.out.println(str1.equalsIgnoreCase(str2));    // 忽略大小写,内容是否相同
        System.out.println(str1.compareTo(str2));           // 对内容按字典序比较
        System.out.println(str1.compareToIgnoreCase(str2)); // 对内容忽略大小写按字典序比较
        // (4) 获取指定位置元素
        System.out.println(str1.charAt(2));
        // (5) 获取指定子串
        System.out.println(str1.substring(1));      //一直到最后
        System.out.println(str1.substring(1,3));    //区间 左闭右开
        // (6) 判断前后缀
        System.out.println(str1.startsWith("he"));  //是否以某字符串开头
        System.out.println(str1.endsWith("llo"));   //是否以某字符串结尾
        // (7) 判断是否包含某字符串
        System.out.println(str1.contains(str2));
        // (8) 字符串连接
        System.out.println(str1.concat(str2));      //效果等价于str1+str2
        // (9) 查找某字符串或字符出现的位置
        System.out.println(str1.indexOf("ll"));
        System.out.println(str1.indexOf("ll",3));
        System.out.println(str1.lastIndexOf("ll"));
        System.out.println(str1.lastIndexOf("ll",4));
        // (10) 一些实用函数
        System.out.println(str1.trim());    // 去除两边的空格
        System.out.println(str1.replace("l","--"));    // 替换所有匹配子串
        System.out.println(str1.replaceFirst("l","--")); //替换第一个匹配的子串
        System.out.println(str1.toLowerCase());   // 转换成小写
        System.out.println(str1.toUpperCase());   // 转换成大写
        // (11) 字符串转换为字符数组
        char[] carr= str1.toCharArray();
        System.out.println(Arrays.toString(carr));
        str1.getChars(0,2,carr,2);  // 将部分元素复制到数组中
        System.out.println(Arrays.toString(carr));             // 将str1的[0,2)元素复制到carr数组(下标2开始)
        // (12) 字符串分割得到数组
        String s="ni hao ma ?";
        String[] sarr=s.split(" ");
        for (String s1 : sarr)
            System.out.printf("---"+ s1);
        // (13) 遍历字符串
        for (int i = 0; i < str1.length(); i++) // 普通for循环,按照下标遍历
            System.out.printf("  "+ str1.charAt(i));
        for(char x:str1.toCharArray())          //增强for循环,直接遍历元素
            System.out.printf(" "+ x);
    //(二) StringBuffer与StringBuilder 长度可变的字符串,区别是前者是线程安全的,而后者非线程安全,因此效率会高一些
    //      StringBuilder 单线程,不保证线程安全,比StringBuffer要快
        // (1) StringBuilder的创建  不带参即为""
        StringBuilder sb2=new StringBuilder("hello");
        // (2) 查看指定位置元素
        System.out.println(sb2.charAt(3));
        // (2) 在末尾追加字符/字符串
        System.out.println(sb2.append(' '));
        System.out.println(sb2.append("world"));
        // (3) 在指定位置添加字符或字符串
        System.out.println(sb2.insert(3,"aaa"));
        // (5) 更改指定位置处的元素
        sb2.setCharAt(3,'!');
        System.out.println(sb2.toString());
        // (6) 删除元素
        System.out.println(sb2.deleteCharAt(3));//删除指定位置处元素
        System.out.println(sb2.delete(1,2));    //删除某区间元素  左闭右开
        // (7) 替换指定区间元素
        System.out.println(sb2.replace(1,4,"aaa"));
        // (8) 字符串反转
        System.out.println(sb2.reverse());
        // (9) 元素出现位置
        System.out.println(sb2.indexOf("aaa"));                     // 字符串第一次出现位置
        System.out.println(sb2.indexOf("aaa",3));    // 指定元素开始,字符串第一次出现位置
        System.out.println(sb2.lastIndexOf("aaa"));            // 字符串最后一次出现位置
        // (10) 转化为String对象
        String ss=sb2.toString();
        System.out.println(ss);
        ss=new String(sb2);
        System.out.println(ss)
  //(三) 字符串分割  StringTokenizer类
    	String str="ni hao ma , ni shi shei ?";
        StringTokenizer st=new StringTokenizer(str);  // 默认分隔符为 空格、制表符、换行符
        while(st.hasMoreTokens())
            System.out.println(st.nextToken());
        StringTokenizer st2=new StringTokenizer(str,", ?"); // 设置分隔符
        System.out.println(st2.countTokens());  // 分割为几部分
        while(st2.hasMoreTokens())
            System.out.println(st2.nextToken());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值