PowerPoint 演示文稿

Download Report

Transcript PowerPoint 演示文稿

第六章
序
6.1
6.2
6.3
6.4
6.5
6.6
6.7
编写文本应用程
命令行参数
包装类
String 与 StringBuffer 类
使用系统资源
通用集合库
排序与查找
Math 类
1
第六章
编写文本应用程序
6.1 命令行参数
public class Echo {
例子: public static void main (String[] args) {
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
}
}
运行:
运行:
java Echo Drink Hot Java
java Echo “Drink Hot Java”
Drink
Drink Hot Java
Hot
Java
2
第六章
编写文本应用程序
6.1 命令行参数
说明:
如果参数输入的是数字,则需要将字符转换成数字类型。
例如:
int firstArg;
if (args.length > 0)
firstArg = Integer.parseInt(args[0]);
3
第六章
编写文本应用程序
6.2 包装类
将基本的数据类型看作对象。java.lang包为这些类型定义
了类包装,并提供了一些方法,能够实现基本功能。
4
第六章
编写文本应用程序
6.2 包装类
将基本的数据类型看作对象。java.lang包为这些类型定义
了类包装,并提供了一些方法,能够实现基本功能。
例题:
int pInt = 500;
Integer i1 = new Integer( pInt);
int p2 = i1. parseInt();
5
第六章
编写文本应用程序
6.3 String 与 StringBuffer 类
1.
定义:
String : 常量字符串。
SrtingBuffer: 可变化的字符串。
2. 创建String 与 StringBuffer


