java作业7

1. 借助JDK, 选取几个String与StringBuffer 、StringBuilder的常用API,并编写实例测试API的功能。
String的常用API:
1.public String replace(char oldChar,char newChar)
=
在这里插入图片描述
2.public String[] split(String regex, int limit)//regex 正则表达式分隔符。limit 分割的份数。
此方法返回的数组包含此字符串的每个子字符串,该字符串由与给定表达式匹配的另一个子字符串终止,或由字符串结尾终止。 数组中的子字符串按照它们在此字符串中的顺序排列。 如果表达式与输入的任何部分不匹配,则生成的数组只有一个元素,即这个字符串。在这里插入图片描述
3.public String toUpperCase(Locale locale)
将所有在此字符String使用给定的规则,大写Locale 。
在这里插入图片描述
StringBuffer的常用API:
1.public StringBuffer reverse()
在这里插入图片描述
2.public String substring(int start, int end)
返回一个新的String ,其中包含此序列中当前包含的字符的子序列。 子串起始于指定的start ,并扩展到索引号为end - 1 。
在这里插入图片描述
3.public StringBuffer delete(int start, int end)
删除此序列的子字符串中的字符。 子串开始于指定start并延伸到字符索引end - 1 ,或如果没有这样的字符存在的序列的结束。 如果start等于end ,则不作任何更改。
在这里插入图片描述
StringBuilder的常用API
1.public StringBuilder deleteCharAt(int index)
删除char在这个序列中的指定位置。 这个序列缩短了一个char 。
在这里插入图片描述
2.public StringBuilder insert(int offset,String str)
将字符串插入到此字符序列中。
在这里插入图片描述

2. 请简述String,StringBuffer,StringBuilder三者之间的共同点与区别,应该分别在何种场景下使用?
共同点:都是用来处理字符串,都可以自动检测数组越界等运行时异常。
不同点:String是不可变类,在这个对象中的字符序列是不可变的
StringBuffer代表一个字符序列可变的字符串
StringBuilder代表可变字符对象,但StringBuffer线程安全,StringBuilder非线程安全,所以性能略高。
使用场景:String在字符串不经常变化的场景中使用,如常量的声明,简单的变量运算。
StringBuffer在进行频繁的字符运算和多线程环境中使用
StringBuilder在进行频繁的字符运算和单线程环境中使用
3. 为什么不建议在for循环中使用“+”进行字符串拼接?
使用“+”进行字符串拼接会使用String类,String类的对象不可变,一但对象创建后对象内的字符系列不可变,直至对象被销毁。而在for循环频繁使用字符拼接会产生大量String对象,消耗内存且效率不高。
4. 什么是字符串的编码与解码?请举例说明。
编码:将unicode字符集转换为本地字符集如(GBK)的过程

package javaCharCode_DeCode;
import java.io.*;
public class CharCode {
    public static void printByteArray(String msg,byte []t) {
    	for(int i=0;i<t.length;i++) {
    		System.out.println(Integer.toHexString(t[i]));
    		//转换成16进制
    	}
    }

    public static void printCharArray(String mag,char []c) {
    	for(int i=0;i<c.length;i++) {
    		System.out.println(Integer.toHexString(c[i]));
    	}
    }
    public static void  main(String []args) {
    	try {
    	  String str ="中文";
          printCharArray("unicode", str.toCharArray());//toCharArray()将字符串转换为字符数组。
            //unicode字符集中“中文”的对应代码
          byte[]b=str.getBytes("GB2312");//编码
          printByteArray("GB2312", b);
          byte[]m=str.getBytes("ISO8859-1");//转为ISO8859-1对应的代码
          printByteArray("ISO8859-1",m);
    	}
    	catch(UnsupportedEncodingException e) {
    		System.out.println("没有相应的字符集!");
    	}

		
	}

解码:将本地字符集转换为Unicode字符集的过程

package javaCharCode_DeCode;
public class Decode{
	public static void printByteArray(String msg,byte []t) {
    	for(int i=0;i<t.length;i++) {
    		System.out.println(Integer.toHexString(t[i]));
    		//转换成16进制
    	}
    }

    public static void printCharArray(String mag,char []c) {
    	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());
		  }  

	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值