haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 初中教育 > 初中语文初中语文

JAVA_13

发布时间:2014-01-19 17:05:10  

第十三课

Java控制台应用程序设计

1

本课内容
? Java命令行参数和系统属性

? 标准I/O,文件I/O
? 常用系统类

? Collection接口系列
? Deprecation类、属性和方法
2

命令行参数
? 在启动Java应用程序时可以一次性地向应用程 序中传递0~多个参数----命令行参数 ? 命令行参数使用格式:
java ClassName lisa "bily" "Mr Brown"

? 命令行参数被系统以 String数组的方式传递给 应用程序中的main方法,由参数args接收
public static void main(String[] args)

3

0901

命令行参数用法举例
1 public class Test13_1 { 2 public static void main(String[] args) { 3 for ( int i = 0; i < args.length; i++ ) { 4 System.out.println("args[" + i + "] = " + args[i]); 5 } 6 } 7 }
//运行程序Test13_1.java java Test13_1 lisa "bily" "Mr Brown" //输出结果: args[0] = lisa args[1] = bily args[2] = Mr Brown
4

系统属性(System Properties)
? 在Java中,系统属性起到替代环境变量的作用(环境变 量是平台相关的) ? 可使用 System.getProperties() 方法获得一个 Properties 类的对象,其中包含了所有可用的系统属性信息 ? 可使用 System.getProperty(String name) 方法获得特定 系统属性的属性值 ? 在命令行运行Java程序时可使用-D选项添加新的系统 属性
5

Properties 类
? ? Properties 类可实现属性名到属性值的映射,属 性名和属性值均为String类型. Properties类的 propertyNames() 方法可以返回 以Enumeration 类型表示的所有可用系统属性属 性名. Properties 类的 getProperty(String key) 方法获得 特定系统属性的属性值. Properties 类的 load 和 save 方法可以实现将系统 属性信息写入文件和从文件中读取属性信息.
6

? ?

0902

系统属性用法举例
import java.util.Properties; import java.util.Enumeration; public class Test13_2 { public static void main(String[] args) { Properties ps = System.getProperties(); Enumeration pn = ps.propertyNames(); while ( pn.hasMoreElements() ) { String pName = (String) pn.nextElement(); String pValue = ps.getProperty(pName); System.out.println(pName + "----" + pValue); } } } // java -DmyProperty=MyValue Test13_2
7

I/O控制台(Console I/O)
? System.out 提供向“标准输出”写出数据的功能 System.out为 PrintStream类型.

? System.in 提供从“标准输入”读入数据的功能
System.in 为InputStream类型. ? System.err提供向“标准错误输出”写出数据的功能 System.err为 PrintStream类型.

8

向标准输出写出数据
System.out/System.err的println/print方法
? ? println方法可将方法参数输出并换行 print方法将方法参数输出但不换行

?

print 和 println 方法针对多数数据类型进行了重写 (boolean, char, int, long, float, double 以及 char[], Object和 String).
print(Object) 和 println(Object) 方法中调用了参数的 toString()方法,再将生成的字符

串输出
9

?

0903

从标准输入读取数据
import java.io.*; public class Test13_3 { public static void main (String args[]) { String s; // 创建一个BufferedReader对象从键盘逐行读入数据 InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); try {// 每读入一行后向显示器输出 s = br.readLine(); while (!s.equals("")) { System.out.println("Read: " + s); s = br.readLine(); } br.close(); // 关闭输入流
} catch (IOException e) { // 捕获可能的IOException. e.printStackTrace(); }
10

}

}

Ex1 Inptut/Output
1. 练习,体会命令行参数的使用; 2. 练习,理解系统属性的含义和用法; 3. 练习,初步认识java语言的输入/输出机制;

11

文件输入输出
? ? java.io 包中定义与数据输入、输出功能有关的类, 包括提供文件操作功能的File类 创建File类对象
File f; f = new File("Test.java"); f = new File("E:\\ex\\","Test.java");

?

在Java中,将目录也当作文件处理 File类中提供了 实现目录管理功能的方法
File path = new File("E:\\ex\\"); File f = new File(path, "Test.java");
12

File类方法介绍
? 关于文件/目录名操作 ? 获取常规文件信息操作 String getName() long lastModified() String getPath() long length() String getAbsolutePath() boolean delete() String getParent() boolean renameTo(File newName)
? File 测试操作 boolean exists() boolean canWrite() boolean canRead() boolean isFile() boolean isDirectory() boolean isAbsolute(); ? 目录操作 boolean mkdir() String[] list()

13

文件I/O有关类型
? 文件输入
– 可使用FileReader类以字符为单位从文件中读入数据 – 可使用 BufferedReader 类的 readLine 方法以行为单位 读入一行字符

? 文件输出
– 可使用FileWriter类以字符为单位向文件中写出数据 – 使用PrintWriter类的print和println方法以行为单位写 出数据
14