String : "Gobbledy ." ; new String("Gobbledy
");
StringBuffer: StringBuffer()
StringBuffer( int
capacity)
StringBuffer( String
initialString)
6
第六章
编写文本应用程序
6.3 String 与 StringBuffer 类
3. String和 StringBuffer类有很多方法:

String :charAt ,length, indexOf ,
lastIndexOf,
substring , toLowerCase ,
toUpperCase ,equals ,
equalsIgnoreCase 等。

StringBuffer:append , insert , reverse ,
setCharAt ,
setLength
7
第六章
编写文本应用程序
6.3 String 与 StringBuffer 类
将对象转变成字符串
有两种方法:
4.


toString 方法:例如包装类:Character, Integer,
Double。
valueOf 方法:String.valueOf()
System.out.println(String.valueOf(Math.PI));
8
第六章
编写文本应用程序
6.3 String 与 StringBuffer 类
5.
将字符串转变成数值
四个包装类(Integer, Double, Float, and
Long)用valueOf()方法完成转换。
例如:
String piStr = "3.14159";
Float pi = Float.valueOf(piStr);
9
第六章
编写文本应用程序
6.3 String 与 StringBuffer 类
6. 字符串和java 编译器
当处理字符串常量和字符串连接,java编译器自动使用
String and StringBuffer。
例如:
•
•
•
•
•
"Hello World!"
int len = “Goodbye Cruel World”.length();
String s = "Hola Mundo";
String cat = "cat"; System.out.println("con" + cat +
"enation");
System.out.println("Java's Number " + 1);
10
第六章
编写文本应用程序
6.4 使用系统资源
1.
2.
3.
System类
标准输入输出(I/O)流
系统属性
11
第六章
编写文本应用程序
6.4 使用系统资源
1.
System类
System类的方法和变量全是类方法和类变量。System类不
能被实例化,它的方法和变量均通过类名直接引用。
例如:
class UserNameTest {
public static void main(String[] args) {
String name;
name = System.getProperty("user.name");
System.out.println(name);
}
}
12
第六章
编写文本应用程序
6.4 使用系统资源
2.
标准输入输出(I/O)流



System.in : 标准输入
System.out :标准输出
System.err :标准错误输出
Standard Output 和 Error Streams 有以下输出方式:
print, println, and write
例如:
System.out.print("Duke is not a penguin!\n");
等价于:System.out.println("Duke is not a penguin!");
13
第六章
编写文本应用程序
6.4 使用系统资源
2.
标准输入输出(I/O)流
print and println 的参数:
Object, String, char[], int, long, float, double,
and boolean.
println()也可以为空,表示换行。
见例题:DataTypePrintTest.java
14
第六章
编写文本应用程序
6.4 使用系统资源
3. 系统属性
系统类中管理了一组有关当前运行环境的属性。
key/value 对。例如:
java.vm.version
path.separator
file.separator
user.home
java.specification.vendor
user.language
user.name
1.2.2
:
/
/home/basham
Sun Microsystems Inc.
en
basham
15
第六章
编写文本应用程序
6.4 使用系统资源
3. 系统属性
读系统属性


System. getProperties:返回一个
Properties对象
System. getProperty:返回某个属性的值。
例如:
Properties props =
System.getProperties();
System.getProperty("path.separator");
16
第六章
编写文本应用程序
6.5 通用集合库
The Collections API





一个collection是一个对象,它包含了一组object对象。
The Collection API 包含了3个接口 ,它将object组
织为:
Collection : 一组 objects ,没有特殊的顺序,
允许重复元素。
个List(列表):必须按特定的顺序容纳元素,允
许重复元素。
一个Set(集):没有特殊的顺序,不可包含任何
重复的元素。
17
第六章
编写文本应用程序
6.5 通用集合库
18
第六章
编写文本应用程序
6.5 通用集合库
见例题:
setExmple.java
ListExmple.java
19
第六章
编写文本应用程序
6.5 通用集合库
Map

Map(接口) 维持“键-值”对应关系
(对),以便通过一个键查找相应的值

HashMap基于一个散列表实现(用它代替
Hashtable)。针对“键-值”对的插入和检
索,这种形式具有最稳定的性能。
20
第六章
编写文本应用程序
6.5 通用集合库
21
第六章
编写文本应用程序
6.5 通用集合库
见例题:
PrintingContainers.java
填充containers:只能List, 不能Set or Map
见例题:
FillingLists.java
22
第六章
编写文本应用程序
6.5 通用集合库
Container 缺点:
不知道数据类型
 必须自己做类型转换

见例题:Cat.java
Dog.java
CatsAndDogs.java
23
第六章
编写文本应用程序
6.5 通用集合库
Iterators反复器:
反复器是用来提取集合中的元素的。


An Iterator of a Set 是无序的。
ListIterator of a List 能前后遍历
移动
24
第六章
编写文本应用程序
6.5 通用集合库
25
第六章
编写文本应用程序
6.5 通用集合库
Iterators反复器:
见例题:CatsAndDogs2.java
更加通用的例子:
HamsterMaze.java
见Iterators反复器和Collection 的综合例题:
Collection1.java
26
第六章
编写文本应用程序
6.5 通用集合库
比较List, LinkedList, ArrayList
List(接口) 顺序是List最重要的特性:
元素按照规定的顺序排列。
 List为Collection添加了大量方法:

在List中部插入和删除元素
 (ListIterator(列表反复器),利用它可在一个
列表里朝两个方向遍历,同时插入和删除位于列
表中部的元素

27
第六章
编写文本应用程序
6.5 通用集合库
比较List, LinkedList, ArrayList

ArrayList: 允许我们快速访问元素,但在从列表中部
插入和删除元素时,速度却嫌稍慢。一般只应该用
ListIterator对一个ArrayList进行向前和向后遍历,不
要用它删除和插入元素;

LinkedList:可以高效率地在列表中部进行插入和删
除操作。但在进行随机访问时,速度慢. 提供了
addFirst(),addLast(),getFirst(),getLast(),
removeFirst()以及removeLast()(未在任何接口或基
础类中定义),以便将其作为一个规格、队列以及
一个双向队列使用
28
第六章
编写文本应用程序
6.5 通用集合库
用LinkedList实现队列(queue)操作。
见例题:Queue.java
Map综合例题:
Map1.java
29
第六章
编写文本应用程序
6.6 排序和搜索
.数组
Arrays类为所有基本数据类型的数组提供了一
个过载的sort()和binarySearch(),它们亦可用于
String和Object。
见例题:Array1.java
30
第六章
编写文本应用程序
6.6 排序和搜索
. 列表
可用与数组相同的形式排序和搜索一个
列表(List)。用于排序和搜索列表的静
态方法包含在类Collections中,sort(List)
用于对一个实现了Comparable的对象列
表进行排序;binarySearch(List,Object)
31
第六章
编写文本应用程序
6.5 通用集合库
总结:






数组元素可以是基本数据类型和引用数据类型。数
组元素类型明确。可以是多维。缺点是一旦创建好
后,不能变大小。
Colloction存放一组单个元素,而Map存放一组元素
对
List向数组一样存放有序的元素,但不能存放基本
数据类型,读取元素时需要类型转换。
ArrayList用于随机读取数据。LinkedList用于从中间
插入删除大量数据。
LinkedList 用于实现队列和堆栈
Map 用于连接一对object-object。HashMap用于快速
查找。
32
第六章
编写文本应用程序
6.5 通用集合库
总结:

Set 不能接受重复元素。HashSet用于提供快
速查找。
33
第六章
编写文本应用程序
6.5 Enumeration 接口
Enumeration 接口使用两个方法来检索一系列对
象或值:
nextElement():获得下一个对象
hasMoreElements():检查序列中是否还有更多
的对象
注意:
Enumeration 接口的的元素只能被访问一次。
34
第六章
编写文本应用程序
6.6 Vector 类
Vector 类实现了可增长数组的功能。数组既可以变大
也可以变小。
功能:增加、删除和插入对象;测试Vector中的内容
和检索指定的对象。
见例题:example66Vector.txt
35
第六章
编写文本应用程序
6.7 堆栈 Stack
Stack类扩展了Vector类,继承了Vector类的方法。它
实现了后进先出的功能。
创建Stack类: new Stack()
常用方法:
Object push(Object o)
Object pop()
Object peek()
boolean empty()
int search(Object o)
见例题:example67Stack.txt
36
第六章
编写文本应用程序
6.8 散列表 Hashtable
散列表也可以存储未定数目的对象对(key/element)。它可以
实现将不同类型的对象放入同一个散列表。
一些常用的方法有:
put(Object key, Object value)
get(Object key)
remove(Object Key)
elements()
keys()
size()
isEmpty()
见例题: example68HashApp.txt
37
第六章
编写文本应用程序
6.8 散列表 Hashtable
散列表可以实现将不同类型的对象放入同一个散列表。
它要与强制类型转换相配合。
见例题:example68Hashtable.txt
38
第六章
编写文本应用程序
6.9 StringTokenizer 类
StringTokenizer 类用来创建String对象的语法分析程序。
它根据一组定界符对字符串进行语法分析。它执行了
Enumeration接口。
一些常用的方法有:
hasMoreTokens()
nextToken()
countTokens()
nextElement()
hasMoreElements()
见例题:example69Token.txt
39
第六章
编写文本应用程序
6.10 Math 类
Math类中包含了一组静态数学方法,包括:代数、
三角、指数、对数、随机数等。
例题:
public class MathApp {
public static void main(String[] args) {
System.out.println(Math.E);
System.out.println(Math.PI);
System.out.println(Math.abs(-1));
System.out.println(Math.max(3,5));
for(int i=0;i<5;i++)
System.out.print(Math.random()+" ");
System.out.println();
}
}
40
作业:第六章作业.txt
41