Java常用系统类.ppt

上传人:牧羊曲112 文档编号:6509786 上传时间:2023-11-07 格式:PPT 页数:85 大小:1.28MB
返回 下载 相关 举报
Java常用系统类.ppt_第1页
第1页 / 共85页
Java常用系统类.ppt_第2页
第2页 / 共85页
Java常用系统类.ppt_第3页
第3页 / 共85页
Java常用系统类.ppt_第4页
第4页 / 共85页
Java常用系统类.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《Java常用系统类.ppt》由会员分享,可在线阅读,更多相关《Java常用系统类.ppt(85页珍藏版)》请在三一办公上搜索。

1、第七章 常用系统类,主要任务:介绍Java常用的系统类,包括Java Applet、字符串类、输入输出流类、数学函数类、日期类、随机数类以及向量类等。,本章主要内容,1.Applet类2.字符串类3.输入输出流类4.其他常用类,7.1 Applet类,7.1.1 Applet的特点,Applet是一种在Web页中运行的小应用程序。Java的Applet与Application有一个明显的区别:Application是独立程序,可直接通过Java解释器来解释运行;而Applet只能在Web浏览器上运行,必须通过标签将编译后的字节码文件嵌入到Web页中。,Applet安全基础,Applet被设计为

2、从远程站点下载然后在本地执行,所以安全问题非常重要。如果用户在游览器中启用了Java,那么浏览器就会自动下载网页中的Applet代码并执行。用户没有机会来确认或者停止Applet的运行。Applet的限制执行环境常常称作“沙箱(sandbox)”。运行在沙箱中的Applet不能更改或探查用户的系统。,Applet 的限制有以下几个方面,不能加载库函数或定义本地方法。不能读写本地计算机上的文件系统。除了下载它的服务器外不能和其它主机建立网络通讯。不能运行本地计算机上的任何程序。不能读取某些系统特性。Applet打开的窗口和Application打开的窗口在外观上有所不同。,Applet能够做的事

3、情:,可以和它所在的Web服务器建立网络连接。能使Web浏览器方便地显示HTML文档内容。离开网页后Applet可以继续运行也可以停止运行。可在状态栏显示短信息。可以调用同一个网页上的其它Applet中的公共方法。可以播放声音文件。可以从HTML的标签中获取参数。从本地计算机上加载Applet时没有从网络加载时所附带的限制。,7.1.2 Java和HTML的关系,HTML是网页设计语言,它采用一整套标记来定义Web页。一个HTML文件可定义一个Web页,文件的扩展名为.html或.htm。HTML可以没有Applet,但很多重要功能将无法实现,而Applet有赖于HTML才能运行。,7.1.2

4、 Java和HTML的关系,含有Java Applet的Web页,Web页源文件部分内容,7.1.3 Applet的生命周期与主要活动,程序运行从开始到结束的过程称为程序的生命周期。独立应用程序的生命周期从main()方法开始,直到运行结束。而Applet应用程序的生命周期与浏览器相关。作为浏览器的一部分,Applet程序何时运行,何时结束都由浏览器控制,Applet对象只是作为浏览器窗口中运行的一个线程。,浏览器与Applet具有如下关系:,在浏览器中打开包含Applet对象的页面时,创建并初始化其中的Applet对象。显示Applet时,启动Applet线程运行。不显示Applet时,停止

5、 Applet线程运行。在浏览器中关闭页面窗口时,销毁Applet对象。,例7.1 一个显示生命周期的Applet,如图所示。,import java.Applet.Applet;import java.awt.Graphics;public class Life extends Applet StringBuffer buffer=new StringBuffer();public void init()addWords(初始化.);public void start()addWords(开始.);public void stop()addWords(停止.);,public void de

6、stroy()addWords(清除.);void addWords(String s)System.out.println(s);buffer.append(s);repaint();public void paint(Graphics g)g.drawString(buffer.toString(),5,15);,Applet的生命周期,Applet的主要活动内容,1初始化2开始运行3停止运行4清除5画出(显示)6刷新,7.1.4 HTML和Applet的参数传递,HTML语言有一个标签,可加入各种属性来指定与Applet有关的内容,其中code、width、height是必选属性。如果需

