2020/10/27java作业七

 

 

1.String的常用api:

length()计算字符串长度

charAt()截取一个字符

getChars()截取多个字符

equals()比较两个字符

indexof查找字符串的位置


public class StringDemo {
    public static void main(String[] args){
        String str = "thinking in Java";
        int index = str.indexOf("in");
        System.out.println("index="+index);//index=2
        int index1 = str.indexOf("in",3);//从第4个字符开始寻找in
        System.out.println("index1="+index1); //index1=5
        int index2 = str.lastIndexOf("in");//从后往前查找
        System.out.println("index2="+index2);//index2=9
    }
}

StringBuffer的常用api:

append()指定位置插入

delete()删除指定内容

reserse()字符串反转

public class StringBufferDemo {
	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer();
		sb.append("wwwrrr");
		System.out.println("sb:" + sb);
		// public StringBuffer reverse()
		sb.reverse();
		System.out.println("sb:" + sb);
	}
}

StringBuilder的常用api:

replace()替换

insert()插入

deete()删除

public class StringDemo {
	public static void main(String[] args) {
		StringBuilder stringbulider = new StringBuilder("eref");
		stringbulider.append(" is good");
		System.out.println(stringbulider);
		stringbulider.delete(8, 15);
		System.out.println(stringbulider);
		stringbulider.replace(0, 7, "Person");
		System.out.println(stringbulider);
		stringbulider.reverse();
		System.out.println(stringbulider);
		StringBuilder stringbulider1 = new StringBuilder("wh");
		String s = "at";
		stringbulider1.insert(2,s);
		System.out.println(stringbulider1);
	}
}

 

 

 

2.共同点;底层都使用char[]存储。StringBuilder和StringBuffer非常类似,均为可变的字符序列,而且方法也一样

不同点:

String:不可变字符序列
StringBuffer:可变字符序列、效率低、线程安全
StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全

(1)如果要操作少量的数据用 String;

(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;

(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

3.Java中的+对字符串的拼接,其实现原理是使用StringBuilder.append。在for循环中,每次都是new了一个StringBuilder,然后再把String转成StringBuilder,再进行append,每次都新建了一个StringBuilder,需要的内存空间很大。

4.将unicode字符集转为本地字符集(GB2312或GBK)的过程叫编码,反之叫解码。

编码
import java.io. *;
public class CharCode{
public static void printByteArray(String msg,byte[]t){
    System.out.println(msg+"******");
    for(int i=0;i<t.length;i++){
        System.out.println(Integer.toHexString(t[i]));
  }
}
public static void printCharArray(String msg, char[] c){
  System.out.println(msg+"******");
    for(int i=0;i<c.length;i++)(
System. out.printIn(Integer.toHexString(c[i]));
 }
}
public static void main(String[ ] args){
try{
    String str="中文";
    System.out.println(str);
    printCharArray("unicode:",str.toCharArray());
    byte[] b =str.getBytes("GB2312");
    printByteArray("GB2312",b);

    byte[]m =str.getBytes("ISO8859-1");
    printByteArray("ISO8859-1",m);
}
catch(UnsupportedEncodingException e){
System. out.printIn("没有相应的字符集!");
}
}
}

解码
import java.io.*;

public class Decode{
  public static void printByteArray(String msg,byte[] t){
	System.out.println(msg+"****************");
    for(int i=0;i<t.length;i++){
      System.out.println(Integer.toHexString(t[i]));
    }
  }
  public static void printCharArray(String msg,char[] c){
	System.out.println(msg+"****************");
	for(int i=0;i<c.length;i++){
      System.out.println(Integer.toHexString(c[i]));
    }
  }
  public static void main(String[] args){
      byte[] b = new byte[6];
	  int t=0,pos=0;
	  String s;
      try
        {
	     while(t!='\n'){
		   t=System.in.read();
		   b[pos]=(byte)t;	     
		   pos++;
		 }
		 printByteArray("本地码:",b);
		 s = new String(b,"GBK");
		 System.out.println(s);
		 printCharArray("unicode码:",s.toCharArray());		 
	  }
      catch (Exception e)
      {
	    System.out.println(e.getMessage());
	  }	  
  }
}
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页