# 问题和练习：字符和字符串

> 原文： [https://docs.oracle.com/javase/tutorial/java/data/QandE/characters-questions.html](https://docs.oracle.com/javase/tutorial/java/data/QandE/characters-questions.html)

## 问题

1.  以下字符串构建器的初始容量是多少？

    ```
    StringBuilder sb = new StringBuilder("Able was I ere I saw Elba.");

    ```

2.  请考虑以下字符串：

    ```
    String hannah = "Did Hannah see bees? Hannah did.";

    ```

    1.  表达式`hannah.length()`显示的值是多少？

    2.  方法调用`hannah.charAt(12)`返回的值是多少？

    3.  写一个表达式，引用`hannah`引用的字符串中的字母`b`。

3.  下面的表达式返回的字符串有多长？什么是字符串？

    ```
    "Was it a car or a cat I saw?".substring(9, 12)

    ```

4.  在以下程序中，称为 [`ComputeResult`](ComputeResult.java) ，每个编号行执行后`result`的值是多少？

    ```
    public class ComputeResult {
        public static void main(String[] args) {
            String original = "software";
            StringBuilder result = new StringBuilder("hi");
            int index = original.indexOf('a');

    /*1*/   result.setCharAt(0, original.charAt(0));
    /*2*/   result.setCharAt(1, original.charAt(original.length()-1));
    /*3*/   result.insert(1, original.charAt(4));
    /*4*/   result.append(original.substring(1,4));
    /*5*/   result.insert(3, (original.substring(index, index+2) + " ")); 

            System.out.println(result);
        }
    }

    ```

## 演习

1.  显示两种方法将以下两个字符串连接在一起以获取字符串`"Hi, mom."`：

    ```
    String hi = "Hi, ";
    String mom = "mom.";

    ```

2.  编写一个程序，用您的全名计算首字母并显示它们。

3.  anagram 是通过转换另一个单词或短语的字母而形成的单词或短语;例如，“议会”是“部分人”的字谜，“软件”是“发誓”的字谜。编写一个程序，确定一个字符串是否是另一个字符串的字谜。该程序应忽略空格和标点符号。

[检查你的答案。](characters-answers.html)