JAVA——String、StringBuffer、StringBuilder

string:

java中String的一些常见函数使用:

import java.util.Arrays;

public class String_demo {
    public static void main(String [] args){
       //string类的相关操作
       //字符串一旦被初始化就不能够被改变
        String s1="abcd";
        String s2=new String ("efgh");
        System.out.println("s1=="+s1);
        System.out.println("s2=="+s2);

        //构造方法:
        //1、传入char数组,将char数组转化成字符串
        char [] a={'h','e','l','l','o'};
        String a1=new String(a);
        System.out.println("a1=="+a1);
        String a2=new String(a,1,3);
        System.out.println("a2==="+a2);
        //2、可传入byte数组,打印其ASCII码
        byte [] b={97,66,67,68};
        String b1=new String(b);
        System.out.println("b1==="+b1);

        //获取长度
        System.out.println("a1的长度为:"+a1.length());
        //获取下标为i的元素值
        System.out.println("a1中下标为1的元素是:"+a1.charAt(1));


        //获取字符x第一次出现的位置
        //1、从前往后找:
        System.out.println("从前往后找字符'l'第一次在a1中出现的位置"+a1.indexOf('l'));
        //2、从后往前找:
        System.out.println("从后往前找字符'l'第一次在a1中出现的位置"+a1.lastIndexOf('l'));

        //获取字符串中一部分元素
        System.out.println("获取a1中一部分元素"+a1.substring(1,3));


        //将字符串进行分割
        String s11="nice to meet you";
        String [] c1=s11.split(" ");
        System.out.println(c1[0]);

        //将字符串转换为字符数组
        char [] c2=s11.toCharArray();
        //将数组转换为字符串
        System.out.println("字符串转换成字符数组"+Arrays.toString(c2));

        //该字符串中是否包含指定字符串
        System.out.println(s11.contains("111"));
        //字符串的连接:
        System.out.println("字符串的连接:"+s11.concat(" me too."));

        //进制转换:转换后返回字符串类型
        String d1=Integer.toBinaryString(11);
        System.out.println("十---二进制转换"+d1);
        String d2=Integer.toHexString(78);
        System.out.println("十---十六进制转换"+d2);
        String d3=Integer.toOctalString(67);
        System.out.println("十---八进制转换"+d3);
        String d4=Integer.toString(100,8);//任意进制转换
        System.out.println("任意类型转换(此时10--8进制转换)"+d4);


        String q=String.valueOf(1000);
        System.out.println("转换为String"+q);

//int compareTo();//如果参数字符串等于此字符串,则返回值 0;
// 如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;
// 如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

//        String [] f1=new String[]{"qwe","wwww","qwaz","vxq"};
//        for(int i=0;i<f1.length;i++)
//        {
//            for(int j=i+1;j<f1.length;j++)
//            {
//                if(f1[i].compareTo(f1[j])>0)
//                    swap(f1,i,j);
//            }
//        }

    }
}



运行结果:

StringBuffer和StringBuilder

public class StringBuffer_demo {
    public static void main(String [] args)
    {
          //StringBuffer:可以对字符串内容进行修改;是一个容器;是可变长度的;
          //             缓冲区内可以存放任意类型的数组;最终需要变成字符串


        /*
        StringBuilder:构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。
        该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
        方法和StringBuffer一样
        区别:
             StringBuffer线程安全。StringBuilder线程不安全。
             单线程操作,使用StringBuilder 效率高。
             多线程操作,使用StringBuffer 安全。
         */

        //1、添加
        StringBuffer s1=new StringBuffer("abcd");
        System.out.println("在后面添加"+s1.append("efg"));
        System.out.println("在任意位置添加"+s1.insert(2,"eee"));

        //2、删除
        StringBuffer s2=s1.delete(1,3);
        System.out.println("删除start---end的元素"+s2);
        StringBuffer s3=s1.deleteCharAt(4);
        System.out.println("删除指定位置的元素"+s3);

        //3、查找
        System.out.println("查找下标为i的元素"+s1.charAt(6));
        System.out.println("从前往后查找值为'x'的元素的下标"+s1.indexOf("e"));
        System.out.println("从后往前查找值为'x'的元素的下标"+s1.lastIndexOf("e"));


        //4、修改
        System.out.println("修改:用新替换旧"+s1.replace(1,4,"1234"));

        //5、获取子串
        System.out.println("获取子串"+s1.substring(1,4));
        //6、反转
        System.out.println("反转"+s1.reverse());

    }
}
运行结果:

练习:

/*
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
示例 1:输入:a = "11", b = "1"  输出:"100"
示例 2:输入:a = "1010", b = "1011"  输出:"10101"

 */
public class String_Practice {
  
   private String a;
    private String b;
   String_Practice(String a,String b)
   {
       this.a=a;
       this.b=b;
   }
   public String String_Add(){
//       简单方法
//       return Integer.toBinaryString((Integer.parseInt(a,2)+Integer.parseInt(b,2)));
       //普遍方法:设出进制
       int m=a.length()-1;
       int n=b.length()-1;
       int carry=0;
       StringBuilder x=new StringBuilder();
       while(m>=0||n>=0)
       {
           if(m>=0)
               carry=carry+a.charAt(m--)-'0';
           if(n>=0)
               carry=carry+b.charAt(n--)-'0';
           x.append(carry%2);
           carry=carry/2;
       }
       if(carry==1)
           x.append(1);
       return x.reverse().toString();
   }
}
 
public class String_test {
    public static void main(String [] args){
        String_Practice sp1=new String_Practice("11","1");
        System.out.println("二进制相加之和:"+sp1.String_Add());

    }
}

运行结果

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值