[计算机软件及应用]Java回顾---例子驱动1

上传人:r****d 文档编号:182775170 上传时间:2023-01-28 格式:PPT 页数:84 大小:453KB
收藏 版权申诉 举报 下载
[计算机软件及应用]Java回顾---例子驱动1_第1页
第1页 / 共84页
[计算机软件及应用]Java回顾---例子驱动1_第2页
第2页 / 共84页
[计算机软件及应用]Java回顾---例子驱动1_第3页
第3页 / 共84页
资源描述:

《[计算机软件及应用]Java回顾---例子驱动1》由会员分享,可在线阅读,更多相关《[计算机软件及应用]Java回顾---例子驱动1(84页珍藏版)》请在装配图网上搜索。

1、第一部分 Java回顾(一)-例子驱动第一节 Java语言根底第一部分 Java回顾(一)-例子驱动1Java采用国际化的Unicode字符集。Unicode字符集:每个字符占二个字节共65535个字符。其中,前面256个字符表示ASCII码,使Java对ASCII码具有兼容性;后面21000个字符用来表示汉字等非拉丁字符。2标识符的命名 标识符可以由字母、数字、下划线“_和美元符号“$组成,但必须以字母、下划线或美元符号开头。注意:JAVA中的字母包括了世界上任何语言中的“字母表第一部分 Java回顾(一)-例子驱动 3 break和continue语句break语句通常有不带标号和带标号两

2、种形式:break;break Lab;/使程序流程直接退出标号Lab所指明的外循环。Continue使循环短路。有两种形式:continue;continue lab;当程序中有嵌套的多层循环时,为从内循环直接跳到外循环,可使用带标号的continue lab语句。第一部分 Java回顾(一)-例子驱动【例c1_1.java】continue语句例如程序。public class c1_1public static void main(String args)int j;p1:for(int i=1;i=10;i+)j=1;while(j=11-i)System.out.print();j+

3、;for(j=1;j=i;j+)if(i=3)continue;/当i等于3时,不执行后面的两条语句 if(j=9)continue p1;/当j等于9时,跳到外循环入口处 System.out.print(+i+);System.out.println();第一部分 Java回顾(一)-例子驱动第二节 类、对象和接口第一部分 Java回顾(一)-例子驱动1类是对象的抽象和归纳,对象是类的实例。2创立对象-包括声明对象和建立对象。声明对象就是确定对象的名称,并指明该对象所属的类,此时对象还不是类的实例:类名 对象名表;建立对象就是用new为对象分配存储空间,使该对象成为类的实例:对象名=new

4、 构造方法();也可合二为一:类名 对象名=new 构造方法()3 JAVA中除了根本类型整型、浮点型、字符型外,均为引用型数组、对象。第一部分 Java回顾(一)-例子驱动例:对象的引用与实体class 圆 double 半径;圆(double r)半径=r;double 计算面积()return 3.14*半径*半径;void 修改半径(double 新半径)半径=新半径;double 获取半径()return 半径;class 圆锥 圆 底圆;/引用 double 高;圆锥(圆 circle,double h)this.底圆=circle;this.高=h;double 计算体积()do

