JAVA精华:深入API与String、StringBuffer解析

需积分: 9 1 下载量 19 浏览量 更新于2024-07-26 收藏 1.55MB DOC 举报
"这份文档是关于JAVA精华的,主要涵盖JAVASE部分,特别是深入讲解了JAVAAPI中的Lang包,特别是String类和StringBuffer类。文档指出String类在初始化后不可变,而StringBuffer类则支持字符串内容的变化。此外,还提到了字符串常量的特性以及如何处理用户输入,包括识别和处理不同平台下的换行符。" 在Java编程中,String类和StringBuffer类是处理文本数据的常用工具。String类是不可变的,这意味着一旦创建,其内容就不能更改。例如,`String x = "a" + 4 + "c";` 这样的表达式在编译时会被优化为创建一个新的StringBuffer对象,然后通过append方法添加各个部分,最后调用toString方法转化为String。这种机制确保了String的不可变性,但同时也意味着频繁的操作会导致大量的内存开销,因为每次修改都需要创建新的对象。 相比之下,StringBuffer类提供了一个可变的字符串表示,允许在现有字符串基础上进行追加或插入操作,而不必每次都创建新的对象。例如,`StringBuffer sb = new StringBuffer().append("a").append(4).append("c").toString();` 这样的代码会创建一个StringBuffer对象,然后逐步添加内容,最后通过toString方法将其转换为String。这种方式在处理大量字符串操作时更加高效。 在处理用户输入时,Java提供了System.in.read()方法来读取标准输入流的一个字节。在Windows系统中,回车换行由`\r\n`表示,而在Unix系统中,仅使用`\n`作为换行。因此,当读取用户输入时,需要考虑到这些差异。在给出的代码示例中,程序会读取输入直到遇到"bye"为止。如果读到的是`\r`,则不做处理;如果是`\n`,则将当前缓冲区的内容(通过byte数组buf存储)转化为String并检查是否等于"bye"。如果等于"bye",则结束程序,否则清空pos并将数组位置重置为0,准备接收下一次输入。 这份JAVA精华文档提供了关于Java基础API的重要知识点,尤其是String与StringBuffer的区别,以及如何处理用户输入,这些对于任何Java开发者来说都是基础且重要的知识。