Java高级编程:深入API与字符串操作

需积分: 10 6 下载量 148 浏览量 更新于2024-07-31 收藏 1.45MB DOC 举报
"Java高级编程教程,专注于Java高级程序员的学习,涵盖了JAVASE的深入学习,特别是对JAVAAPI的探讨,特别是`java.lang`包中的`String`类和`StringBuffer`类的使用。教程还涉及了如何处理字符串常量、匿名对象以及键盘输入的读取操作。" 在Java高级编程中,深入理解JAVAAPI至关重要,因为它包含了Java语言的核心类库。`java.lang`包是最基础的包,它的类在使用时无需显式导入。在这个包中,`String`类和`StringBuffer`类是处理文本数据的常用工具。 `String`类在Java中代表不可变的字符串,一旦创建,其内容就不能改变。例如,`String x = "a" + 4 + "c"`这样的表达式在编译时会被优化,转化为使用`StringBuffer`或`StringBuilder`来拼接字符串,以提高效率。这是因为直接使用`+`操作符连接字符串会生成新的`String`对象,对于频繁的操作,性能开销较大。而`StringBuffer`(在多线程环境下使用`StringBuilder`)提供了可变的字符串,允许在已有内容基础上进行添加、删除或替换操作,通过调用`append()`方法,如`new StringBuffer().append("a").append(4).append("c").toString();` 字符串常量是特殊的匿名对象。在Java中,当两个字符串变量引用相同的字符串字面量时,如`String s1 = "hello"; String s2 = "hello";`,s1和s2实际上指向内存中的同一对象,因此`s1 == s2`会返回`true`。然而,如果通过`new`关键字创建不同的`String`对象,即使内容相同,它们也是不同的对象,如`String s1 = new String("hello"); String s2 = new String("hello");`这时`s1 != s2`。 教程还涉及了如何从键盘读取用户输入。通常,我们使用`System.in.read()`来逐个读取字符。需要注意的是,不同操作系统对换行符的处理可能不同,Windows下是`\r\n`,Unix和Linux下是`\n`。在示例代码中,当读到`\n`(换行符)时,会把当前缓冲区内的字符构建一个新的`String`对象`strInfo`,并检查其内容是否为"bye"。如果是,则结束程序,否则输出并清空缓冲区,等待下一次输入。在处理键盘输入时,正确识别和处理换行符是必不可少的步骤,特别是在跨平台的程序设计中。