Download presentation
Presentation is loading. Please wait.
1
Java程序设计 第8章 字符串和文本I/O
2
学习目标 掌握String类处理固定长度的字符串 了解Character类处理单个字符 掌握StringBuffer类处理可变长度字符串
使用File类处理文件 使用PrintWriter类向文件写数据 使用Scanner类从文件读数据
3
String类 java.lang.String表示一个固定长度的字符序列。 构造函数 长度(length) 获取字符(charAt)
连接(concat) 截取(substring) 比较(equals, equalsIgnoreCase, compareTo, startWith, endWith, regionMatch) 转换(toLowerCase, toUpperCase, trim, replace) 查找(indexOf, lastIndexOf) 字符串和数组间转换(getchars, toCharArray) 字符串和数字间转换(valueOf)
4
构造函数 从字面值创建字符串 由于字符串经常使用,java提供了创建字符串的简写形式。
String newString = new String(stringLiteral); 例如: String message = new String("Welcome to Java"); 由于字符串经常使用,java提供了创建字符串的简写形式。 String newString = stringLiteral; String message = "Welcome to Java";
5
字符串是不可变的 字符串对象创建之后,其内容是不可修改的。 String s; s = “java”; s = “HTML”; s s
6
规范字符串 由于字符串是不可变的,为了提高效率和节省内存,如果两个字符串由于相同的字面值创建的,那么java虚拟机只创建一个字符串对象。这样的字符串称为规范字符串(canonical string)。 可以使用字符串对象的intern方法返回标准化字符串。 : String "Welcome to Java" String s = "Welcome to Java"; String s1 = new String("Welcome to Java"); String s2 = s1.intern(); String s3 = "Welcome to Java"; System.out.println(s1 == s); //false System.out.println(s2 == s); //true System.out.println(s3 == s); //true : String "Welcome to Java"
7
比较字符串 equals方法用于比较两个字符串是否包含相同的内容: equalsIngnoeCase忽略大小写比较内容是否相同
两个字符串内容相同,返回true 两个字符串内容不同,返回false equalsIngnoeCase忽略大小写比较内容是否相同 regionMatch比较部分内容是否相同 startsWith判断是否以某个字符串开始 endsWith判断是否以某个字符串结束 compareTo方法用于比较两个字符串的大小,即第一个不同字符的差值。s1.compareTo(s2)的返回值: 当两个字符串相同时,返回0 当s1按字典排序在s2之前,返回小于0的值 当s1按字典排序在s2之后,返回大于0的值 Example:TestCompare.java
8
字符串长度和获取单个字符 调用length()方法可以获取字符串的长度。
例如: message.length()返回15 charAt(index)方法可以获取指定位置的字符。index的值必须在0到s.length()-1之间。 message.charAt(0)返回字符’W’ W e l c o m t J a v message.charAt(0) message.charAt(14) 1 2 3 4 5 6 7 8 9 10 11 12 13 14
9
连接字符串 concat方法用于连接两个字符串。例如: 使用加号(+)连接两个字符串。例如: 连接操作返回一个新的字符串。
String s3 = s1.concat(s2); 使用加号(+)连接两个字符串。例如: String s3 = s1 + s2; s1 + s2 + s3 等价于s1.concat(s2).concat(s3) 连接操作返回一个新的字符串。
10
截取子串 subString用于截取字符串的一部分,返回新字符串。
public String substring(int beginIndex, int endIndex) 返回字符串的子串。子串从beginIndex开始,直到endIndex-1 public String substring(int beginIndex) 返回字符串的子串。子串从beginIndex开始,直到字符串的结尾。 W e l c o m t J a v 1 2 3 4 5 6 7 8 9 10 11 12 13 14 message.substring(0, 11) message.substring(11)
11
字符串转换 toLowerCase将字符串转换成小写形式 toUpperCase将字符串转换成大写形式 trim删除两端的空格
replace字符替换 Example:TestConvert.java
12
查找字符或字符串 indexOf返回字符串中字符或字符串匹配的位置,返回-1表示未找到。
"Welcome to Java".indexOf('W') returns 0. "Welcome to Java".indexOf('x') returns -1. "Welcome to Java".indexOf('o', 5) returns 9. "Welcome to Java".indexOf("come") returns 3. "Welcome to Java".indexOf("Java", 5) returns 11. "Welcome to Java".indexOf("java", 5) returns -1. "Welcome to Java".lastIndexOf('a') returns 14.
13
字符数组和字符串间的转换 toCharArray将字符串转换成字符数组 String s = “Java”; 将字符数组转换成字符串
char[] charArray = s.toCharArray(); 将字符数组转换成字符串 使用String的构造函数 new String(new char[] {‘J’,a’,v’,a’}); 使用valueOf方法 String.valueOf(new char[] {‘J’,‘a’,‘v’,‘a’});
14
基本数据类型和字符串间的转换 valueOf方法将基本数据类型转换为字符串。例如 字符串转换为基本类型
String s1 = String.valueOf(1.0); //“1.0” String s2 = String.valueOf(true); //“true” 字符串转换为基本类型 Double.parseDouble(str) Integer.parseInt(str) Boolean.parseBoolean(str)
15
例 判断回文 回文是指顺读和倒读都一样的词语。例如“mom”, “dad”, ”noon”都是回文。编写程序,判断一个字符串是否是回文。
Example:CheckPalindrome.java
16
Character类 Character类的作用 方法 将char类型的数据封装成对象 包含处理字符的方法和常量
isDigit方法判断一个字符是否是数字 isLetter方法判断一个字符是否是字母 isLetterOrDigit方法判断一个字符是否是字母或数字 isLowerCase方法判断一个字符是否是小写 isUpperCase方法判断一个字符是否是大写 toLowerCase方法将一个字符转换成小写 toUpperCase方法将一个字符转换成大写
17
例 统计字符串中字符的个数 编写程序,统计字符串每个字符出现的次数。假定字母不区分大小写。 解决方案
使用String类的toLowerCase方法,将字符全部转换成小写字母。 创建一个包含26个整数的数组,对每个字母出现的次数进行计数。 Example:CountEachLetter.java
18
StringBuffer StringBuffer用于处理可变内容的字符串。 append方法在字符串的结尾追加数据
insert方法在指定位置上插入数据 reverse方法翻转字符串 replace方法替换字符 toString方法返回String对象 capacity方法返回缓冲区的容量 length方法返回缓冲区中字符的个数 setLength方法设置缓冲区的长度 charAt方法返回指定位置的字符 setCharAt方法设置指定位置的字符
19
例 检查回文 编写程序,检查回文,并忽略不是字母和数字的字符。 解决方案
创建一个新的StringBuffer,将字符串的字母和数字添加到StringBuffer中,返回过滤后的String对象。 翻转过滤后的字符串,并与过滤后的字符串进行比较,如果内容相同则是回文。 Example:PalindromeIgnoreNonAlphanumeric.java
20
命令行参数 可以从命令行向java程序传递参数。参数以空格分隔,如果参数本身包含空格,用双引号括起来。
格式: java 类名 参数1 参数2 … 例如 java TestMain “First num” alpha 53 命令行参数将传递给main方法的args参数。args是一个字符串数组,可以通过数组下标访问每个参数。 public static void main(String[] args)
21
例 使用命令行参数 编写程序,执行整数的二元操作。程序接收3个参数:一个运算符和两个整数。例如: java Calculator 2 + 3
输出 2 + 3 = 5 Example:Calculator.java
22
java.io.File类 File对象表示文件系统的文件或路径。 获取文件路径名的各组成部分 测试底层文件的信息 查询和更改文件
创建、删除、重命名文件 列出目录中的文件 Example:TestFileClass.java
23
java.io.PrintWriter类 PrintWriter用于以文本的形式输出对象、字符串和基本数据类型。 方法
PrintWriter pw = new PrintWriter(fileName); 方法 print println printf 提供了对以下数据类型的输出 char int float Object boolean char[] long double String Example:WriteData.java
24
使用java.util.Scanner读数据
Scanner可以从输入流、文件、字符串读取以空白字符分隔的令牌(token),并转换成指定的基本数据类型和字符串。 Example:ReadData.java
Similar presentations