Java高级编程:深入API与字符串操作
需积分: 3 124 浏览量
更新于2024-07-28
收藏 1.05MB DOC 举报
"Java高级编程教程,涵盖JAVASE,深入讲解JAVAAPI,特别是lang包中的String类和StringBuffer类,以及如何处理键盘输入的细节。"
在Java高级编程中,深入理解和运用JAVAAPI是至关重要的。这里我们主要关注的是`java.lang`包,它包含了Java语言的基本类,比如String类和StringBuffer类。这两个类都用于表示字符串,但它们在处理字符串的方式上有所不同。
String类是不可变的,这意味着一旦创建,它的内容就不能更改。例如,`String x = "a" + 4 + "c";` 这行代码在编译时会被优化为创建一个新的StringBuffer对象,添加元素,然后转换回String。这是因为直接连接字符串会创建新的String对象,这在大量操作时可能导致性能问题。
StringBuffer类则提供了可变的字符串,允许我们在已有字符串基础上进行追加、插入或删除操作,而无需每次都创建新的对象。例如,`StringBuffer sb = new StringBuffer().append("a").append(4).append("c").toString();` 这样的代码在运行时更为高效,特别是处理大量字符串操作时。
关于String对象的比较,由于字符串在Java中是对象,所以使用`==`比较的是引用,而不是内容。因此,当`Strings1 = "hello"; String s2 = "hello";`时,s1和s2指向相同的字符串常量池中的对象,所以`s1 == s2`为真。然而,如果通过`new`关键字创建了两个不同的String对象,如`Strings1 = new String("hello"); String s2 = new String("hello");`,那么它们是不同的对象,即使内容相同,`s1 != s2`。
在处理用户输入时,通常需要读取键盘输入的字符流。Java中的`System.in.read()`方法可以用来读取单个字节的输入。在处理文本输入时,需要注意不同操作系统对换行符的差异。例如,Windows系统使用`\r\n`作为换行,而Unix系统只使用`\n`。在编程时,应将这两种情况考虑在内。
以下是一个简单的示例,展示了如何读取键盘输入直到用户输入"bye"为止:
```java
public class ReadLine {
public static void main(String[] args) {
String strInfo = null;
int pos = 0;
byte[] buf = new byte[1024]; // 定义一个数组,存放换行前的各个字符
int ch = 0; // 存放读入的字符
System.out.println("Please input a string:");
while (true) {
try {
ch = System.in.read(); // 读取一个字节
} catch (Exception e) {
}
switch (ch) {
case '\r': // 回车时,不做处理
break;
case '\n': // 换行时,将数组内容放入字符串
strInfo = new String(buf, 0, pos);
if (strInfo.equals("bye")) { // 如果内容为"bye",退出程序
return;
} else { // 否则,输出并重置pos,准备下次存储
System.out.println("Received: " + strInfo);
pos = 0;
}
}
pos++; // 无论什么字符,都增加pos,表示下一个位置
}
}
}
```
这个示例展示了如何处理用户输入的每个字符,区分回车和换行,直到检测到"bye"时终止程序。理解这些基础概念对于深入学习Java高级编程至关重要,因为它们构成了许多复杂程序设计的基础。
221 浏览量
188 浏览量
2013-07-20 上传
183 浏览量
2011-03-17 上传
2019-03-27 上传
shangguanyunyao
- 粉丝: 0
- 资源: 5
最新资源
- 微信小程序-点餐
- ionicStudyWithTabs:带有 ngCordova 的离子模板项目
- note-taker
- XIANDUAN.rar
- 一种基于高通量测序的拷贝数变异检测自动化分析解读及报告系统.rar
- rasaxproject1
- GitHub Open All Notifications-crx插件
- gatsby-remark-component-images:一个Gatsby注释插件,将gatsby-plugin-sharp处理应用于html样式的markdown标签
- 易语言开关音频服务实现开关声音-易语言
- ComposeKmmMoviesApp
- HistogramComponentDemo.7z
- UA GPU-able Search-crx插件
- MYSQL数据库管理器(易语言2005年大赛三等奖)2010-10-27.rar
- native-api-notification-[removed]JavaScript中的本机通知API
- 将超像素作为输入MATLAB代码-laplacianseg:种子图像分割的拉普拉斯坐标
- MyDroid