10月7日 星期六 阴
编写字符界面,java 类库的具体用法。如命令行参数,properties, math、string、arraylist.HaspMap.HashTable等。还有就是, 在Java 中,将文件路径也当作文件来处理.
命令行参数如果是(String[] args)的话,一般要用Interger.parseInt(param1)来转换为Integer类型.
* 在windows 下,通过java.exe可执行程序来运行Java 程序,格
式如下
– java ClassName [para_list]
* 在启动Java 应用程序时可以一次性地向应用程序中传递
0~ 多个参数----命令行参数
* 命令行参数通过public static void main(String[] args) 中的main方法接收.
Properties类
* Properties类实现了从名字到值的映射
* propertyNames()方法返回一个包含所有属性名的
Enumeration对象
* getProperty()方法返回一个代表该属性值的字符串
* 使用load() 或store()方法能从文件读入属性集或将属性集写
入文件
* Properties在java.util包中
系统属性例子
import java.util.Properties;
import java.util.Enumeration;
public class TestProperties {
public static void main(String[] args) {
Properties props = System.getProperties();
Enumeration prop_names = props.propertyNames();
while ( prop_names.hasMoreElements() ) {
String prop_name = (String) prop_names.nextElement();
String property = props.getProperty(prop_name);
System.out.println("property '" + prop_name + "' is '" + property + "'");
}
}
}
控制台输入/输出
* System.out可向标准输出设备输出
– 它是一个PrintStream对象
* System.in可从标准的输入设备输入
– 它是一个InputStream对象
* System.err可向标准的错误设备输出
– 它是一个PrintStream对象
从键盘输入例子(示例9-4)
import java.io.*;
public class KeyboardInput {
public static void main (String args[]) {
Scanner s = new Scanner(System.in);
System.out.println("Unix: Type ctrl-d or ctrl-c to exit." +
"\nWindows: Type ctrl-c to exit.");
// 每读入一行,向标准输出设备输出
while (s.hasNext()) {
System.out.println("Read: " + s.next());
}
}
}
向标准设备输出
* 使用System.out.println/System.out.print两个常用的方法向标
准设备输出
* println()方法将参数打印出来,并加上”\n”字符。
* print()方法,打印参数,但不加新行
* print和println方法对多数简单数据类型进行了重载(boolean,
char, int, long, float, double)和char[], Object以及String
* print(Object)或println(Object)将会调用该对象的toString()方
法,打印它的返回字符串
Math类
* Math类中包含了一组数学函数
– 截取:ceil、floor、round
– 变量的max 、min 、abs
– 三角函数:sin、cos、tan、asin、acos、atan、toDegrees
和toRadians
– 对数指数:log和exp
– 其它:sqrt、pow 、random
– 常数:PI 、E
String类
* String对象代表一组不可改变的Unicode 字符序列
* 它的方法可用来创造新的字符串:concat、replace 、
substring、toLowerCase、toUpperCase和trim。
* 查找字符的方法:endWith、startWith、indexOf 、
lastIndexOf。
* 比较字符的方法:equals、equalsIgnoreCase、compareTo。
* 其它:charAt、length()
StringBuffer类
* StringBuffer对象代表一组可改变的Unicode 字符序列
* 构建器:
– StringBuffer() 创建一个空的字符缓冲,长度为16个字符
容量;
– StringBuffer(int capacity) 用指定的初始容量创建一个空
的字符缓冲;
– StringBuffer(String initString) 创建包含initString 的字符缓
冲,并加上16个字符的备用空间。
* 缓冲的修改操作:append、insert 、reverse 、setCharAt、
setLength。
Collections (集合) API
* 一个collection(集合) 是用一个对象来代表一组对象,其中
的每个对象作为collection的一个元素。
* 在Collection API 中,代表对象集合的接口有:
– Collection 抽象的集合
– Set Collection 的子接口,一个无序无重复集
– List Collection 的子接口,一个有序可重复集
数组列表ArrayList
* 在编程中常常会遇到需要动态操纵数组,比如在
运行时增加和删除数组元素,而且有时在编译时
又不想确定数组大小希望它可以动态伸缩,在
java 中解决这一问题的方法是使用java.util包中的
ArrayList类
* ArrayList是List接口的一个可变长数组实现。
Set 接口
* Set 接口继承Collection 接口,而且它不允许集合
中存在重复项,每个具体的Set 实现类依赖添加
的对象的equals()方法来检查独一性。Set接口没
有引入新方法,所以Set就是一个Collection,只
不过其行为不同。
HashSet
* HashSet扩展AbstractSet 并且实现Set接口。它创建
一个类集,该类集使用散列表进行存储。散列表
通过使用称之为散列法的机制来存储信息。
* 在散列(hashing)中,一个关键字的信息内容被
用来确定唯一的一个值,称为散列码
(hashcode)。而散列码被用来当做与关键字相
连的数据的存储下标。关键字到其散列码的转换
是自动执行的?你看不到散列码本身。你的程序
代码也不能直接索引散列表。
* 散列法的优点在于即使对于大的集合,它允许一
些基本操作如add(),contains(),remove
()和size ()方法的运行,时间保持不变。 这些都是很重要的类啊,得自己多看API文档才行啊!!
Iterator接口
历等增强处理功能
– 可以通过Collection接口中定义的iterator() 方法获得一
个对应的Iterator(实现类)对象
– Set (实现类)对象对应的Iterator仍然是无序的
– List(实现类)对象对应的ListIterator对象可以实现对所
含元素的双向遍历: 使用next()方法和previous()方法
* void add(Object obj) 将obj插入列表中的一个元素之后,
该元素在下一次调用next( )方法时,被返回
* boolean hasNext( )
如果存在更多的元素,则返回true,否则返回false
* Object next( )
返回下一个元素。如果没有下一个元素,则引发
NoSuchElementException异常
* void remove( )
删除当前元素,如果试图在调用next( )方法之后,调用
remove( )方法,则引发IllegalStateException异常 这些都是很重要的类啊,得自己多看API文档才行啊!!
映射(map)
* 映射(map)是一个存储关键字和值的关联或者说是关
键字/值对的对象。给定一个关键字,可以得到它的值。
关键字和值都是对象。关键字必须是唯一的。但值是可
以被复制的。有些映射可以接收null 关键字和null值。而
有的则不行。
HashTable 与HashMap
* HashTable不允许null值(key和value都不可以),HashMap 允
许null值(key和value都可以) 。HashTable 的方法是同步的
,HashMap 未经同步,所以在多线程场合要手动同步
HashMap这个区别就像Vector和ArrayList一样。HashTable
有一个contains(Object value),功能和containsValue(Object
value)功能一样。HashTable使用Enumeration ,HashMap使
用Iterator。 HashTable与HashMap就以上这一些不同点了,(同步,不同步)这些都是很重要的类啊,得自己多看API文档才行啊!!
File对象常用方法
* 和文件名相关
– String getName()
– String getPath()
– String getAbsolutePath()
– String getParent()
– boolean renameTo(File newName)
* 文件检测
– boolean exists()
– boolean canWrite()
– boolean canRead()
– boolean isFile()
– boolean isDirectory()
– boolean isAbsolute()
* 获取常规文件信息
long lastModified()
long length()
boolean delete()
* 目录操作
boolean mkdir()
String[] list()
文件过滤
* 通过在File 中的list()方法中加入FileNameFilter参
数,可以只将满足条件的文件列出来
* FileNameFilter是一个接口,只有一个accept()方法
需要实现