Java String与StringBuffer深度解析

需积分: 3 1 下载量 18 浏览量 更新于2024-07-30 收藏 1.88MB DOC 举报
"Java编程中的核心知识点,包括String类与StringBuffer类的比较以及如何从控制台逐行读取用户输入。" 在Java编程中,`String`类和`StringBuffer`类是处理文本字符串的两种常见方式。`String`类在`java.lang`包中,属于基础类型,其特点是不可变性,一旦创建就无法修改。这意味着每次对`String`对象进行操作(如添加、删除字符),都会创建一个新的`String`对象。这在处理大量字符串操作时可能导致性能下降,因为频繁的对象创建会增加内存开销。 相比之下,`StringBuffer`类提供了可变的字符串,允许我们在现有字符串基础上进行修改,而无需每次都创建新对象。`StringBuffer`包含了一系列的方法,如`append()`用于追加字符或字符串,`insert()`用于插入字符或字符串,以及`delete()`用于删除指定位置的字符。这些方法使得在需要频繁修改字符串的情况下,`StringBuffer`成为更优的选择。例如,`String x = "a" + 4 + "c"`在编译时会被优化为`String x = new StringBuffer().append("a").append(4).append("c").toString();` 关于字符串常量,Java中字符串字面值(如`"hello"`)会被当作匿名对象存储在字符串池中。因此,当两个字符串字面量相同时,它们实际上是指向同一个对象,如`String s1 = "hello"; String s2 = "hello";`此时`s1 == s2`为真。然而,通过`new`关键字创建的`String`对象会创建新的实例,即使内容相同,它们也不相等,例如`String s1 = new String("hello"); String s2 = new String("hello");`这时`s1 != s2`。 在控制台上逐行读取用户输入是一个常见的任务。在给出的代码段中,`readline`类展示了如何实现这一功能。它使用`System.in.read()`方法来读取标准输入的一个字节,然后根据换行符('\n')或回车符('\r')来处理用户的输入。在Windows系统中,换行通常由`\r\n`表示,而在Unix系统中,仅使用`\n`。这段代码会在读取到用户输入的"bye"时结束程序,否则会显示输入并清空缓冲区,准备接收下一行输入。 总结来说,这个摘要涵盖了Java中字符串处理的关键概念,包括`String`和`StringBuffer`的区别,以及如何通过字节流从控制台读取用户输入,并处理换行情况。这些是Java程序员日常开发中经常会遇到的基本技能。
2017-06-08 上传