文件输入举例
import java.io.*; public class Test13_4 { public static void main (String[] args) { String fname = "Test13_4.java"; File f = new File(fname); try { FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); String s = br.readLine(); while ( s != null ) { System.out.println("读入: " + s); s = br.readLine(); } br.close();// 关闭缓冲读入流及文件读入流的连接. } catch (FileNotFoundException e1) { System.err.println("File not found: " + fname); } catch (IOException e2) { e2.printStackTrace(); } } 15 }

文件输出举例
import java.io.*; public class Test13_5 { public static void main (String[] args) { File file = new File("tt.txt"); try { InputStreamReader is = new InputStreamReader(System.in); BufferedReader in=new BufferedReader(is); PrintWriter out = new PrintWriter(new FileWriter(file)); String s = in.readLine(); while (!s.equals("")) {// 从键盘逐行读入数据输出到文件 out.println(s); s = in.readLine(); } in.close(); // 关闭BufferedReader输入

流. out.close(); // 关闭连接文件的PrintWriter输出流. }catch (IOException e) {System.out.println(e); } } } 16

Ex2 File Input/Output
1. 结合命令行参数的使用,练习从已经 存在的文件中读入数据并显示的过程; 2. 结合命令行参数的使用,练习从标准 输入中读入数据并将数据写到文件中 的过程;

17

Math类
? Math类中定义了多个static方法提供常用数学 运算功能
– 截断操作(Truncation): ceil, floor, round – 取最大、最小及绝对值: max, min, abs – 三角函数: sin, cos, tan, asin, acos, atan, toDegrees, toRadians – 对数运算: log , exp – 其它: sqrt, pow, random – 常量: PI, E
18

String 类
?
?

String 类对象保存不可修改的Unicode字符序列
String类的下述方法能创建并返回一个新的String对象: concat, replace, substring, toLowerCase, toUpperCase, trim,String. 提 供 查 找 功 能 的 有 关 方 法 : endsWith, startsWith, indexOf,,lastIndexOf.

?

?
?

提 供 比 较 功 能 的 方 法 : equals, equalsIgnoreCase, compareTo.
其它方法: charAt ,length.
19

StringBuffer类
? StringBuffer类对象保存可修改的Unicode 字符序列

? 构造方法
– StringBuffer() – StringBuffer(int capacity) – StringBuffer(String initialString)

? 实现修改操作的方法:
– append, insert, reverse, setCharAt, setLength.
20

Ex3
1. 编 写 程 序 , 练 习 Math, String, StringBuffer类中有关方法的使用;

可参考jdk1.3\docs 文档

21

Collection API
? Collection API提供“集合”的功能 ? Collection API包含下述接口
– Colection: 将一组对象以集合元素的形式组织到一 起,在其子接口中分别实现不同的组织方式 – Set: Collection的子接口,不记录元素的保存顺序, 且不允许有重复元素 – List: Collection的子接口,记录元素的保存顺序, 且允许有重复元素

22

Collection API 层次结构
<<interface>>

Collection +add(element : Object) : boolean +remove(element : Object) : boolean +size() : boolean +isEmpty() : boolean +contains(element : Object) : boolean +iterator() : Iterator

<<interface>>

Set HashSet

<<interface>>

List ArrayList Vector
23

Set 接口用法举例
import java.util.*; public class Test13_6 { public static void main(String[] args) { HashSet h = new HashSet(); h.add("1st"); h.add("2nd"); h.add(new Integer(3)); h.add(new Double(4.0)); h.add("2nd"); // 重复元素, 未被加入 h.add(new Integer(3)); // 重复元素, 未被加入 m1(h); } public static void m1(Set s){ System.out.println(s); } } //本应用程序输出结果如下:[1st, 3, 2nd, 4.0]

24

List 接口用法举例
import java.util.*; public class Test13_7{ public static void main(String[] args) { ArrayList h = new ArrayList(); h.add("1st"); h.add("2nd"); h.add(new Integer(3)); h.add(new Double(4.0)); h.add("2nd"); // 重复元素, 加入 h.add(new Integer(3)); // 重复元素,加入 m1(h); } public static

void m1(List s){ System.out.println(s); } } //本应用程序输出结果如下:[1st, 2nd, 3, 4.0, 2nd, 3]

25

Deprecation
? ? Deprecation 关键字可用于标记类、属性和方法, 表明这些类,属性或方法已过时、不再提倡使用. Deprecation 成分均存在相应的替代类、属性或方 法,这些替代者可能采用了更标准化的命名惯例、 或功能更适用. 在移植Java代码时,可使用 –deprecation 选项获 得有关的详细信息. javac -deprecation MyFile.java

?

26

Deprecation举例(1)
public class HelloWorld{ public static void main(String args[]){ String f; f = System.getenv("java.class.path"); System.out.println(f); } }

编译: javac HelloWorld.java输出结果:
HelloWorld.java uses or overrides a deprecated API. Recompile with "deprecation" for details. 1 warning Process completed.

27

Deprecation举例(2)
public class HelloWorld{ public static void main(String args[]){ String f; f = System.getenv("java.class.path"); System.out.println(f); } } 再次编译: javac –deprecation HelloWorld.java输出结果:
HelloWorld.java:4: Note: The method java.lang.String getenv(java.lang.String) in class java.lang.System has been deprecated. f = System.getenv("java.class.path"); ^ HelloWorld.java uses or overrides a deprecated API. Please consult the documentation for a better alternative. 1 warning Process completed.
28

Deprecation举例(3)
public class HelloWorld{ public static void main(String args[]){ String f; f = System.getProperty("java.class.path"); System.out.println(f); } } 修改后编译通过 运行输出结果:
D:\lgz\ex;C:\jdk1.3\jre\lib\rt.jar;C:\jdk1.3\jre\lib\i18n.jar;C:\jdk1.3\lib\dt.jar; C:\jdk1.3\lib\tools.jar

29

Ex4
1. 体会Set与List接口的区别; 2. 查看 jdk1.3\docs 文档理清各种数据 类 型 的 性 能 及 用 法 ; 体 会 “ Deprecation” 方法及其处理方式。 (选做)

30

总结
? 课程总结

31


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com