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());
}
}
运行结果