
Java 实训练习题.pdf
38页例1. 1 ]编写一个应用程序,在屏幕上显示字符串“Hello, World!”/* HelloWorld.java */public class HelloVVorld {public static void niain(String args[]) {System.out.println("Hello, World!u);【 例2. 1 ]本例结合基本数据类型,说明如何使用变量public class SimpieTypes{public static void main(String argsf]){byte b = 0x55;short s = Ox55fT;int i = 1000000;long I = OxfffL:char c = *c,;float f=0.23F;double d = 0.7E-3;boolean bool = true;Systcin.out.println("b=" + b);System.out.println("s=" + s);Systcm.out.println("i='* + i);System.out.printlnC'H'* + I);System.out.println(,'c=u + c);System.out.println("f=" + f);System.out.println("d=" + d);System.out.println(, ,bool=" + bool);})【 例2. 2】算术运算符的使用示例.public class ArithmaticOp{public static void main(String args[]){int a = 5+4:Z/a=9int b = a*2;//b=18int c = b/4;//c=4int d = b-c;//d=14int c = -d;//c=-14int f = e % 4;//f=-2double g = 18.4;double h = g % 4;//h=2.4int i = 3;int j = i++;〃i=4, j=3int k = ++i;//i=5, k=5System.oul.prinUn("a=" + a);System.out.println("b=" + b);System.out.println("c=u + c);System.out.println("d=" + d);System.out.println(,,e=u + e);Systcm.out.println(,,f=" + f);System.out.println("g=" + g);Systcm.out.println(Mh=" + h);System.out.println("i=" + i);Systcm.out.println(*'j=,' + j);System.out.println("k=" + k);【 例2. 3】递增运算符和递减运算符的使用示例。
public class Autolnc {public static void main(String[] args) {int i = 1;System.ouLprintln ("i: " + i);System.out.println ("++i: " + ++i);System.out.println ("i++ : " + i++);System.outprintln (*'i: " + i);System.out.println ("-i : " + - i);Systcm.out.println ("i- : " + i-);System.out.println ("i: " + i);// Pre-increme nt// Post-increment// Pre-decrement// Post-dccrcmcnt【 例2. 4 ]关系运算符的使用示例.public class Relational()p{public static void main(String args[]){float a =10.0f;double b = 10.0:if(a == b)(System.out.println(*'a 和 b 相等" ) ;}else{System.out.printlnf "a 和 b 不相等)2Java语言程序设计基础【 例2. 5 ]本例展示了如何使用关系和逻辑运算符。
import java.util.*;public class Bool {public static void main(String[] args) {Random rand = new Random ;int i = rand.nextlnt() % 100;int j = rand.nextlnt() % 100:System.out.println ("i = " + i);System.out.println ("j = " +j);System.out.println ("i > j is ', + (i > j));System.out.println ('*i < j is '* + (i < j));System.out.println ("i >= j is " + (i >= j));System.out.println ("i <= j is " + (i <= j));System.out.println ("i = j is " + (I = j));System.out.println ("i != j is " + (i != j));System.out.println (H(i < 10) && (j < 10) is " + ((i < 10) && (j< 10)));Svstem.out.println ("(i < 10) II (j < 10) is " + ((i < 10) II (j < 10)));))【 例2. 6]public class ShortCircuit {static boolean testl(int val) {Systcm.out.println("tcstl(" + val +System.out.println("result: " + (val < 1));return val < 1;}static boolean test2(int val) {System.out.println( "test2(" + val +System.out.println("result: u + (val < 2));return va) < 2;}static boolean test3(int val) (System.out.println("test3(" + val +System.out.println( "result: " + (val < 3));return val < 3;}public static void main(String[] args) {if(test 1(0) && test2(2) && test3(2))System.out.printlnC'expression is true");elseSystem.out.printlnC'expression is false");[ 例2. 7 ]移位运算符示例。
public class URShift {public static void main(String[] args) {int i = -1;i » > = 10;System.out.println⑴;long I = -1;I » > = 10;System.out. pri ntl n( i);short s = -1;s » > = 10;System.out. pri ntl n(s);byte b = -1;b > » = 10;Svstem.out. pri ntl n( b);}}【 例2. 8 ]利用if语句,判断某一年是否是闰年public class LeapYear{public static void main(String args[]){〃第一种方式int year = 1989;if ((year % 4 = =0 && year % 100 != 0) II (year % 400 = =0))(System.out.printlnfyear + "is a leap year.");}clsc(Svstem.out.pnntln(vear + "is not a leap vear.");)〃第二种方式year= 2000;boolean leap;if (year % 4 != 0){2第 1章 Java语言概述3leap = false;}else if(year % 100 != 0)(leap = true;}else if(year % 400 != 0)(leap = false;}else{leap = true;}iff leap = = true){System.out.println(year + “is a leap year.");}else(Svstem.out.printlnfyear + "is not a leap year.");)〃第三种方式year =2050;iffyear % 4 = = 0){if(year % 100 = = 0){iftyear % 400 = = 0){leap = true;}else(leap = false:})else{leap = false;}}elsc(leap = false;)if(leap = = true)(Systcm.out.println(year + '* is a leap yean*');}else{Svstem.out.println(year +" is not a leap year.'');)【 例2. 9] switch语句示例。
注意其中break语句的作用.public class SwitchDemo {public static void main(String[] args) {fdr(int i = 0; i < 100; i++) {char c = (char)(Math.random() * 26 + 'a');System.out.printfc + " :");switch© {case 'a*:case 'e':case 'i':case 'o':case 'u*:System.out.println(" vowel");break;case 'y':case 'w*:System.out.println("Sometimes a vowel**);break;default:System.out.println( "consonant");})【 例2. 1 0 ]使用while语句,完成简单的数据求和public class WhileDemo{public static void main(String args[]){int n = 10;int sum = 0;whilc(n > 0){sum += n;n -;}System.out.println("l~10 的数据和为:"+ sum);【 例2. 1 1 ]使用d ozh ile语句,完成简单的数据求和。
public class WhiieDemo(public static void niain(String args[]){int n = 0;int sum = 0;do{sum += n;4Java语言程序设计基础n++;}while(n < = 10);Systcm.out.println(Ml'10 的数据和为:" + sum);【 例2. 12] break语句和continue语句的使用示例public class LabeledVVhile {public static void main(String[] args) {int i = 0;outer:while(true) {Systcm.out.println ("Outer while loop*');while(true) {i++;System.out.println ("i = " + i);if(i = = 1) (System.out.println ("continue");continue;}if(i = = 3) {System.out.println ("continue outer");continue outer;)if(i = = 5) (System.out.println ("break");break;}iKi = = 7){System.out.println ("break outer*');break outer;))【 例2. 13】计算3、6和9的阶乘并输出结果。
public class TestFunctionl{public static void main(String[] args) {long z=lL;int x=l;for(x=3;x>0;x-)z*=x;System.out.println(',3!=',+z);for( X=6R= 1; x>0;x-)z*=x;System.out.println( "6!="+z);for( x=9^=l;x>0;x-)z*=x;System.out.println( "9!="+z);)〃该循环求3的阶乘〃输出3的阶乘〃该循环求6的阶乘〃输出6的阶乘〃该循环求9的阶乘〃输出9的阶乘【 例2. 14】使用方法计算3、6和9的阶乘并输出结果public class TestFunction2{〃第一个方法是main方法,它3次调用了第二个方法public static void main(String[] args) {factorial^);factorial(6);factorial(9);)〃第二个方法是factorial方法,它求出参数n的阶乘并输出static void factoriaKint n) {long z=lL;int x=n;for( ;x>0;x-) 〃该循环求n的阶乘z*=x;System.out.println(n+,'!="+z)^tH n 的阶乘【 例2. 1 5 )方法的传递参数。
public class TestPara {static void test(boolean paratest)(para test = ! paratest;System.out.printlnC'In test (boolean): test = " + paratest):)public static void main(String1] args) {boolean test = true;System.out.println("Before test (boolean): test = " + test);4第 1章 Java语言概述5test(test);System.out.printlnC,After test (boolean): test = '* + test);)}【 例2. 1 6 ]使用递归方法计算3、4和5的阶乘public class TestFunction3{public static void main(String[] args) {System.out.printlnC'Factorial of 3 is " + fact(3));System.out.println( "Factorial of 4 is " + fact(4));Svstem.out.println("Factorial of 5 is " + fact(5));I〃递归方法,求出参数n的阶乘并返回阶乘值static int fact(int n) {int result:if(n = l)return 1;result = foct(n-l) * n;return result;)}【 例2. 17】使用间接递归方法,求斐波那契数列第n项。
public class TestF(public static void main(String[] args) {int xl = 1;int sum = 0:int n = 7;for (int i = 1; i <= n; i++) {xl = funcl(i);sum = sum + xl;}Svstem.out.println( "sum=" + sum);)static int funcl(int a){int b;b=f'unc2(a);return b;)static int func2(int b) {if(b>2)return (funclfb -1) + funcKb - 2));elsereturn 1;)}【 例3. 1 ]定义一个求圆面积的类public class Circle {private double radius;private double area;final double pi=3.14;public void setRadius(double r) {radius=r:}public double calculate A rea() (return pi*radius*radius;)}[ 例3. 2]创建日期类Date并进行输出。
public class Date{private int day;private int month;private int year;public void setDate(int djnt m,int y){day=d;month=m;vear=v;}public void printDate ( ){System.out.println( ” 今天是“+year+“年"+month+“月"+day+"H");}public static void main(String [ ] args)(Date today=new Date ( );today.setDate( 12.3,2005):Date thisday;thisday=today;thisday.printDatc();)6Java语言程序设计基础【 例3. 3】设计类N um ber,测试对象间的赋值class Number{int i;public static void main (String [ ] a){Number nl=ncw Numbcr();Number n2=new Number();nl.i=9;n2.i=47;System.out.println(',nl.i=,'+nl.i+"\t\t,,+',n2,i=,,+n2.i)nl=n2;System.out.println("nl.i=,,+nl.i+,,\t\t,,+,,n2.i=',+n2.i)nl.i=27;System.out.println(',nl.i=',+nl.i+,'\t\t',+',n2.i=,,+n2.i))【 例3. 4】测试成员变量修饰符的作用。
class FieldTest{private int num=5; 〃私有作用域,本类可见public int get()( 〃公共作用域return num; 〃 g e t方法返回成员变量num的值}}class Test(public static void main(String { ] args){FieldTest ft=new FieldTestf );int t=ft.get(): 〃正确访问Z/int s=ft.num; 〃不能访问FieidTest类中私有成员变量numSystem.out.println("t=" +t);//System.out.println(s);[ 例3. 5]定义类SaticTest,测试对实例成员和类成员的不同访问形式public class StaticTcstfstatic int i=l;int j=l;static void printStatic( ){Systcm.out.println(,,i="+i);//System.out.printlnC'js0+j);}void print(){System.out.println(,,i="+i);Systcm.out.println("j=H+j);}public static void main(String [ ] args){StaticTest.printStatict);//StaticTest.printf );StaticTest.i=2;Z/StaticTest.j=2;StaticTcst st=new StaticTcst();st.i=3;st.j=3;st.print();st.printStatic();〃非法访问〃非法访问〃非法访问【 例3. 6】测试类变量与实例变量的不同。
public class StaticVar(int i=0;static int j=0:public void print( ){System.out.printin(Mi="+i);Systcm.out.println(,,j="+j);)public static void main(String [ ] args){StaticVrar svl=new StaticVar();svl.i++;sv1.j++;svl.print():StaticVar sv2=ncw StaticVar();sv2.print();)【 例3. 7】对例3.2中Dale类进行修改,将定义日期的功能用构造函数来实现public class Date{private int day;private int month;6第 1章 Java语言概述7private int year;Date(int d,int m,int y) { 〃构造函数day=d;month=m;vear=v;)public void printDate( ) {System.out.print】n( ” 今天是“+year+“年"+month+“月 ”+day+” 日” ) ;}public static void main(String ( ] args) {Date today=new Datefl23,2005);today.printDate();Date anothcrday=new Datef21.3,2005);anotherdav.printDate();)}【 例3. 8】设计类Person,用其创建对象,并对创建的对象个数计数。
public class Person(private static int i:private String name;private int age;PersonCString n,int a){name=n:age=a;i++;speakO;)void speak(){Systenkout.println( " 我是第"+i+”个人, 名叫”+name+”,年龄”+age+” 岁}public static void main(String [ ] args){Person pl=new Person( " 李大强20);Person p2=new Person( " 张晓明”,22);Person p3=ncw Person("王金宝)}【 例3. 9]public class Swap{public static void main(String args[])(Integer a, b;a = new Integer(lO);b = new Integer(SO);System.out.println( "before swap...**);System.out.println( "a is " + a);Systcm.out.printlnC'b is " + b):swapfa, b);System.out.println( "after swap...");Systcm.out.println( "a is " + a);System.out.println(" b is " + b);)public static void swap(Integer pa, Integer pb){Integer temp = pa;pa = pb;pb = temp;Systcm.out.printlnC'in swap...");System.out.printlnC'a is " + pa);Svstcm.out.printlnC'b is *' + pb);})【 例3. 10】class TestObject{private String name;public void sctNamc(String pnatne){name = pname;)public String getName(){return name:public class TcstitJprivate void modify(Test()bject ta,TestObject tb){ta.sctNamcC'xyz");tb.setNameC'uvw");Systeni.out.println( "in test...'1);System.out.println("ta.getName()=" + ta.getNameO);System.out.println("tb.getName()=" + tb.getNameO);)public static void main(String[] args){TestObject ta = new TestObjectO;8Java语言程序设计基础TcstObjcct tb = new TcstObjectO;Testit tc = new TestitO;ta.setName("abc°);tbj»etName("der,);System.out.println(" before test...'*);Systcm.out.println(,,ta.RetNamc()=M + ta.getName());System.out.println("tb.getName()=" + tb.getNameO);tc.modify(ta, tb);System.out.printlnC'after test...");System.out.prlntln("ta.getName()='< + ta.getNameO);System.out.println("tb.getName()=M + tb.getNameO);}I【 例3. 11】对例3.2中Date类进行修改,用this实现对本类的引用。
public class Datc(private int day;private int month;private int year;public void setDate(int day J nt month.int year){this.day=day;this.month=month;this.vcar=year;I)【 例3. 1 2 ]对例3.2中Date类进行修改,将对象作为自变量传送public class Datc{private int day,month,year;Date(int day.int monthjnt year){setDate(day,month,year);printDate(this):)private void setDate(int day,int month,int year){this.day=day;this.month=month:this.year=year;}private void printDate(Datc d)(System.out.println( “ 今天是"+d.year+“年”+d.month+“ 月”+d.day+“ 日今}public static void main(String [ ] args){Date date=new Date(31,03,2005);【 例3. 13】将HelloVVorld程序放入自己定义的包my Package中。
package myPackage;public class HelloWorld{public static void main(String [ ] args){Svstcm.out.printCHello World!'*);))【 例3. 1 4 ]将Dale类放入包my p a ck a g e.并用my package!包中的Test类实现该Date类package my package;public class Date(private int day;private int month;private int year;public Datcfint d,int m,int y)(day=d;month=in:ycar=y;}public void setDate(int djnt m,int y){day=d;month=m;vear=v;Ipublic void printDate()(Systcm.out.println( “ 今天是 "+year+“年”+month+” 月 “+day+” 日/ / 以下程序是my package 1包中的Test类.package my package 1;import mypackagc.Datc;public class Test{public static void niain(String [] args){Date mydate=new Date( 10,04,2005);mvdate.printDate();)8第 1章 Java语言概述9【 例 3. 15】下面的例子演示了包的保护作用。
//A.java 文件package mypackage;public class A{int num;public int get( ){return num;}〃公共作用域〃包的作用域〃公共作用域Z/B.java 文件package anotherpackage;import my package. A;class B{A mya = new A ();void m( ){int t= mya.get(); iint s = mya.num; i}}〃包的作用域〃正确访问〃正确访问〃错误, num 是包的作用域, 不能访问〃程序的编译(javac -d . B .java)会出现如下错误:Z/B.java:8: num is not public in my package. A; cannot be accessed from outside package//int s = mya.num;/ / 人〃错误mum是包的作用域, 不能访问【 例 3. 16】设计一个电视机类,成员变量包括电视机编号、生产厂家、品牌名称、大小、开关状态,并可以对其进行相应操作,如打开电视、提高/ 降低音量、更换频道等。
电视机编号由生产日期和生产编号构成,如 2005年 4 月 1 2 日生产的第一台电视的编号为2005041201,第二台为2005041202,该编号自动生成. 将该类放入自己的包中,并进行测试.package mypackage.tvset; >import java.util.Date: >public class TvSet(private static int number;private int tvnumber;〃定义包 mvpackage.tvset〃引入Java:util.Date类,用于获得当前日期〃电视机编号private final String manufacturer” 职业学院设备厂” ;private final String brandnamc=" 学院牌" ;private int size;private String switchstate=" 关闭" ;public TvSet (int size){〃生产厂家〃电视机品牌名〃电视机尺寸〃电视开关状态〃构造函数this.size=size;setNumber ();tvnumbcr=number;Systcm.out.print( " 由"+manufacturer+”制造的"+brandnamc+sizc+”时电视已被制造。
" ) ;Systeni.out.println( “ 该电视的编号为''+tvnumber);private static void setNumber( ){String datenumber:Date d=ncw Datc();String day=InteRcr.toStrinR(d.gctDate());〃设置电视机编号〃获取当前日期String month=(d.getMonthO<9)?',0"+IntegentoString(d.getMonth()+1); Integer.toString (d.getMonth( )+1);String year=Integer.t»String(d.getYear ( )+1900);datenumber=year+month+day;numbers (number==O)?Integer.parseInt(datenumber+"Or'):number+l;〃生成电视机编号public void opcnTv(){switchstate=" 打开” ;System.out.println( " 电视已被打开” ) ;)public void closeTv ( ){switchstate=" 关闭" ;System.out.prinUn( " 电视已被关闭” ) ;}public void changeChannel (String s){System.out.println( " 电视已被切换到“+s+"频道” ")public void heightenVoiume (){System.out.println( " 电视音量被提高” ) ;}public void lowcrVolume ( ){System.out.prinUn( " 电视音量被降低” ) ;)public int getSize (){return size;)public String getSwitch ( ){return switchstate:)public int getTvnumber (){〃打开电视〃关闭电视〃更换频道〃增大音量〃降低音量〃获取电视机尺寸/ 瞅取电视机开关状态〃获取电视机编号return tvnumber;10Java语言程序设计基础class Test(〃运行测试public static void niain(String [ ] args){TvSet tvl=new TvSet (24);TvSct tv2=new TvSet (29);TvSet tv3=new TvSet (34);tvl.openTv ();tvl.changeChannel ("CCTV5");tv 1 .heightenVolume ();System.out.printin ("tvl 处于“+tvl.getSwitcb ( )+''状态" ) ;System.out.println (utv2 处于“+tv2.getSwitch ( )+"状态" ) ;System.out.println ("tv2 的大小为“+tv2.gelSize ( 中时System.out.println (utv2 的编号为n+tv2.getTvnumber ( ));System.out.println ("tv3 的编号为“+tv3.getTvnumbcr ( ));))【 例4. 1】数据类型类的对象方法使用示例。
public class TcstDatal\ pcl{public static void main(String[] args){ 〃使用基本数据类型double d = 0.7E-3;inti= 1000;byte b = 55;short s = 500;Double dd=new Double(d);〃使用构造函数生成基本数据类型类的对象Integer ii=new Integer(i);Byte bb=new Byte(b);Short ss=new Short(s);Long ll=ncw Long(50000L);Character cc=new CharacterCa');Float ff=new Float( 0.23F);Boolean bbool=ncw Boolean( true);〃取得对象中的基本类型数据double x=dd.doublcV'alue():int ysii.intValue();System.out.println(x);Systcm.out.println(y);System.out.println(bb.byteValueO);Systeni.out.println(ss.shortValueO);System.out.println(ll.longValueO);Systcm.out.println(cc.charValueO);System.out.println(fl'.floatVaiueO);Svstem.out.println(bbool.bool«anValue());/ 扁 基本数据类型类中的数值转换为字符串System.out.println(ii.toStringO);Systeni.out.println(fT.toStringO);System.out.println(dd.toString());Systcm.out.println(ll.toStringO);System.out.println(ii);Systcm.out.println(ff)://Integer si= new Integer("45");//System.out.println(si.intValueO);【 例4. 2 ]数据类型类的静态方法使用示例。
public class TcstDatal\ pc2(public static void niain(String[] args)(〃使用态方法parseXxxxfStrings)把字符串转换为相应的基本数据类型int pi= Integer.parscIntC 1234");Boat pr=Float.parseFloat("1234F');double pd=Double.parscDouble("l2.345");long pl=Long.parseLong(“ 123456789” )W东加 Lbyte pb=Byte.parseByte("45");short ps=Short.parseShort("6789");Systein.out.println( pi):System.out.println( pD:System.out.println( pd);Systcm.out.println( pl);System.uut.println( pb);Svstem.out.println( ps);/ / 使用静态方法valueOftStrings)把字符串转化成相应的数据类型对象Double td=Double.valueOf(u1.234H);Integer ti=Integer.valueOf("456");Byte tb=Byte.valueOf("120,');10第1章Java语言概述11Short ts=Short.valueOfT'500”);Long tl=Long.valueOf(" 12345678901");Float tf=Float.valueOf(,,9.8765f,);Boolean tb(M»l=Boolean.valueOf(, ,true");Systcm.out.println(td);〃系统会自动调用相应的toString()方法System.out.println(ti);System.out.println(tb);Systeni.out.println(ts);Systeni.out.println(tl);System.out.println(tf);Systein.out.println(tbool);Systein.out.println(Integer.MAX_VALUE):System.out.println(IntcRcr.MIN_VALUE);System.( )ut.println(Doubk.M/kX_VALUE);Systcm.out.println(Doublc.MIN_VALUE);【 例4. 3 ]创建两个Double对象:一个是无穷,另一个是非数字。
class InforNaN(public static void main(String[] args){Double b=new Double . ) ;Double d=new Double(0/0.);Systcni.out.println(b+tt:**+b.isInfinite()+M/'+b.isNaN()):Systeni.out.println(d+4t:,,+d.isInfinite()+,,»,,+d.isNaN());[ 例4. 4 ]编写一个应用程序,求Fibonacci数列的前10个数Fibonacci 数列的定义为:Fj = F> = L 当 n>=3 时,F„ = F^i + F.,2 »public class Fibonacci(public static void main(String args[])(int i;int H ]=ncw int[10];noi=i; fiu = i; 底 特 n o M u = i 的写法for(i=2;i<10;i++)niM i-u+ni-2];for(i=l;i<=10;i++)System.out.println(" F[" +i+"]=,,+ffi-H);【 例4. 5 ]编写应用程序,声明一个整型数组并对它初始化,在屏幕上输出各元素的值和其总和.public class intarray(public static void main(String args[])(int a[ ]={ 1,2,3};int iQum=0;for(i=0;i public class TwoArrav(public static void main(String args[]){int b(][]=({ll),{2142},(313233,34));int sum=0;Systeni.out.printlnC'数组 b 的行数:u+b.length);for(int I=O;I ;e.x=l;e.z="Hello!e.setAO;System.out.println("调用方法 getX 的结果:" + e.getX ) ;System.out.println("调用方法 getZ 的结果:" + e.getZ());System.out.println(M 调用方法 getA 的结果:” + e.getA());})class superclass {public int x;private float y;String z;int getXO (return(x);]String getZ() (return(z);class subclass extends superclass {private int a;void set/\() {a=2;}int getA() {return(a);))【 例5. 3]class superclass 〃定义父类{int x;)class subclass extends superclass 〃定义子类(int y;char ch:public class testclass 〃使用父类与子类{superclass sp. sp_ref;subclass sb, sb_ref;sp=new superclassO:sb=ncw subclass。 ;sp_ref=sb; 〃父类引用可以指向子类对象sb_ref= (subclass )sp_ref; 〃父类引用转换成子类引用【 例5. 4]public class ExtendsExampublic static void mainfString [] args)14Java语言程序设计基础subclass e=new subclass();Systcm.out.printin( " 调用父类 gctXO方法结果:" + c.getXO);System.out.println( " 调用子类 getA 方法结果:"+ e.getAO);))class superclassIpublic int x;private float y;String z;superclassx=10;)int getX()(return(x);}String getZO{return(z);})class subclass extends superclass{private int a;int getA()(a=x+2;return(a);}【 例5. 5 ]实例分析abstract class PhoneCard(double balance;abstract boolean performDiaK);double getBalanceO(return balance;abstract class None_Nuniber_Phone€ard extends PhoneCard]String phoneSetType;String getSetTypef)|return phoneSetTvpe;)}abstract class Number_PhoneCard extends PhoneCard{long cardNuinber;int password;String connectNumber;booleun connected;boolean performConnectiondong cn, int pw)(if (cn==cardNuniber && pw==password){connected=true;return true;}elsereturn false;}}class magCard extends None_Number_PhoncCard(String usefuLXrea;boolean performDial。 if (balance>0.9)balance-=0.9;return true;14第 1章 Java语言概述15elsereturn false:}}class IC_Card extends None_Nuniber_PhoncCard(boolean perforniDiaK)(if (balance>0.5){balance-=0.5;return true;}elsereturn false;class IP_Card extends Number_PhoneCard{Date expireDate;boolean perfonnDlalO{if (balance>0.3 && expireDate.after(new Date ) )(balance-= 03;return true;}elsereturn false;class D200_Card extends Namber_PhoneCard(double additoryFee;boolean performDial()(if (balancc>(0.5+additorvFce)){balance— = (0.5+additoryFee);return true;}elsereturn false;【 例5. 6]public class MethodOverride(public static void main(String [] args){SubClass s=new SubClass();s.hin();)}class SuperClass(int i=l;public void fun(){System.out.println("S uper");System.out.printlnU'父类的 i=" + i);>}class SubClass extends SuperClass(int i=2;public void fun(){System.out.printlnC "Sub");System.out.println( " 子类的 i=" + i);super.fun();【 例5. 7】class A{public int al;private float a2int gctA()16Java语言程序设计基础return(al);}void setA(){})class B extends A(int bl;String b2;String getBO(return(b2);))class C extends B(int c;public int al;int printCO(Svstem.out.println(c);}]【 例5. 8]public class ExtendsExam(public static void main(String [] args)(subclass e=new subclass。 ;Systcm.out.printlnf'* Sup_getX()方法结果:"+e. Sup_gctX());S,stem.out.println(" Sub_getX()方法结果:M+e.Sub_getX());}')class superclass{public int x=10;int Sup_getXO{return(x);class subclass extends superclass|private int x=20;int Sub_getX()(return(x);})【 例5. 9]class superClass{void superPrint(){System.out.println("This is superClass!");))class subClass extends super€lass(void superPrint(){System.out.print)n( "This is subClass!");}}public class myinherit{public static void main(String args[]){subClass subObject = new subClassO;subObject.superPrint(); 〃子类对象调用子类的方法superClass supcrObject = new superClassO;super()bject.superPrint(); 〃父夹对象调由父类的方法)}【 例5. 10]public class ExtendsExam{public static void main(String [] args)(subclass e=new subclass。 ;e.Sub_printX();)class superclass16第1章Java语言概述17public int x=10;int Sup_getX(){return(x);)void Sup_printX()(Systemxnit.printlnCSup_prinlXO方法结果:"+ Sup_getX());)}class subclass extends superclass(private int x=20:int Sub_getX()(rcturn(super.x); 〃修改部分)void Sub_printX()(Systcm.out.println(u Sub_getX()方法结果:*'+Sup_getX());super Sup_printX();【 例5. 11]public class OverloadExam(public static void print(String str){Svstem.out.println("String=M+str):)public static void print(int i)(Svstem.out.println("int=',+D;)public static void main(String [] args)(prints 123”);print(123);【 例5. 12]public class OverloadExam{public static void printfchar c){SvstenLout.printlnf "char="+c);}public static void print(short i){System.out.println(,,short=',+i);}public static void main(String [] args){byte b=l;print(b);))【 例5. 13]class Xvz{// member variablespublic Xyz()(/ / 无参数的构造函数)public Xvzfint x)(〃整形参数的构造函数【 例5. 14]public class Employee {private String name:private int salary;public Employee(String n, int s) {name = n;salary = s;public Employee(StrinR n){18Java语言程序设计基础this(n, 0);}public Employee。 (this( '* Unknown * * );))【 例 5. 15】abstract class fatherClass(abstract void abstractMethod();void printMethodO(System.out.println("fatherCiass function! '*);))class childClass extends fatherClass(void abstractMethodO(Sy$tem.out.println("childClass function! 0);))public class mainClass(public static void main(String args[])(childClass obj=new childClassf);obj. printMethodO:obj. abstractMethodO;))【 例 5. 16]public interface Sup_InterfaceExam(public static final int x;int y;public void z();public abstract int get");}public interface Sub.lnterfaceExam extends Sup.lnterfaceExam{public static final int a;int b;public void c();public abstract int getc();}class MvCIass implements Sub InterfaceExam. Sup_InterfaceExam(public void z()public int getz(){return 1;}public void c()public int getc()(return 5;))【 例 5. 17]interface A{int a=l;)interface B{int b=2;public abstract void pp();)interface My Interface extends A.B{} 〃 接 口 的继承abstract class .AbstractlnterfaceExam implements A,B {} /於象类实现接 口public class InterfaccExani implements A.B / / 一般类实现接口(static InterfaceExam obj = new InterfaceExamO;public static void main(String [] args)(System.out.println( " 靠承隹口 A 中的 a=" + obj.a);obj.pp();18第 1章 Java语言概述19)public void pp() 〃实现抽象方法 pp(){System.out.println( " 继承接口 B 中的 b=" + obj.b);【 例6. 1 ]使用多种方法创建一个字符串并输出字符串内容。 public class StrOutput {public static void main(String(] args) {〃将字符串常量作为String对象对待,实际上是将一个String对象赋值给另一个String si = "Hellojava!";〃声明一个字符串,然后为其赋值String s2;s2 = "Hcllojava!";〃使用Siring类的构造器中的一个创建一个空字符串,然后赋值给它String s3 = new String();s3 = "HelJoJava!";〃将字符串直接传递给String类构造器来创建新的字符串String s4 = new String("HcHoJava!”);〃使用String类的构造器中的一个〃通过创建字符数组传递给String类构造器来创建新的字符串charcl[] = CH', T, 7 , T , V , 'a'};String s5 = new String(cl );〃将字符数组子集传递给String类构造器来创建新的字符串String s6 = new String(cl,0,2 );System.out.println(sl):System.out.println(s2);Systcm.out.println(s3);System.out.println(s4);System.out.println(sS);System.out.printin(s6);))【 例6. 2]比较字符串。 public class StrCompare {public static void main(String[] args) {String s1="aaaa";String s2="aaaa";String s3="AAAA";String s4=ubcd";if (sl.equals(s2)) {System.out.println("sl-s2");}else (System.out.println(0sl!=s2");)if (sl.equalsIgnoreCase(s3)) {System.out.printlnC s1= =s3 when ignoring case");}else (Svstem.out.println<" sl!=s3 when ignoring case");)if (sl.regionMatches(true,0rS3,13)) {System.out.printlnC" sl= =s3 when ignoring case");)else (System.out.println('' sl!=s3 when ignoring case");)if (sl.regionMatchcs(falsc,0.s3,13)) {Svsteni.out.println(" s1= =s3 when not ignoring case");Ielse (System.out.println("sl!=s3 when not ignoring case"):Iif (pareTo(s4)<0) {System.out.printlnC" sl public class Str Length{ public static void main(String[] args){ String sl="HelloJava!M;20Java语言程序设计基础int i=sl.lcngth();System.out.printin( " 字符串 si 长度为“+i);【 例6. 4 ]使用+ 和concat方法创建同一个字符串public class StrConcat{ public static void main(String[] args){ String sl="Hcllo”;String s2=sl+",H;String s3=s2.concat(" Java");!String s4=new StringC*! **);String s5=s3.concat(s4);System.outprintln(''连接而成的字符串是"+s5);【 例6. 5 ]复制字符串public class StrCopy{ public static void niain(String[] args)(String sl=new String();char data| ]={ 'b\ 'c; M'. V , T):sl=sl.copyValueOf(data);System.out.println('' sl=u+sl);sl=sl.copyValueOf(data,2^);System.outprintln(" sl="+sl);sl.getChars(l,2, data,0);System.out.printlnC data="+new String(data));data=sl. toChar?krray();System.out.printlnC data="+ncw String(data)):String s2=new String();String s3=new StringC );s2=sl.sul>string(0);System.out.println(M s2="+s2);s3= sl.substring(l,2);System.out.printlnC" s3="+s3);)}// sl=abcdef// sl=cde// data=dl>cdef// data=cde// s2=cde〃s3=d【 例6. 6 ]查找字符和子串。 public class StrSearch{ public static void main(String[] args)(String sl=MJavav";char c=sl.char.\t(2);System.out.println("c='*+c);int i=sl.indexOfCa');Systcm.out.println("fistchar=u+i);intj=sl.lastIndexOfCa');System.out.println(,,lastchar="+j);i= sl.indcxOfC'av");System.out.println("fiststring="+i);j=sl.lastIndexOf(uav");Svstem.( )ut.println("laststring="+j);}}【 例6. 7 ]修改字符串.public class StrModify{ public static void main(String[] args)(String sU" Java";sl=sl.replace('a,, 'b');System.out.println(,,sl="+sl);String s2=sl.toLowerCasc();String s3=s1. tolJpperCase ( );System.out.printin("s2=M+s2);System.out.println("s3="+s3);s2= $l.trim();Svstcm.outprintln("s2=',+s2);})【 例6. 8 ]用多种方法创建StringBufTer对象。 public class StrBufferSet{ public static void main(String[] args)StringBufl'er sl=new StringBufTer();sl.append(uHelloMJava!M);20第 1章 Java语言概述21System.out.println("sl=" +sl);StringBuffer s2=new StringBuff public class Strt'hange{ public static void main(String[] args){StringBufTer sl=new StringBufTerC^alloJava!");sl^etC harA td, V );System.out.println(sl);si.replace(l,5. "i'1);System.out.println(sl);si.delcte(0,3);System.out.println(sl);s 1 .deleteChar At(4);Systcm.out.println(sl);【 例6. 11】用arraycopy 方法复制两个数组.class CopyArray{ static byte arrayl[ J={97,98,99,10(), 101};static byte array2[ ]={ 102,102,102,102,102);public static void main(String[] args){System.out.println(" array l="+new Stringfarray 1));System.out.println(" array2="+new String(array!));Systeni.arraycopy(arrayl,0,^rray2,0,array 1.length);System.out.printlnC* arrayl="+new String(arrayl));System.out.println(" array2="+new String(array2));System.a r ray copy (array 1,0,array 1.1 .array 1. lengt h-1);Systeni.arraycopy(array2,l,array2,0.array2.length-1);System.out.println(" array l="+new Stringfarray 1));System.out.printlnC* array2="+new String(array2));【 例6. 1 2 ]使用Vector类的示例。 import java.util.*;class VectorTest(public static void main(String[] args){Vector vec=new Vector(3);System.out.printlnC" old capacity is^+vec.capacityO);vec.addElementfneM, Integer(l));vec.addElementfnew Integer(2));vec.addElement(new Integer(3));vec.addElementfnew Float(2.78));vec.addElcment(new Doublc(2.78));System.out.println(" new capacity is"+vec.capacity());System.out.printlnC new size is"+vec^ize());System.out.printlnC* first item is"+vec.firstElementO);System.out.println(" last item isu+vec.lastElement());iftvec. contains(new Integer⑵ ))System.out.printlnC found 2',);vcc. rcmovcElementAt(l);iR vec.contains(new Integer(2)))System.out.printlnC1 found 2");elseSystem.out.printlnC' after deleting not round 2M);1例6. 13)向堆栈中添加元素并弹出。 import java.util.*:22Java语言程序设计基础class StackTcst{public static void main(String[] args){Stack stackl=new StackO; 〃构造一个空堆栈 stack!try ($tackl.push(new Integer(O));sUckl.push(new Integcr(D);stackl.pushfnew Integer(2));stackl.pushfncw Integcr(3));stackl.pushfnew Integer(4));System.out.println((Integer)stackl.pop());System.out.println((Integer)stackl.pop());System.out.println((Inkger)stackl.pop());Systcni.out.println((Intcgcr)stackl.pop());System.out.println((Integer)stackl.pop());}catchfEmptyStackException e){ }【 例6. 1 4 ]用Hashtable来检验随机数的随机性。 import java.util.*;class Counter {int i = 1;public String toStringO (return Integer.toString(i);class Statistics {public static void main(String[] args) {Hashtable ht = new Hashtable();for(int i = 0; i < 10000; i++) {// Produce a number between 0 and 20:Integer r = new lnteger((int)(Math.random() * 20));if(ht.containsKey(r))((Counter)ht.get(r)).i++;elseht.put(r, new CounterO);)System.out.println(ht);})【 例7 .1 ]没有使用异常处理的情况public class ExceptionExam(public static void main(String [] args)(int i=0;}}【 例7. 2】使用trj'/catch进行异常处理的情况。 public classExceptionExamO(public static void niain(String args口 )(inttry { / /监视一代码块i=0;a=42/i;return;)catch (ArithmeticException e){ 〃捕获一个被零除异常System.out.println( " 被零除” ) ;}}}【 例7. 3】嵌套try语句的示例public class ExceptionExam!(public static void main(String args[])(int data1[]={2,4,6,8,10,12);int data2[]={ 1.0,2,43};trv(for(int i=0;i public class ExceptionExam3(public static void main(String argsf ])(try]int i = args.length;System.out.printlnC'i ="+i);int j=5/i;int k[]={ 1,2,3 };k[5]=0;}catch( \ rithmeticException e){System.out.println( " 被零除: " + e);]catch(Arravlndex()ut()fBoundsException e)]Svstem.out.println( "Array index out of bound exception: '* + e);)System.out.println( " 执行 catch 块后的语句块” ) ;))【 例7. 5】使用finally的示例public class ExccptionExam4]public static void main(String [] args){try(int [] a=new int[3J;a[3]=4;return;}catch(.4rithmeticException e)(System.out.prinUn( " 发生了 异常” ) :)finallySyslem.out.println( " 最后执行的语句! * * ) ;))}【 例7. 6】声明抛出异常的程序的格式。 import java.io.*;public class ExceptionExam5(public static void go() throws lOException{ ……〃方法代码}public static void main(String [] args){ ……〃程序入口主方法代码}}【 例7. 7】使用throw关键字手动抛出lOException异常import java.io.*;public class ExceptionExam6{public static void main(String || args)(try(System. 正在运行程序…” ) ;throw new lOException( “ 用户自行产生异常” ) ;24Java语言程序设计基础)catch(IOException e)(System.out.prinlln( " 已捕获了该异常!” ) ;【 例7 . 8 ]自定义异常示例class ExceptionExam7_l extends Exception 〃自定义异常类 ExccptionExam7_ 1{private int show;ExccptionExani7_l (int a)(show=a;}public String toStringO{return "ExceptionExam7_l <''+show+”>";public class ExceptionExam7{static void caculate(int a) throws ExceptionExam7_ 1{Systein.ouLprintln('W(',+ a +”]已经进行过相应的操作” ) ;if(a>100)throw new ExceptionExam7_l (a);System.out.println( ' 哦行该算法正常退出!” ) ;)public static void main(String args。 ){try{caculate(l);caculate(lOOO);}catch (ExccptionExam7_l e){SystcnLout.println( " 捕获了 异常0 + c);}}【 例8. 1】使用File类管理文件和目录import java.io.*;import java.util.Date:public class filetest {public static void main(String []args){String filena me=" d :\\ja vapj\\ex.ja va1';File myfile=new File(filename);if(!mvfilc.cxists())(System.cir.println(filcnamc+"未找到! " ) ;return;)iff mvfilc.isDirectorvO )(System.err.println( " 文件对象"+niyfHc.gctNamc()+”是目录!”);File ds=new FileC'mydata");if(!ds.exists()){ds.mkdir():System, mit.println( " 目录”+ds.getAbsolutePath()+”创建结束! ” ) ;)return;}if(niyfile.isFUe())(Systcm.out.println( " 文件对象:"+myfile.getAbsolutePath。 ) ;System.out.println( " 文件字节数:"+myfile.lengthO);System.out.println( " 文件是否能读:"+myfile.canRead());if(mvfilc.canWritcO)(System. import java.io.*;class ReadVVriteFile{public static void main(String[] args) {String file 1,file!;int ch = 0 ;filel = "readme.txt";file2="readme.bak";try (FilelnputStream fis = new FilelnputStreamtfllel);FileOutputStream fos=new Fi)eOutputStream(file2);int size=fis.available();SystenLout.prinUnC谆节有效数:*'+size);while ((ch=fis.read())!=-l)(System.out. write(ch);fbs.write(ch);)fls.closcO;fos.closef);}catch (lOException e){System.out.println(e.toStringO);)【 例8. 4]使用DatalnputStream类和DataOutputStream类读写格式文件。 import java.io.*;public class fdsRW{public static void main(String[] args){String file="student.dat";Student sl=ncw StudcntO;Student s2=new Student , " 张飞”,16「A\true);try{FileOutputStream fo=new Fik()utputStream(file); 〃创建文件输出流对象DataOutputStream out=ncw DataOutputStrcani(fo); 〃创建数据输出流对象out.writelnt(sl.sno); //W 文件out. write(JTF(sl.name);out.writelnt(sl.agc):out.writeChar(sl.grade);out.writeBoolean(sl.sex);out.writelnt(s2.sno);out.writeUTF(s2.name);out.writelnt(s2.age);out.writeChar(s2.grade);out.writeBoolean(s2.sex);out.close(); 〃关闭数据输出流fo.close(); 〃关闭文件输出流System.out.println( “ 文件: “+me+”创建完毕! ” ) ;Systcm.ouLprintln( " 开始读取文件内容: “ ) ;FilelnputStream fi=new FilelnputStream(nie); 〃创建文件输入流对象 DatalnputStreamin=ncw DatalnputStream(fi); 〃创建数据输入流对象for(int i=l;i<=2;i++){ 〃读取文件内容int sno=in.readlnt();26Java语言程序设计基础String snamc=in.readUTF();int age=in.readlnt();char grade=in.readChar();boolean sex=in.readBoolean();System.out.println(sn(>+"\t,'+sname+"\t',+age+"\t"+grade+"\t"+sex);in.close();fi.close();}catch(IOException e){Systcin.out.println(e.toString()): }class Student{int sno;String name;int age;char grade;boolean sex;public Student(){this.sngO;this.name="未知” ;this.agc=0:this.grade='C';this.sex=truc;)public Studentfint sno,String name.int age.char grade,boolean sex){if(sno>0) this.sno=sno;this.name=name;this.agc=age;this.grade=grade;this.sex=sex;[ 例8. 5]随机读取文件中的字符信息。 import java.io.*;public class Readtextpublic static void niain(String[] args)String strl;char chi;int n;try(File mytxt=new EileC'read.txt");RandomAcccssFile ra=ncw RandomAccessFilc(mytxt."rwM);ra.writeC'This is the first sentenceM.getBytes());ra.writeC harf^n');ra.writeC'Java Program De$ign".getBytes());ra.writeCharCXn');ra.seek(O);strl=:ra.readLine();System.out.println(strl):ra.seek(18);System.out.println(ra.readLineO);ra.closeO;}catch(IOException e)(Systcm.out.println(e.toStringO);【 例8. 6]利用RandomAccessFile实现记录式访问。 import java.io.*;public class RaFilc{ public static void main(String[] args)Student s[]=new Student[4];s[O]=newStudent("zhangsan",17,false);s[1 )=new Student("Iisi",18,true);s[2)=new Student("wangwu",20,true);s(3J=ncw Studcnt("zhaoliu",19.falsc);try{RandomAccessFUe ra=new Random.AccessFile(',student.dat","rw");for(int i=0;i<4;i++) 〃 将4个学生信息写入文件(ra.writeBytes(s[i].name); 〃将字符串按字节写入ra.writelnt(s[i].age);ra.writeBoolcan(s[i].scx);System.ou匕printin( " 随机文件字节数:"+ra.lengthO);26第1章Java语言概述27ra.seek(O); 〃文件指针指向开始位置System.out.println( " 第一条学生记录:0);byte b[]=new byte[S];ra.read(b);int age=ra.readlnt();boolean scx=ra.rcadBoolcan();System.out.printlnfnew String(b)+,,\t"+age+'\t'+sex);ra.skipBytes(26); 〃访问第四个记录System.out.println( “ 移动后指针位置:"+ra.getFiIePointer());ra.read(b);age=ra.readlnt();sex=ra.readBoolean();System.ouUprintln(new String(b)+"\t,,+age+'\t'+sex);ra.close();)catch(IOException e){Systcm.out.println(c.toStringO);)class Studentf 〃学生类的定义String name;int age;boolean sex;final static int LEN=8;Student(String name,int age,boolean sex){if(namc.lcngth()>LEN){name = name.substring(0,8); / / 超过 8 个字符时,取前 8 个)eise(while(name.length() import java.io.*;public class Standardl()l{public static void main(String (Jargs)(int ch;System.out.println( “ 请输入一行字符” ”try(while((ch=System.in.read())!='\r')System.out.writefch);}catch(IOException e){Svstem.out.println(e.toStringO);)Svsteni.out.write(,\n');))【 例8. 8]求从键盘输入的n个数的平均数import java.io.*;public class average {public static void main(String [ |args){byte b[]=ncw byte(10];String str;int n=0;double sum=0,d,avg;Systcm.out.print( " 要对几个数求平均? “ 月try{ Systcm.in.read(b);str=new String(b).trim(); 〃去除多余的/r、/n、空格符n=lntcgcr.parsclnt(str):)catch( lOException e)(Svstem.out.pnntln(e.toStringO);)catch(NumbcrFormatExccption c){System.out.prinHn(',请不要输入0-9以外的其他字符!" ) ;System.exit(-l); 〃 程序异常结束}for(int i= l;i<=n;i++){System.out.print(i+":");try{ System.in.read(b);str=ncw String(b);Double x=new Double(str);28Java语言程序设计基础d=x.doublcValuc();sum+=d;}catch(IOException e){System.out.println(e.toString());)catchCNumberformatException e){i-S 〃重新输入Svstem.out.println( " 请正确输入实数!”);})System.out.println(“ 平均值="+sum/n);【 例 9. 1] HelloApplet.javaimport java.applct.*; 〃将java.applct包中的系统类引入本程序import java.awt.*; 〃将java.awt包中的系统类引入本程序public class HelloApplet extends A pp!et(public void paint(Graphics screen){screen.setColor(Color.red);scrccn.drawString( " 你好,Java 世界! ”220);[ 例 9. 2]标记块 //Picture.javapackage firstapplet;import java.awt.*;import java.applet.*;public class Picture extends Applet {Image mycar;//Construct the appletpublic Picture ])//Initialize the appletpublic void init() {setBackgr<)und(Color.red );my car =getImage(getCodeBase(),"car.jpg");}//draw the imagepublic void painUGraphics screen){screen.drawImage(mvcar,10,10,this);)}【 例9. 6]将声音作为背景音乐播放//AUSoundpackage firstapplet;import java.awt.*;import java.applct.*:public class AUSound extends Applet {AudioClip audioCiip;//Construct the appletpublic AUSound() {)//Initialize the appletpublic void init() {a udioClip=get?\udioC] ip(getCodeBase(),"backSound.au");〃只播放一遍//audioC li p. play ();颂环播放audioClip.loop() ;}//Stoppublic void stop()(30Java语言程序设计基础audioClip.stopO:}//paintpublic void paintfGraphics screen){screen.setColor(Color.green);screen.flllRcct(0,0,200.100):screen.setColor(Color.red );screen.drawStringC'Plaving sounds...*,,40.50);}}【 例9. 7 ]综合案例:实现动画显示并配有背景音乐.程序清单:// Animation.javapackage firstapplct;import java.awt.*;import java.awLevcnt.*;import java.applet.*;public class Animation extends Applet implements Runnable{private int totallmages=3^/total number of imagesprivate Image images[];//an array of imagesprivate int width;private int height;private Graphics g;〃绘图区域private Thread runner;〃动画线程private AudioClip sound;〃背景音乐//applet初始化public void init()(images=:neM lmage|totalimages];McdiaTrackcr nit=ncw McdiaTracker(this);for(int i=0;i 32Java语言程序设计基础//Fig. 10.8: RadioButton.java//Creating radio buttons using CheckboxGroup and Checkbox.import java.applet.A pplet;import java.awt.*;public class RadioButton extends Applet{private String city[]={ “ 北京“ , “ 上海“ 「西安“ , “ 重庆“ , “ 深圳“ , “ 大连“ } ;private Checkbox radi<>[] = new Checkbox[6];private CheckboxGroup c=new ChcckboxGroup();public void init()(add(new Label「请选择中国最大的城市: " ) ) ;//Create six radio buttons and add them to appletfor(int i=0;i<6:i++)(radio[i]=new Checkbox(city[i],c,false):add(radio[i]);}add(new Label( " 这是一个单选按钮的例子” ) ) ;【 例10. 6】演示滚动面板的三种显示策略。 //Fig. 10.9: ScroHPancDcmo.java//Creating three Scroll Panes with three different modes.import java.awt.*;import java.applet.A pplet;public class Scroll Pa neDemo extends Applet{private Text Area t1=new TextAreaO;private Hext Area t2=new Text Area ;private Text Area t3=ncw TextArcaO;private ScrollPane pl=new ScrollPane(ScrollPane.SCROLLBARS_NEVER);private ScrollPane p2=new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);private ScrollPane p3=new ScrdlPane(Scrol!Pane.SCR()LLBARS_ALWAYS);public void init(){setLayout(new GridLayout(3,l));//add TextAreas to ScrollPanespl.add(tl);p2.add(t2);p3.add(t3);//add ScrollPanes to appletadd(pl);add(p2);add(p3);)【 例10. 7 ]演示单行文本框的构造函数及常用方法的使用。 //Fig. 10.10: TextFieldDemoJava//Demonstration the TextField class constructors and methods.import java.applet.A pplet;import java.awt.*;public class TextFieldDemo extends Apple”private TextField textFieldl,textField2;public void init(){//construct TextField with default textlextFieldl=new TextField( " 在这里输入用户名” ) ;//construct TextField with 15 elements visibletextField2=new TextField(15);//set the echo charactortcxtField2.setEchoChar('*');//add components to appletadd(ne\v Label( " 用户名: " ) ) ;add(textFieldl);add(ncw Label( " 密 码: " ) ) ;add(textFicld2);)public void paint(Graphics g){String $;s=" 用户名: "+textFicld 1 .gctText();s = s + "密码:,,+textField2.getText();showStat us(s);【 例10. 8】演示TextArea类的常用构造方法。 //Fig. 10.11: TextArcaDemo.java//Creating TextArea Objects.import java.applet.A pplet;import java.awt.*;public class TextAreaDemo extends Apple"private TextArea tcxtAreal,tcxtArea2;public void init()32第 1章 Java语言概述33//creating 2 10*20 Text AreastextAreal=new TextAreaCRead-only Text!",10.20);text?\rea2=new TextArea( 10.20);//set text A real read-onlytextArea LsetEditablef false);add(textArcal);add(textArea2);)}【 例 10. 9 ] 演示列表框和下拉列表框的使用//Fig. 10.12: ListAndChoiceDemo.java//Creating a List and a Choice.import java.applet.Applet:import java.awt.*;public class ListAndChoiceDemo extends Applet(private List cityList;private Choice cityChoice;public void init()(//create a list with 5 items visible//allow multiple selectionscityList=new List(5,true);//add 4 items to the listcityList.add,桂林” ) ;cityList.add( “ 福州” ) ;cityList.add( “ 济南” ”cityLisl.add( “ 大连” ) ;//create a choicecityChoice=new Choice。 //add 4 items to the choicecityChoice.addltem("北京” ) ;cityChoice.addltcm( " 上海" ) ;cityChoice.addltemC'西安” ) ;cityChoice.addltem( " 重庆” ) ;ad;i(new Labd「中国最大的城市: " ) ) ;add(cityChoice);add(nc\v LabcK”省会城市: " ) ) ;add(cityList);))【 例 10. 10]//Fig. 10.13: DialogDemo.java//Creating a Dialog.import java.awt.*;import java.awt.cvent.*;public class DialogDemo extends Frame implements ActionListener{Button b=new Button( " 打开对话框” ) ;//create a model dialog object whose owner is this frameDialog dlg=ncw Dialog(this,"你好" , true);public DialogDcmo(){super(“对话隹示例” ) ;add(b);b.ad(L\cti( )nListener(this);pack(); 〃使框架尺寸适应组件的大小set Visible(true);1//handle the hutton_click eventspublic void actionPerformedfActionEvent e){dlg.setLayout( new FlowLayout());dlg.add(new Label( " 你好" ) ) ;dlg.addfncw Button。 ' 确定” ) ) ;dlg.setS i ze(100*60);//show the dialogdlg.showO;)public static void main(String[] args){new DialogDemo 例 10. 1 1 ]演示在应用程序中创建菜单的方法//Fig. 10.16: MenuDemo.java//Incorporating menus into a Frame-based application,import java.awt.*;public class Menu Demo extends Frame{private TextArea t;public MenuDemoC)34Java语言程序设计基础super( " 菜单示例” ) ;t=new TextAreaO;add("Centeru,t)://create Menu BarMenuBar bar=new MenuBarf);//create font MenuMenu fontMenu=new Menu("字体” ) ;//create three McnultcmsMenuitem mil=new MenuItemC'宋体" ) ;Menuitem mi2=new MenuItenM"黑体” ) ;Menultem mi3=new Menultem,隶书” ) ;//add Menuitems to MenufontMenu.add(mil);r( )ntMenu.add(nii2);fontMenu.add(mi3);//add Menu to Menu Barbar.add(fontMenu);//set the Menu Bar for the framesetMenuBar(bar);resize(300,200);setVisibk(true);)public static void main(String[] args)(new MenuDemoO;}}【 例10. 1 2 ]仿上例,为多行文本框添加快捷菜单.//Fig. 10.17: PopupMenuDemo.java//demonstrating a popup menuimport java.awt.*;import java.awt.cvent.*;public class PopupMenuDemo extends Frame implements MouseListener{Text Area t:PopupMcnu pm;public PopupMenuDemo(){super( " 快捷菜单示例” ) ;t=new TextAreaO;add("C //Fig. 10.18: FlowLayout Demo.java//Demonstrating FlowLayoutimport java.applet. Applet;import java.awt.*;public class FlowLayoutDemo extends Applet{public void init(){//set Layout to FlowLayoutsetLayout(new FlowLayoutO);forfint i=0;i<12;i++){34第1章Java语言概述35add(ncw Button( "Button0+i));)【 例10. 14]演示BorderLayout布局管理器的使用//Fig. 10.19: BorderLayoutDemo.java//Demonstrating BordcrLayoutimport java.applet.A pplet;import java.awt.*;public class BorderLayoutDemo extends Applet(public void init(){//set layout to border layoutsetLayout(new Border Lay out());//add five buttons in any orderadd (new ButtonC'North'^^orderLayout.NORTH);add(new Button(',South"),Boi'derLayout.SOt,TH);add(new Button("Center"),BorderLayout.CENTER);add(new ButtoufWest**),BordcrLayout.WEST);add (new Button(,,East"),BordcrLavout.EAST);))【 例10. 15]演示GridLayout布局管理器的使用。 //Fig. 10.20: GridLayoutDemo.java//Demonstrating GridLayoutimport java.applet.A pplct;import java.awt.*;public class GridLayoutDemo extends Apple”public void init(){//set layout to grid layout with 3 rows and 3 columnssetLayoutl new GridLayout(33));//add eight buttons to appletfor(int i= l;i<=8:i++){add(new ButtonCButton" + i));)【 例10. 16]演示CardLayout布局管理器的简单用法.//Fig. 10.21: CardLayoutDenio.java//Demonstrating CardLayoutimport java.applet.A pplet;import java.awt.*;public class CardLayoutDemo extends A pp】el{private Labe! card 1 ,card2,card3,card4;public void init(){cardl=new LabelC'Cardl");card2=new Label("Card2");card3=new Label("Card3");card4=new Laljel("('ard4M);//Create a CardLayout objectCardLayout myCard=new CardLayout();//set layout to card layoutsetLayout(myCard);//add four cards to appletaddC'Cardl ".cardi);add("Card2M.card2);add(',Card3".card3);addC'CarcM'\carcM);//first display the seconed cardmyCard.show(this,"Card2");//then display the next cardinyCard.next(this);})【 例10. 17]图10.22所示程序演示了按钮单击事件的处理方法.//Fig. 10.22: ActionListenerDemo.java//Demonstrating Action Listenerimport java.awt.*;import java.applet.$;import java.awt.cvent.*;public class ActionListenerDemo extends Applet implements ActionListener{Button b=new ButtonC'Press Me*');public void init(){add(b);〃设置按钮b的监听者b.addActionListener(this);〃实现 AclionListener 接口所定义的方法 actionPerformedpublic void actionPcrformed( Action Event e){36Java语言程序设计基础showStatus( "Button Clicked" > ;【 例 10. 1 8 ]选择事件的处理。 //Fig. 10.23: ItemListencrDcmo.java//demonstrating ItemListenerimport java.applct. Applet;import java.awt.*;import java.awt.event.*;public class ItemListenerDemo extends Applet implements ItemListenerflextArea ta=new Text/\rea(630):String[]city={“北京“ , “ 上海“ , “ 天津“ , “ 济南“ , “ 背岛“ } ;Checkbox cb(]=new Checkbox[5];public void init(){add(ne、 v Label「你选择的城市是: " ) ) ;add(ta);add(ne\v Label( " 请选择你喜爱的城市: " ) ) ;for(int i=0;i<5;i++){cb|i|=new Checkbox(city[i]);add(cb[i]);//add ItemListenercb(i].addItemListener(this);}}//implementation of itemStateChanged methodpublic void itemStateChanged(ItemEvent e){ta.append(e.getItemO+"\t");)}【 例 10. 1 9 ] 文本动作事件处理。 //Fig. 10.24: TextListcnerDcmo.java//demonstrating TextListenerimport java.applet.Applet;import java.awt.*;import java.awt.event.*;public class TcxtListencrDcmo extends Applet implements TcxtListcncr{TextField from;TextField to;public void init(){from=new TextField(30);to=new TextField(30);to.setEditable(false);adcUnew Label( " 输入一些文本: ” ) ) ;add(from);add(new Label( " 你输入的文本是: * * ) ) ;add(to);//add TextListenerfroni.addTextListener(this);]//implementation of textValueChanged methodpublic void textVralueChanged(TextEvent e){to.sctText(from.RctTcxtO);【 例 10. 2 0 ] 鼠标事件及鼠标移动事件的处理。 //Fig. 10.25: MouseEventDcnio.java//demonstrating MouseListener and MouseMotionListenerimport java.applct. Applet;import java.awt.*;import java.a^vt.event.*;public class MouscEvcntDcnio extends Applet impiements MouscListcncr, MouscMotionListener{int xl,yl,x2,y2;public void init(){addMouscListcner(this);addMouseMotionListenerfthis);)public void paint(Graphics g){g.drawLine( xl,vl,x2,y2);}//implementation of MouseListenerpublic void mousePressed(MouseEvent c){xl=e.getX();yl=e.getY();}public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent c){)public void mouseExited(MouseEvent e){}public void mouscRcleascd(MouscEvcnt c){}36第1章Java语言概述37//implementation of MouseMotionEventpublic void mouseDragged(MouseEvent e){x2=e.getX();y2=e.getY();repaint();)public void mouseMoved(MouseEvent e){}I【 例10. 2 1 ]调整事件类。 //Fig. 10.26: .-XdjustnientListenerDemo.java//demonstrating/XdjustinentListenerimport java.applct.Applct;import java.awt.*;import java.awt.cvent.*;public class AdjustnientListenerDemo extends Applet implements AdjustmentListener{Label labell=new Label(,'O',.Label.CENTER);Scrollbar scrollbarl;public void init(){scrollbarl=new Scrollbar(Scrollbar.HORIZONTAL);scrollbar l.setMinimum(0);scrollbarl.setMaximum(lOO);//add AdjustmentListener to scrollbarscrollbarl.addAdjustmentListencr(this);setLayoutfnew BorderLayoutO);add(labe)l,BorderLayout.CENTER);add(scrollbarl,BordcrLayout.SOLTH);}//implementation of AdjustmentListenerpublic void adjustmentValueChanged(AdjustmentEvent e){lal)cll.sctText(""+scrollbarl.gctValue());}}【 例10. 2 2 ]窗口事件处理。 //Fig. 10.27: VVindoM'ListenerDenio.java//demonstrating WindowListenerimport java.applet.Applet:import java.awt.*;import java.awt.event.*;public class VVindowListenerDemo extends Frame implements VVindowListener{public WindowListcncrDcnwf){super( “ 可关闭的窗口 ” ) ;setSize(300,200);setVisible(true);//add WindowListener to this frameaddWindowListener(this);)//implementation of WindowListenerpublic void windowOpened(WindowEvent e){}public void windowCI(>sed(WindowEvent e){}public void windoMlconified(WindowEvent e){}public void ivindowDeiconified(VVindowEvent e){}public void windowActivated(VVindowEvent e){}public void windowDeactivated(WindowEvent e)()public void MindowClosing(VVindowEvent e){Svstem.exit(0); //return to OS)public static void main(String[] arg$){new WindowListcnerDcmo();【 例10. 2 3 ]通过适配器来创建一个可关闭的窗口.//Fig. 10.28: WindowAdapterDemo.java//demonstrating the use of Window Adapterimport java.applet.Applct;import java.awt.*;import java.awt.evenL*;public class WindowAdapterDemo extends Frame{public WindowAdapterDemof){super( “ 可关闭的窗口 ” ) ;setSize(300400);setVisible(truc);//use WinAdaplera(ld\VindowListener( new Wi nA da pter());}public static void main(String[] args){new WindowAdapterDemoO;}//must extends WindowAdaptcrclass WinAdapter extends \VindowAdapter{//only rewrite the necessary method38Java语言程序设计基础public void windowClosing(WindowEvent c){Svstem.exit(O);)38。