7、要向Applet传递参数,可通过param标签来指定。,例7.2 Applet的参数传递,如图所示。,import java.Applet.Applet;import java.awt.Graphics;public class AP2 extends Applet String string=null;int x,y;public void init()string=getParameter(message);x=Integer.parseInt(getParameter(xPos);y=Integer.parseInt(getParameter(yPos);,public void pai

8、nt(Graphics g)if(string!=null)g.drawString(string,x,y);g.drawString(参数x为+x,30,60);g.drawString(参数y为+y,30,90);,相应的AP2.html文件内容如下:,7.1.5 Applet标签属性,语法格式如下:alternateHTML,例7.3 通过参数给Applet程序传递不同字号、不同颜色、文本内容的例子。如图所示。,AP3.html代码如下:其中,颜色的值为16进制数007000。,AP3.java源程序代码如下:import java.Applet.*;import java.awt.*;

9、public class AP3 extends Applet private String text;private int size,color;public void init()text=getParameter(text);/获得文本参数 size=Integer.parseInt(getParameter(size);/获得字体大小 color=Integer.parseInt(getParameter(color),16);/获得颜色值,public void paint(Graphics g)Color c=new Color(color);g.setColor(c);Font

10、 f=new Font(,1,size);g.setFont(f);g.drawString(text,10,50);/显示指定大小颜色的字符串,Applet的执行,1.要在支持 Java 的浏览器中查看 Applet,则需要加载 HTML 文件。Applet 会显示为 HTML 网页的一部分。要运行 Applet,浏览器必须启用 Java 插件2.在命令提示符处键入下列代码:appletviewer AP3.html,Applet 和Application,7.2 字符串类,Java中的字符串也是类。由于使用频繁,有时也被视为基本类型遇到双引号自动创建String类的对象提供字符串运算符,字

11、符串的连接:+定长字符串:String类(效率较高)不能更改可变字符串:StringBuffer类(使用灵活)可追加、插入、修改,但内存管理复杂,7.2.1 字符串常量,使用“”定义字符串,使用定义字符。“abc”,”欢迎使用Java”都是字符串。a,b,c都是字符。Java会自动为字符串常量生成一个String类的对象,所以可以直接初始化String对象,如:String s=“Hello world!”,例7.4 字符串的翻转,如图所示。,import java.Applet.Applet;import java.awt.Graphics;public class StringRevers

12、e extends Applet public void paint(Graphics g)String str=This is a test string;g.drawString(正常字符串:+str,30,30);g.drawString(翻转字符串:+reverse(str),30,60);,public String reverse(String s)int len=s.length();StringBuffer buffer=new StringBuffer(len);for(int i=len-1;i=0;i-)buffer.append(s.charAt(i);return b

13、uffer.toString();,利用构造方法创建String类对象,利用构造方法创建StringBuffer类对象,7.2.2 字符串类的构造方法,例7.5 字符串的构造方法,如图所示。,import java.io.*;import java.Applet.Applet;import java.awt.Graphics;public class StringDemo extends Applet byte b=A,b,y,t,e,a,r,r,a,y;char c=A,c,h,a,r,a,r,r,a,y;String s1,s2,s3,s4,s5,s6,s7,s8,s9;StringBuf

14、fer b1,b2,b3;,public void init()b1=new StringBuffer();/创建一个空StringBuffer对象 b2=new StringBuffer(10);/创建长度为10的空StringBuffer对象 b3=new StringBuffer(A string buffer);/以字符串为参数创建StringBuffer对象 s1=new String();/创建一个空String对象 s2=new String(A string);/以字符串为参数创建String对象 s3=new String(b3);/以StringBuffer对象为参数创建S

15、tring对象 s4=new String(b);/以b为参数创建String对象,8位字节自动转为16位字符,s5=new String(b,2,4);/从b的第3位,取4个元素为参数创建String对象 try/如果下面的字符集编码不存在将抛出异常 s6=new String(b,2,10,GBK);/同s5,最后的字符串参数为字符集编码 s7=new String(b,GBK);/同s4,最后的字符串参数为字符集编码 catch(UnsupportedEncodingException e)/捕获异常 s8=new String(c);/以字符数组c为参数创建String对象 s9=ne

16、w String(c,2,4);/从c的第3位,取4个元素为参数创建String对象,public void paint(Graphics g)g.drawString(s1=+s1,20,20);g.drawString(s2=+s2,20,35);g.drawString(s3=+s3,20,50);g.drawString(s4=+s4,20,65);g.drawString(s5=+s5,20,80);g.drawString(s6=+s6,20,95);g.drawString(s7=+s7,150,20);g.drawString(s8=+s8,150,35);g.drawStri

17、ng(s9=+s9,150,50);g.drawString(b1=+b1.toString(),150,65);g.drawString(b2=+b2.toString(),150,80);g.drawString(b3=+b3.toString(),150,95);,7.2.3 String类的应用,1求字符串长度public int length()可返回字符串长度。例如:String s=欢迎使用Java语言;int len=s.length();len的值为10。注意:Java采用Unicode编码,每个字符为16位长,因此汉字和其它符号一样只占用一个字符。另外,字符串的length

18、方法和表示一个数组长度的length是不一样的,后者是一个实例变量。,2字符串连接,public String concat(String str)可返回一个字符串,它将把参数str添加在原字符串的后边。例如:to.concat(get).concat(her)的返回值为“together”。但在Java中,更多地是用“+”来连接字符串。例如:String str=hello;str=str+world!;,3字符串截取,字符串截取有两个途径:一次截取一个字符或一次截取一个子串。前者可通过charAt方法(参见例7.4),后者使用substring方法。它有两种形式:String substr

19、ing(int start)String substring(int start,int end)其中start代表起始位置,end代表结束位置。例如:String str=a short string;String s1=str.substring(2);String s2=substring(8,14);,4字符串比较,有两组方法用于字符串比较,一组是equals,用于比较两个字符串是否相等,返回值为布尔值。一组是compareTo,用于按字符顺序比较两个字符串,返回值为整型数。共有5个方法:boolean equals(Object object)boolean equalsIgnore

20、Case(String str)/忽略字符大小写 int compareTo(Object object)int compareTo(String str)int compareToIgnoreCase(String str)/忽略字符大小写,5拷贝到字符串,一个字符数组的内容可以全部或部分地拷贝到一个字符串中。有两个静态方法用于这种拷贝:static String copyValueOf(char data)static String copyValueOf(char data,int offset,int count)例如:char c=A,c,h,a,r,a,r,r,a,y;String

21、 s1=new String(),s2=new String();s1=s1.copyValueOf(c);s2=s2.copyValueOf(c,2,4);,6字符串大小写转换,一个字符串可以整体转换为大写或小写字符,例如:String s1=all is lowercase;String s2=Some Is Uppercase;s1=s1.toUpperCase();s2=s2.toLowerCase();结果是s1的字符全部为大写,s2的字符全部为小写。,7字符串检索,你可以在一个字符串中检索指定字符或子串的位置,如果检索到将返回一个代表位置的整数,否则返回值为-1。有两组方法实现这种

22、操作,indexOf方法返回字符或子串首次出现的位置,lastIndexOf方法返回字符或子串最后一次出现的位置。我们各选择两个典型的方法来说明这种检索操作:int indexOf(int ch)int indexOf(String str)int lastIndexOf(int ch)int lastIndexOf(String str),8字符串转换为数组,字符串可以转换为字节数组或字符数组,这种转换在Java流处理中十分有用。字符串转为字节数组将进行特别处理,因为字符是16位长,而字节为8位长,所以要将字符的高8位去掉,只保留低8位成为一个字节。有3个方法:byte getBytes()

23、/按系统缺省字符集编码转换为字节数组 byte getBytes(String enc)/其中enc为字符集编码,参见例7.5 char toCharArray()/转换为字符数组,9转换为字符串,String类提供了一组valueOf方法用来将其它数据类型转换成字符串,其参数可以是任何数据类型(byte类型除外)。它们都是是静态的,也就是说不必创建实例化对象即可直接调用这些方法,其基本用法为:valueOf(数据类型)。例如:char data=a,b,c,d,e;System.Out.println(String.valueOf(12D);System.Out.println(String

24、.valueOf(32);System.Out.println(String.valueOf(data,1,3);,String类的常用方法,7.2.4 StringBuffer类的应用,StringBuffer提供的方法有一些与String相同,有一些不同。最主要的方法有两组,一组是append,另一组是insert,每组各有10个方法。,1append方法,append的10个方法主要在参数上有所不同,它可以把各种数据类型转换成字符串后添加进来(byte类型除外),其基本用法为:append(数据类型)。,2insert方法,insert方法和append方法在使用上非常类似,唯一的不同是

25、多了一个位置参数,该参数必须大于等于0。其基本用法为:insert(插入位置,数据类型)。例如:char data=a,b,c,d,e;StringBuffer buffer=new StringBuffer();buffer.insert(0,100);buffer.insert(0,2.5F);buffer.insert(3,*);buffer.insert(0,250.0D);buffer.insert(5,is equal to);最后,buffer的内容为“250.0 is equal to 2.5*100”。,3其它方法,下面几个方法对程序员来说是经常用到的:public Stri

26、ngBuffer delete(int start,int end)/删除子串public StringBuffer deleteCharAt(int index)/删除指定位置上的字符public StringBuffer replace(int start,int end,String str)/替换子串StringBuffer reverse()/翻转字符串,什么是数据流?流是可被顺序访问的无限长的字符序列。,在java中有关流的操作使用 io 包import java.io.*;,7.3 输入输出(I/O)流类,7.3 输入输出(I/O)流类,数据流:是指在计算机的输入输出之间运动的数

27、据序列。输入输出是相对程序来说的,程序扮演两个角色:源和目的。输入流:代表从外设流入程序的数据序列;输出流:代表从程序流向外设的数据序列。字节流:在输入输出过程中以字节为单位。字符流:在输入输出过程中以字符为单位。,输入输出类层次,7.3.2 Java的标准数据流,1.标准输入public static final InputStream in 使用read()和skip(long n)方法读取。2.标准输出 public static final PrintStream out 使用print()和println()来输出。3.标准错误输出 public static final Print

28、Stream err,1标准输入System.in,System.in作为InputStream类的对象实现标准输入,可以调用它的read方法来读取键盘数据。read方法有3种格式:public abstract int read()public int read(byte b)public int read(byte b,int off,int len)如果输入流结束,返回-1。发生I/O错时,会抛出IOException异常。,2标准输出System.out,print和println的参数完全一样,不同之处在于println输出后换行而print不换行。write方法用来输出字节数组,在

29、输出时不换行。,例7.6 从键盘输入字符,在屏幕显示输出数据。如图所示。,class IO1 public static void main(String args)throws java.io.IOException byte buffer=new byte40;System.out.println(从键盘输入不超过40个字符,按回车键结束输入:);int count=System.in.read(buffer);/读取标准输入流 System.out.println(保存在缓冲区的元素个数为+count);System.out.println(输出buffer元素值:);,for(int

30、i=0;icount;i+)System.out.print(+bufferi);System.out.println();System.out.println(输出buffer字符元素:);System.out.write(buffer,0,buffer.length);,7.3.4 数据流的应用,例7.7 基于字符型的文件输入输出流与缓冲流的应用。该程序具有复制文件,在屏幕显示文件内容的功能。运行结果如图所示。,import java.io.*;public class IO2 public static void main(String args)throws IOException F

31、ileReader in=new FileReader(Hello.java);/建立文件输入流 BufferedReader bin=new BufferedReader(in);/建立缓冲输入流 FileWriter out=new FileWriter(Hello.txt,true);/建立文件输出流 String str;while(str=bin.readLine()!=null)System.out.println(str);out.write(str+n);in.close();out.close();,7.4 其它常用类,本节介绍Java语言的6个常用类,它们是数学函数类Mat

32、h,提供了基本数学运算;日期类Date、Calendar和DateFormat,提供了日期和时间操作;随机数类Random,提供了随机数生成器;向量类Vector,提供了类似于可变长数组的操作。,7.4.1 数学函数类Math,Math是一个最终类,含有基本数学运算函数,如指数运算、对数运算、求平方根和三角函数等,可以直接在程序中加Math前缀调用。下面是其成员变量和常用成员方法(举例说明):static double E/数学常量estatic double PI/圆周率static double sin(double a)/正弦函数static double cos(double a)/余

33、弦函数static double tan(double a)/正切函数static double exp(double a)/常数e的a次幂,7.4.2 日期类,Java提供了3个日期类:Date、Calendar和DateFormat。在程序中,对日期的处理主要是如何获取、设置和格式化,Java的日期类提供了很多方法以满足程序员的各种需要。其中,Date主要用于创建日期对象并获取日期,Calendar可获取和设置日期,DateFormat主要用来创建日期格式化器。Java语言规定的基准日期为1970.1.1 00:00:00 格林威治(GMT)标准时。,7.4.3 随机数类Random,Ra

34、ndom有两个构造方法:Random()、Random(long seed)。前者使用系统时间作为种子数,后者使用指定的种子数。构造方法只是创建了随机数生成器,必须调用生成器的方法才能产生随机数。Random具有nextBoolean、nextInt等方法。,例7.11 生成各种类型的随机数,如图所示。,import java.util.*;class RD1 public static void main(String args)Random r1=new Random(1234567890L);Random r2=new Random(1234567890L);,boolean b=r1.

35、nextBoolean();/随机数不为0时取真值 int i1=r1.nextInt(100);/产生大于等于0小于100的随机数 int i2=r2.nextInt(100);/同上 double d1=r1.nextDouble();/产生大于等于0.0小于1.0的随机数 double d2=r2.nextDouble();/同上 System.out.println(b);System.out.println(i1);System.out.println(i2);System.out.println(d1);System.out.println(d2);,7.4.4 向量类Vector

36、,Vector被设计成一个能不断增长的序列,用来保存对象引用。在创建Vector对象时可以指定初始容量和增量,每次添加元素都将使向量长度按增量自动增长。Vector类似于可变长数组,但功能更加强大,任何类型的对象都可以放入Vector。通过调用Vector封装的方法,可以随时添加或删除向量元素,以及增加或缩短向量序列的长度。,例7.12 Vector的各种用法,如图所示。,public class V0public static void main(String args)Vector v=new Vector(1,1);v.addElement(args0);v.addElement(arg

37、s1);v.addElement(3);v.insertElementAt(0,0);v.insertElementAt(aaa字符串元素,3);v.setElementAt(4,4);System.out.println(第4号元素为:+v.elementAt(4);,System.out.println(所有元素:+buffer.toString()+n);System.out.println(元素个数:+v.size()+向量长度:+v.capacity()+n);v.removeAllElements();System.out.println(删除后元素个数:+v.size()+向量长

38、度:+v.capacity()+n);,Enumeration enum=v.elements();StringBuffer buffer=new StringBuffer();while(enum.hasMoreElements()buffer.append(enum.nextElement().append(,);buffer.deleteCharAt(buffer.length()-1);,7.4.5 Class类与Runtime类,通过Class类与Runtime类中的方法可以获得运行时的信息,如当前类每、超类名、包名以及内存空间,操作系统名称等。看下例。,例7.13 获得运行时信息,

39、如图所示。,public class Run1 public static void main(String args)String str=new String();System.out.println(本类名=+str.getClass().getName();System.out.println(超类名=+str.getClass().getSuperclass().getName();System.out.println(包 名=+str.getClass().getPackage().getName();System.out.println(操作系统=+System.getProperty(os.name);,System.out.println(Java版本=+System.getProperty(java.vm.version);System.out.println(内存总量=+Runtime.getRuntime().totalMemory();System.out.println(剩余空间=+Runtime.getRuntime().freeMemory();,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号