5、uble volume;volume=底圆.计算面积()*高/3.0;return volume;void 修改底圆半径(double r)底圆.修改半径(r);double 获取底圆半径()return 底圆.获取半径();第一部分 Java回顾(一)-例子驱动class Example2_1 public static void main(String args)圆 circle=new 圆(10);圆锥 circular=new 圆锥(circle,20);System.out.println(圆锥底圆半径:+circular.获取底圆半径();System.out.println(圆锥

6、的体积:+circular.计算体积();circular.修改底圆半径(100);System.out.println(圆锥底圆半径:+circular.获取底圆半径();System.out.println(圆锥的体积:+circular.计算体积();第一部分 Java回顾(一)-例子驱动第三节 类库、包及访问控制第一部分 Java回顾(一)-例子驱动 Java语言由语法规那么和类库两局部组成。Java类库(JFC)是系统定义的类的集合,它可以帮助开发者方便、快捷地开发Java程序。当编写Java程序时,直接利用现成的类库,不仅可以提高编程效率,也可以保证软件的质量。在Java系统中,根

7、据实现的功能不同,将系统定义好的类划分成不同的集合。每个集合称为一个包,所有包合称为类库。Java类库的每个包中都有假设干个具有特定功能和相互关系的类和接口。例如,java.lang包中包含了运行Java程序必不可少的系统类,它们包括根本数据类型、根本数学方法、字符串处理等类;java.awt包中包括了用来构建图形用户界面(GUI)的类库。第一部分 Java回顾(一)-例子驱动类的一般定义形式类的一般定义形式:类修饰符 class 类名 extends 父类名 implements 接口列表 修饰符 数据成员类型 数据成员名表;修饰符 返回值的类型 成员方法名(形式参数表)throws 异常表

8、 在定义一个类而不给出extends关键字及父类名时,默认这个类是系统类object的子类。第一部分 Java回顾(一)-例子驱动 (1)修饰符可以是public、private、protected等访问权限修饰符,也可以是static、final等非访问权限修饰符。(2)访问权限修饰符是一组用于指明类、成员何时可以被其他类访问的控制符。非访问权限修饰符指明使用方式。(3)throws 指出当该方法遇到异常情况时如何处理。(4)implements 接口列表:Java本来只支持单继承,为了给多重继承的软件开发提供方便,它提供了这一接口机制。(5)在Java程序中,成员的声明只能在类中进行 (6

9、)缺省访问控制符说明具有“友好访问特性第一部分 Java回顾(一)-例子驱动【例如程序c3_1.java】static及final成员import java.awt.*;import javax.swing.*;class ca static int n=20;final int nn;/声明nn,但没有赋初值 final int k=40;/声明k并赋初值40 ca()nn=+n;/在构造方法中给nn赋值 /static int sum()return k+n;错,引用了非static成员 第一部分 Java回顾(一)-例子驱动public class c3_1 extends JApple

10、t public void paint(Graphics g)ca m1=new ca();ca m2=new ca();/m1.nn=90;/错误,因为nn是标识符常量 g.drawString(m2.nn=+m2.nn,20,30);g.drawString(m2.k=+m2.k,20,50);g.drawString(m1.nn=+m1.nn,20,70);g.drawString(m1.k=+m1.k,20,90);g.drawString(m2.n+ca.n=+m2.n+ca.n,20,110);第一部分 Java回顾(一)-例子驱动图3.8 程序c3_9的执行结果 第一部分 Jav

11、a回顾(一)-例子驱动第四节 多态机制第一部分 Java回顾(一)-例子驱动多态的概念多态的概念 多态是指一个程序中有多个同名方法共存的情况。这些方法同名的原因是它们的最终功能和目的都相同,但是由于在完成同一功能时,可能遇到不同的具体情况,所以需要有不同的具体实现形式。多态可以提高程序的抽象度、封闭性和简洁性,统一一个或多个相关类对外的接口,使得它们不需了解对方的具体细节,就可以很好地共同工作。Java中提供两种多态机制:重载与覆盖。第一部分 Java回顾(一)-例子驱动【例:c4_1.java】class a1int x=4;int y=1;public void Printme()Syst

12、em.out.println(x=+x+y=+y);System.out.println(class name:+this.getClass().getName();第一部分 Java回顾(一)-例子驱动public class c4_1 extends a1int x;public void Printme()/重写父类的方法时,不可降低(但可扩大)方法的访问权限 int z=super.x+6;super.Printme();System.out.println(I am an +this.getClass().getName();x=5;System.out.println(z=+z+x

13、=+x);/打印子类的数据成员 第一部分 Java回顾(一)-例子驱动 public static void main(String arg)int k;a1 p1=new a1();c4_1 p2=new c4_1();p1.Printme();p1=p2;p1.Printme();/super.Printme();/错,在static方法中根本就不认识super和this 第一部分 Java回顾(一)-例子驱动运行结果如下:x=4 y=1class name:a1x=4 y=1class name:c4_1I am an c4_1z=10 x=5第一部分 Java回顾(一)-例子驱动【例如

14、程序c4_2.java】class addclass public int x=0;addclass(int x)this.x=x;System.out.println(addclass);public int add()return x+5;public class c4_2 extends addclass int a=0;addclass a1=new addclass(1);c4_2(int x)super(x);a=x+10;System.out.println(“c4_2);/去掉super(x);?public int add()System.out.println(super:

15、x+5=+super.add();return a+x;public static void main(String args)c4_2 p=new c4_2(2);System.out.println(a+x=+p.add();输出:addclassaddclassC4_2super:x+5=7a+x=14第一部分 Java回顾(一)-例子驱动【例如程序c4_3.java】父类对象与子类对象之间在一定条件下相互转换class SuperClass int x=1,y=2,t=98;void show()System.out.println(x+y=+(x+y);class SubClass

16、extends SuperClass int y=9,z=7;void show()System.out.println(y*z+x=+(y*z+x);public class c4_3 /使用父类与子类public static void main(String args)SuperClass sc,scf;SubClass sb,sbf;第一部分 Java回顾(一)-例子驱动 sc=new SuperClass();sb=new SubClass();sc.show();scf=(SuperClass)sb;/也可以写成:scf=sb;scf.show();sbf=(SubClass)sc

17、f;/父类引用转换为子类引用 System.out.println(sbf.x=+sbf.x+sbf.y=+sbf.y+sbf.z=+sbf.z);System.out.print(sbf.show():t);sbf.show();运行结果:x+y=3y*z+x=64sbf.x=1 sbf.y=9 sbf.z=7sbf.show():y*z+x=64第一部分 Java回顾(一)-例子驱动第五节 抽象类、接口第一部分 Java回顾(一)-例子驱动接口接口 Java出于平安性、简化程序结构的考虑,不支持多继承。然出于平安性、简化程序结构的考虑,不支持多继承。然而在解决实际问题的过程中,在很多情况下

18、仅仅依靠单继承不而在解决实际问题的过程中,在很多情况下仅仅依靠单继承不能将复杂的问题描述清楚。例如,冷藏车既是一种汽车,也是能将复杂的问题描述清楚。例如,冷藏车既是一种汽车,也是一种制冷设备,所以它是汽车的子类也是制冷设备的子类。为一种制冷设备,所以它是汽车的子类也是制冷设备的子类。为了使类间层次结构合理,并符合实际问题的本质,了使类间层次结构合理,并符合实际问题的本质,JAVA用接口用接口来实现多重继承机制。来实现多重继承机制。第一部分 Java回顾(一)-例子驱动 说明:(1)接口可以看成一个特殊类。(2)接口修饰符有两种:public 和默认。1声明接口声明接口修饰符 interface

19、接口名extends 父接口名列表常量数据成员声明 抽象方法声明第一部分 Java回顾(一)-例子驱动 (3)接口中定义的数据成员全是final staticpublic final static double PI=3.14159;final static int a=9;int SUM=100;(等价于final static int SUM=100;)(4)接口中的方法默认为public abstract方法,格式如下:返回值类型 方法名(参数列表);第一部分 Java回顾(一)-例子驱动 2.类实现接口的本卷须知 一个类要实现接口,要注意以下几点:(1)如果实现某接口的类不是abstr

20、act的抽象类,那么在类的定义局部必须实现指定接口的所有抽象方法,而且方法头局部应该与接口中的定义完全一致。(2)一个类只能有一个父类,但可以同时实现假设干个接口。(3)如果实现某接口的类是abstract的抽象类,那么它可以不实现该接口所有的方法。(4)类在实现方法时,必须显式地使用public修饰符,否那么?第一部分 Java回顾(一)-例子驱动【例如程序c5_1.java】编写一个计算矩形、三角形和圆的面积与周长的程序import java.awt.*;import javax.swing.*;interface Shapes abstract double getArea();abst

21、ract double getPerimeter();class Coordinatesint x,y;public Coordinates(int x,int y)this.x=x;this.y=y;class Square extends Coordinates implements Shapespublic int width,height;public double getArea()return(width*height);public double getPerimeter()return(2*width+2*height);public Square(int x,int y,in

22、t width,int height)super(x,y);this.width=width;this.height=height;第一部分 Java回顾(一)-例子驱动class Circle extends Coordinates implements Shapespublic int width,height;public double r;public double getArea()return(r*r*Math.PI);public double getPerimeter()return(2*Math.PI*r);public Circle(int x,int y,int w,in

23、t h)super(x,y);width=w;height=h;r=(double)width/2.0;public class c5_1 extends JAppletSquare Box=new Square(5,15,25,25);Circle Oval=new Circle(5,90,25,25);public void paint(Graphics g)g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString(Box Area:+Box.getArea(),50,35);g.drawOval(Oval.x,Oval.y,Ova

24、l.width,Oval.height);第一部分 Java回顾(一)-例子驱动 程序c5_1的运行结果第一部分 Java回顾(一)-例子驱动例5-2:接口回调interface Computerablepublic double 求面积();class 梯形 implements Computerable double a,b,h;梯形(double a,double b,double h)this.a=a;this.b=b;this.h=h;public double 求面积()return(1/2.0)*(a+b)*h);class 圆形 implements Computerable

25、double r;圆形(double r)this.r=r;public double 求面积()return(3.14*r*r);第一部分 Java回顾(一)-例子驱动class 锥 Computerable 底;/用接口变量,可以回调求面积方法。double 高;锥(Computerable 底,double 高)this.底=底;this.高=高;void 换底(Computerable 底)this.底=底;public double 求体积()return(底.求面积()*高)/3.0;public class Example5_2 public static void main(S

26、tring args)锥 zui;Computerable bottom;bottom=new 梯形(2.0,7.0,10.7);/接口变量中存放对象的引用 System.out.println(梯形的面积+bottom.求面积();第一部分 Java回顾(一)-例子驱动 zui=new 锥(bottom,30);System.out.println(梯形底的锥的体积+zui.求体积();bottom=new 圆形(10);/接口变量中存放对象的引用。System.out.println(半径是10的圆的面积+bottom.求面积();zui.换底(bottom);System.out.pri

27、ntln(圆形底的锥的体积+zui.求体积();第一部分 Java回顾(一)-例子驱动第六节 数组第一部分 Java回顾(一)-例子驱动一维数组的声明一维数组的声明 声明一个数组就是要确定数组名、数组的维数和数组元素的声明一个数组就是要确定数组名、数组的维数和数组元素的数据类型。数组的维数用数据类型。数组的维数用“的个数来确定。数组元素的类的个数来确定。数组元素的类型可以是型可以是Java的任何数据类型,如根本类型的任何数据类型,如根本类型(int、float、double、char等等),类,类(class)或接口或接口(interface)等。数组的声明格式如下:等。数组的声明格式如下:i

28、nt abc;double example2;只能空第一部分 Java回顾(一)-例子驱动一维数组的初始化一维数组的初始化 声明一个数组仅仅为这个数组指定数组名和数组元素的类型,并不为数组元素分配实际的存储空间。接指定初值的方式接指定初值的方式:int a1=23,-9,38,8,65;用关键字用关键字new初始化数组初始化数组 类型标识符 数组名;数组名=new 类型标识符数组长度;或合二为一:int a=new int10;在Java语言中,数组实际上是一种隐含的“数组类的实例。每个数组名实际是该实例的一个引用。第一部分 Java回顾(一)-例子驱动 【例如程序c6_1.java】二分查找

29、。import java.io.*;class FindSearch int binarySearch(int arr,int searchValue)int low=0;/low是第一个数组元素的下标 int high=arr.length-1;/high是最后一个数组元素的下标 int mid=(low+high)/2;/mid是中间那个数组元素的下标 while(low=high&arrmid!=searchValue)if(arrmidhigh)mid=-1;return mid;/假设为-1那么表示不存在要查的元素 public class c6_1public static voi

30、d main(String args)throws IOException BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in);int i,k,search,mid;String c1;int arr=2,4,7,18,25,34,56,68,89;System.out.println(打印原始数据);for(i=0;iarr.length;i+)System.out.print(+arri);第一部分 Java回顾(一)-例子驱动 System.out.println(n);System.out.p

31、rintln(请输入要查找的整数);c1=keyin.readLine();search=Integer.parseInt(c1);FindSearch p1=new FindSearch();mid=p1.binarySearch(arr,search);if(mid=-1)System.out.println(没找到!);else System.out.println(所查整数在数组中的位置下标是:+mid);第一部分 Java回顾(一)-例子驱动【例如程序c6_2.java】数组是对象,数组名是引用变量。public class c6_2 public static void main(

32、String arg)int i;int a1=2,5,8,25,36;int a3=90,3,9;System.out.println(a1.length=+a1.length);第一部分 Java回顾(一)-例子驱动 System.out.println(a3.length=+a3.length);a3=a1;/赋值的结果是a3指向a1指向的数组 System.out.print(a1:);for(i=0;ia1.length;i+)System.out.print(+a1i);System.out.println(n);System.out.println(a3.length=+a3.l

33、ength);System.out.print(a3:);for(i=0;ia3.length;i+)System.out.print(+a3i);System.out.println(n);第一部分 Java回顾(一)-例子驱动运行结果:a1.length=5a3.length=3a1:2 5 8 25 36a3.length=5a3:2 5 8 25 36第一部分 Java回顾(一)-例子驱动class Student private String name;private char sex;private double score;Student(String cname,char cs

34、ex,double cscore)name=cname;sex=csex;score=cscore;String getName()return name;char getSex()return sex;void studPrint()System.out.println(Name:+name+tSex:+sex+tScore:+score);【例如c6_3.java】学生数组第一部分 Java回顾(一)-例子驱动public class c6_3public static void main(String args)String mname;char msex;int len;Student

35、 st1=new Student3;/声明时并不为每一个元素分配存储空间 st10=new Student(li,F,89);/为每一个对象数组元素分配存储空间 st11=new Student(he,M,90);st12=new Student(zhang,M,78);len=3;for(int i=0;ilen;i+)st1i.studPrint();mname=st11.getName();msex=st11.getSex();System.out.println(Name 1:+mname+tSex:+msex);第一部分 Java回顾(一)-例子驱动运行结果:Name:liSex:F

36、 Score:89.0Name:heSex:MScore:90.0Name:zhang Sex:MScore:78.0Name 1:heSex:M第一部分 Java回顾(一)-例子驱动二维数组的声明二维数组的声明 类型说明符 数组名 ;或 类型说明符 数组名;二维数组的初始化二维数组的初始化 1用用new操作符初始化数组操作符初始化数组 用new操作符来初始化数组有两种方式:(1)数组名=new 类型说明符数组长度;(2)数组名=new 类型说明符数组长度 数组长度;以行为主次序存储第一部分 Java回顾(一)-例子驱动例如:int arra ;/声明二维数组arra=new int34;/实

37、际上相当于下述4条语句:/创立一个有3个元素的数组,且每个元素也是数组 arra=new int3;/创立3个行引用元素arra0=new int4;/创立数组arra0,它有4个元素arra1=new int4;arra2=new int4;第一部分 Java回顾(一)-例子驱动图4.10 语句“arra=new int34;的作用 int arr=new int4;和int arr =new int43;也可行,但是,不指定行数而指定列数是错误的。例如int arr=new int 4;是错误的。第一部分 Java回顾(一)-例子驱动【例c6_4.java】分析程序class Maxval

38、ueint maxvl(int arr1 )int i,k,max;int len=arr1.length,len1;max=arr100;for(i=0;i=len-1;i+)len1=arr1i.length;for(k=0;kmax)max=arr1ik;return max;第一部分 Java回顾(一)-例子驱动 public class c6_4 public static void main(String args)int maxx;int arr=1,3,7,6,78,0,42,5,-98,7,10,-1;Maxvalue p1=new Maxvalue();maxx=p1.ma

39、xvl(arr);System.out.println(max=+maxx);第一部分 Java回顾(一)-例子驱动第七节 String类第一部分 Java回顾(一)-例子驱动 String类对象是一经创立便不能变动内容的字符串常量,而StringBuffer类是一个在操作中可以更改其内容的字符串类。Java的任何字符串常量都是String类的对象,在没有明确命名时,为其创立一个匿名String类对象。如:String c1=“Java;通过赋值号将匿名String类的对象Java赋值给c1引用。注意:c1是变量(它可以引用不同的串对象),但它引用的串是常量。第一部分 Java回顾(一)-例子

40、驱动【例c7_1.java】字符串的连接、替换和字母大小写转换操作:concat、replace、toLowerCase、toUpperCase。public class c7_1 public static void main(String args)String s1=Java,s2=java,s3=Welcome;String s4=Welcome,s5=Welcoge;String sc1=s3.concat(s1);/sc1值为Welcome Java String sc2=s1.concat(abx);String sr1=s3.replace(e,r);/s3不变 String

41、w1=s5.toLowerCase(),u2=s2.toUpperCase();第一部分 Java回顾(一)-例子驱动 System.out.println(s1=+s1+ts2=+s2);System.out.println(s3=+s3+ts4=+s4);System.out.println(s5=+s5);System.out.println(s3+s1=+sc1);System.out.println(s1+abx=+sc2);System.out.println(s3.replace(e,r)=+sr1);System.out.println(s5.toLower=+w1);Syst

42、em.out.println(s2.toUpper=+u2);第一部分 Java回顾(一)-例子驱动运行结果:s1=Java s2=javas3=Welcome s4=Welcomes5=Welcoges3+s1=WelcomeJavas1+abx=Javaabxs3.replace(e,r)=Wrlcomrs5.toLower=welcoges2.toUpper=JAVA第一部分 Java回顾(一)-例子驱动其他类型的数据转换成字符串其他类型的数据转换成字符串 String类中的valueOf(参数)成员方法可以将参数类型的数据转换成字符串,参数的类型可以是:boolean,char,int

43、,long,float,double和对象。【例c7_2.java】将其他类型数据转换成字符串。public class c4_5 public static void main(String args)double m1=3.456;String s1=String.valueOf(m1);char cc=a,b,c;String s2=String.valueOf(cc);/将字符数组转换成字符串第一部分 Java回顾(一)-例子驱动 boolean f=true;String s3=String.valueOf(f);/将布尔值转换成字符串 char cs=J,a,v,a;String

44、s4=String.valueOf(cs,2,2);System.out.println(m1=+m1+ts1=+s1);System.out.println(s2=+s2);System.out.println(f=+f+ts3=+s3);System.out.println(s4=+s4);char cb=s3.toCharArray();/将串转换成字符数组 System.out.println(cb=+cb0+cb1+cb2+cb3);System.out.println(cb=+cb);第一部分 Java回顾(一)-例子驱动运行结果:m1=3.456s1=3.456s2=abcf=t

45、rue s3=trues4=vacb=truecb=C11a698a第一部分 Java回顾(一)-例子驱动【例c7_3.java】valueOf(p)引用toString(p),而toString(p)将p对象转换成字符串class A1int x,y;A1(int x,int y)this.x=x;this.y=y;public String toString()return(tx=+x+t,y=+y);public class c7_3public static void main(String args)A1 p=new A1(2,6);String str=String.valueOf

46、(p);/对象的串表示 System.out.println(str=+str);第一部分 Java回顾(一)-例子驱动【例Example7_4.java】数字串转换成相应的数值public class Example5_5public static void main(String args)double n,sum=0.0;for(int i=0;iargs.length;i+)sum+=Double.valueOf(argsi).doubleValue();/与sum+=Double.parseDouble(argsi)等价;/查看Double与String类中静态方法valueOf的各

47、自返回值类型 n=sum/args.length;System.out.println(平均数:+n);第一部分 Java回顾(一)-例子驱动第八节 Java Applet第一部分 Java回顾(一)-例子驱动1、所有小应用程序的根源、所有小应用程序的根源 Java小应用程序Java Applet是使用Java语言编写的一段代码,它能够在浏览器环境中运行。Applet与Application地主要区别在于它们的执行方式不同:Application是使用命令行命令直接运行,从其main()方法开始运行的;而Applet那么是在浏览器中运行的,首先必须创立一个HTML文件,通过编写HTML语言代码

48、告诉浏览器载入何种Applet以及如何运行,再在浏览器中给出该HTML文件的URL地址即可。第一部分 Java回顾(一)-例子驱动1、所有小应用程序的根源、所有小应用程序的根源 回忆一下小应用程序的书写格式 import javax.swing.*;public class MyApplet extends JApplet ;每一个小应用程序都继承自javax.JApplet类,并且每个小应用都有一个主程序类,之前必须加上public。Applet其实是一种能够其实是一种能够在浏览器在浏览器Web中运中运行的特殊的图形用户界行的特殊的图形用户界面程序。面程序。第一部分 Java回顾(一)-例子

49、驱动2.1 所有小应用程序的根源http:/someLocation/file.html1.Browser loads URL2.Browser loads HTML documentApplet class3.Browser loads applet classesLocation:http:/someLocation/file.htmlLoading.4.Browser run applet第一部分 Java回顾(一)-例子驱动1、所有小应用程序的根源、所有小应用程序的根源appletBrowserSERVER本地程序本地程序fileSERVERlocalconnectionconnect

50、ionapplet被下载的被下载的与与applet无关的无关的本地方法本地方法小应用程序的限制Applet不允许访问系统,除非通过定义平安策略与签名授权机制,被Java运行系统授予了相应的权限。第一部分 Java回顾(一)-例子驱动1、所有小应用程序的根源、所有小应用程序的根源一个简单例子:import javax.swing.*;import java.awt.*;public class HelloApplet extends JAppletpublic String s;public void init()s=new String(“Hello World!);public void p

51、aint(Graphics g)g.drawString(s,25,25);Hello World HelloApplet.java第一部分 Java回顾(一)-例子驱动javax.swing.JAppletpublic void init()public void destroy()public void start()public void stop()public void paint(Graphics g)2、小应用程序的执行、小应用程序的执行Applet的运行控制的运行控制 Applet的运行控制第一部分 Java回顾(一)-例子驱动 JApplet的生命周期初始态(瞬态)初始态(瞬

52、态)运行态运行态停止态停止态消亡态消亡态离开Web页面:极小化或装入其他页面,调用stop()方法重新装入或改变页面大小或返回Web页面,调用start()方法关闭浏览器,调用stop()、destroy()方法第一次装入,构造applet类,调用init()方法调用start()方法2、小应用程序的执行、小应用程序的执行Applet的运行控制的运行控制第一部分 Java回顾(一)-例子驱动 Applet中没有main()方法。当Applet被浏览器运行时,init()、start()、stop()、destroy()方法等自动执行:init()方法:初始化,自动调用,只执行一次。start(

53、)方法:初始化后,重入等都将自动调用。stop()方法:离开Applet所在页面时调用。destroy()方法:浏览器关闭时自动调用,以去除Applet所用的所有资源。2、小应用程序的执行、小应用程序的执行Applet的运行控制的运行控制第一部分 Java回顾(一)-例子驱动public class SimpleApplet extends JAppletStringBuffer buffer;public void init()buffer=new StringBuffer();addItem(initializing.);public void start()addItem(startin

54、g.);public void stop()addItem(stopping.);public void destroy()addItem(preparing for unloading(destroy).);void addItem(String newWord)System.out.println(newWord);buffer.append(newWord);repaint();public void paint(Graphics g)g.drawRect(0,0,getSize().width-1,getSize().height-1);g.drawString(buffer.toSt

55、ring(),5,15);SimpleApplet.java2、小应用程序的执行、小应用程序的执行Applet的运行控制的运行控制第一部分 Java回顾(一)-例子驱动 HTML中applet标签的使用 APPLET CODE=appletFile WIDTH=pixels HEIGHT=pixels VSPACE=pixels HSPACE=pixels .2、小应用程序的执行、小应用程序的执行Applet与与HTML第一部分 Java回顾(一)-例子驱动Java applet其它其它内容内容其它内容其它内容vspacehspace其它内容其它内容vspace其它其它内容内容hspacehe

56、ightwidth2、小应用程序的执行、小应用程序的执行Applet与与HTML第一部分 Java回顾(一)-例子驱动public class AppletPara extends JAppletString s1,s2;public void init()s1=getParameter(p1);s2=getParameter(p2);public void paint(Graphics g)g.drawString(s1,10,10);g.drawString(s2,10,30);Applet Parameter Test 两个步骤:两个步骤:n 在在Applet类中:类中:s1=getPa

57、rameter(p1);n 在页面中设置在页面中设置Applet参数:参数:AppletPara.java第一部分 Java回顾(一)-例子驱动publc class AppletApp extends JAppletpublic String s;public void init()s=new String(“Hello World!);public void paint(Graphics g)g.drawString(s,25,25);一个Java类文件可以既是一个Java Applet,又是一个Java Application,但它却既可以在浏览器中运行,又可以作为Application

58、单独运行。public static void main(String args)Frame f=new Frame(“Applet-App);AppletApp app=new AppletApp();f.add(app,“Center);f.setSize(200,200);f.setVisible(true);f.addWindowListener(new WindowAdapter();app.init();app.start();AppletApp.java2、小应用程序的执行、小应用程序的执行Applet与与Application第一部分 Java回顾(一)-例子驱动3、图形操作、

59、图形操作paint()、update()和和repaint()Applet中有三个显示相关的方法:paint()、update()和repaint()。Applet的显示更新是由一个AWT线程来控制完成的,它主要负责两种显示更新情况:第一是曝光,表示局部显示区域被遮盖、调整大小、最大最小化等,这种情况随时会发生,需要系统调用paint()方法;第二是程序需要重画显示区域,添加一些新的显示内容,需要程序调用repaint()方法。第一部分 Java回顾(一)-例子驱动AWT thread(waiting)update():clear area call paint()paint()程序调用程序调

60、用repaint()Exposure:遮盖、调整大小、遮盖、调整大小、最大最小化等最大最小化等3、图形操作、图形操作paint()、update()和和repaint()第一部分 Java回顾(一)-例子驱动 paint(Graphics g)方法 当小应用首次被装载,以及每次窗口放大、缩小、刷新时都要调用paint()方法当用户窗口界面遭到破坏时。当程序希望调用paint方法时,用repaint()方法。paint()方法的参数是Graphics类的对象 g,该对象不是由new产生的,而是由系统或其他方式直接将生好的Graphics对象当作方法的参数,再交给paint()方法。update(

61、)方法 update()方法用于更新图形。它首先去除背景,然后设置前景,再调用paint()方法完成Applet中的具体绘图。一般不要重写update()方法。3、图形操作、图形操作paint()、update()和和repaint()第一部分 Java回顾(一)-例子驱动3、图形操作、图形操作Graphics、Font和和Color类的使用类的使用 在在paint()方法中有一个方法中有一个Graphics类参数,它是画图的关类参数,它是画图的关键。它支持两种绘制:一是根本的绘图,包括画点、线、键。它支持两种绘制:一是根本的绘图,包括画点、线、矩形、文字等;二是画图象。在进行根本画图时,可以

62、设矩形、文字等;二是画图象。在进行根本画图时,可以设定所需的颜色和字体等,这需要用到定所需的颜色和字体等,这需要用到Font、FontMetrics和和Color三个类。三个类。repaint()方法 repaint()方法主要用于重绘图形,它是通过调用update()方法来实现图形重绘的。一般不要重写一般不要重写repaint()方法方法。第一部分 Java回顾(一)-例子驱动/定时器、动画例如定时器、动画例如import javax.swing.*;import java.awt.*;import java.awt.event.*;public class a extends JFrame

63、 implements ActionListener int offset=-10;private Image im;private Timer timer;private AnimationPane animationPane;public a()super(动画例如动画例如);int delay=100;timer=new Timer(delay,this);timer.setInitialDelay(0);Container c=getContentPane();c.setLayout(new FlowLayout();c.setBackground(Color.gray);Toolki

64、t toolkit=Toolkit.getDefaultToolkit();im=toolkit.getImage(cat.gif);animationPane=new AnimationPane(im);c.add(animationPane);timer.start();setSize(300,150);show();/显示动画的显示动画的JPanel class AnimationPane extends JPanel Image image;public AnimationPane(Image image)setPreferredSize(new Dimension(250,100);

65、setBackground(Color.lightGray);this.image=image;public void paintComponent(Graphics g)super.paintComponent(g);int width=getWidth();int height=getHeight();/计算图片的尺寸计算图片的尺寸 int imgWidth=image.getWidth(this);int imgHeight=image.getHeight(this);g.drawImage(image,(offset*5)%(imgWidth+width)-imgWidth,(heig

66、ht-imgHeight)/2,this);public void actionPerformed(ActionEvent evt)offset+;animationPane.repaint();public static void main(String args)a app=new a();app.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent evt)System.exit(0););第一部分 Java回顾(一)-例子驱动小结小结 小应用程序是在浏览器中运行的,每个小应用程序中必须有一个主类,冠以public,并且继承自。小应用程序包括生命周期的四个环节和paint()方法。public class myapplet extends JApplet init()start()stop()destroy()paint(Graphics g)myMethod()class myclass1;class myclass2;第一部分 Java回顾(一)-例子驱动applet主类主类ini

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!