10.29作业

1、借助JDK, 选取几个String与StringBuffer 、StringBuilder的常用API,并编写实例测试API的功能。

  1. String的charAt
    例:
    String in = “abcdefghijk”;
    System.out.println(in.charAt(7));
  2. StringBuffer的append(char[] str)
    例:
    StringBuffer stringBuffer = new StringBuffer(“hello”);
    stringBuffer.append(“world”);
    System.out.println(stringBuffer);
  3. StringBuilder的append(char[] str)
    例:
    StringBuilder a= new StirngBuilder();
    a.append(“a”).append(“b”).append(“c”).append(“d”);

2、请简述String、StringBuffer、StringBuilder三者之间的共同点与区别,应该分别在何种场景之下使用?
(1)String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
(2)StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
StringBuffer的主要StringBuffer是append和insert方法,它们被重载以便接受任何类型的数据。 每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入到字符串缓冲区。 append方法总是在缓冲区的末尾添加这些字符; insert方法将insert添加到指定点。
(3)StringBuilder可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。
StringBuilder的主要StringBuilder是append和insert方法,它们是重载的,以便接受任何类型的数据。 每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入字符串构建器。append方法始终在构建器的末尾添加这些字符; insert方法将insert添加到指定点。

3、 为什么不建议在 for循环中使用“+”进行字符串拼接?
因为“+”会创建新的字符串,导致内存资源浪费。

4、什么是字符串的编码与解码?请举例说明。
将unicode字符集转为本地字符集(如GB2312或GBK)的过程叫编码,反之叫解码。

public void Decoder(String message) throws UnsupportedEncodingException, CharacterCodingException {
        /**
         * 将message解码为二进制数组
         */
        byte[] bytes=message.getBytes("UTF-8");
        /**
         * 将二进制数组编码为GBK
         */
        String newMessage1=new String(bytes,"GBK");

        /**
         * 对于IO流可以使用如下方式
         */
        Charset cs=Charset.forName("GBK");
        CharsetEncoder encoder=cs.newEncoder();
        String newMessage2=encoder.encode(ByteBuffer.wrap(bytes).asCharBuffer()).toString();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值