Java内部类与字符串深入解析

需积分: 16 2 下载量 114 浏览量 更新于2024-07-21 收藏 1.27MB DOC 举报
"Java葵花宝典涵盖了深入的Java API,特别是对`java.lang`包中的`String`类和`StringBuffer`类进行了详细讲解。此外,还提及了嵌套类,包括静态嵌套类和非静态嵌套类,特别强调了内部类的三种形式:直接定义在外部类中的内部类、定义在外部类方法中的内部类以及匿名内部类。内容还涉及了如何处理用户输入,如逐行读取键盘输入直至输入特定字符串为止。" 在Java编程中,`String`类和`StringBuffer`类是处理字符串时经常使用的工具。`String`类表示不可变的字符串,一旦创建就无法更改。这使得`String`对象在作为常量或者不频繁修改的场景下非常高效,因为它们可以被池化以节省内存。例如,`String x = "a" + 4 + "c"` 在编译时会优化为创建一个`StringBuffer`对象,通过`append()`方法拼接后转化为`String`。 另一方面,`StringBuffer`类是用于处理可变字符串的,它提供了`append()`方法来添加字符或字符串,以及`toString()`方法将其转换为`String`对象。由于`StringBuffer`的变异性,它在字符串频繁修改的情况下更为合适。例如,当需要拼接多个字符串时,使用`StringBuffer`通常比多次创建`String`对象更有效率。 在比较`String`对象时,使用`==`运算符实际上是检查两个对象是否引用同一块内存,因此`Strings1 = "hello"; Strings2 = "hello";`的结果是`s1 == s2`为`true`,因为它们都指向字符串常量池中的同一字符串。然而,如果通过`new String("hello")`创建`String`对象,那么`s1 != s2`会返回`true`,因为它们是两个独立的对象。 在处理用户输入方面,示例代码展示了如何使用`System.in.read()`方法逐字节地读取标准输入(键盘输入)。当遇到回车符`\r`时,程序不作处理;遇到换行符`\n`时,会将当前缓冲区的字符构造为一个新的`String`对象`strInfo`。如果`strInfo`的内容等于"bye",程序会结束;否则,继续读取并清空`pos`以便下次存储新输入。 这些知识点都是Java编程基础的重要组成部分,理解并熟练掌握它们对于编写高效、健壮的Java应用程序至关重要。在实际开发中,合理利用`String`和`StringBuffer`,以及熟练掌握嵌套类和处理用户输入的方法,都能显著提升代码质量和性能。