Java例题源代码

great747 贡献于2011-08-25

作者 许文宪  创建于2008-10-16 00:40:00   修改者User  修改于2011-07-20 13:19:00字数54313

文档摘要:
关键词:

 第1章 Java语言概述 【例1.1】编写一个应用程序,在屏幕上显示字符串“Hello, World!”。 /* HelloWorld.java */ public class HelloWorld { public static void main(String args[]) { System.out.println("Hello, World!"); } } ============================ 【例2.1】本例结合基本数据类型,说明如何使用变量。 public class SimpleTypes{ public static void main(String args[]){ byte b = 0x55; short s = 0x55ff; int i = 1000000; long l = 0xfffL; char c = 'c'; float f = 0.23F; double d = 0.7E-3; boolean bool = true; System.out.println("b=" + b); System.out.println("s=" + s); System.out.println("i=" + i); System.out.println("l=" + l); System.out.println("c=" + 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; //a=9 int b = a*2; //b=18 int c = b/4; //c=4 int d = b-c; //d=14 int e = -d; //e=-14 int f = e % 4; //f=-2 double g = 18.4; double h = g % 4; //h=2.4 int i = 3; int j = i++; //i=4,j=3 int k = ++i; //i=5,k=5 System.out.println("a=" + a); System.out.println("b=" + b); System.out.println("c=" + c); System.out.println("d=" + d); System.out.println("e=" + e); System.out.println("f=" + f); 第1章 Java语言概述 System.out.println("g=" + g); System.out.println("h=" + h); System.out.println("i=" + i); System.out.println("j=" + j); System.out.println("k=" + k); } } 【例2.3】递增运算符和递减运算符的使用示例。 public class AutoInc { public static void main(String[] args) { int i = 1; System.out.println ("i : " + i); System.out.println ("++i : " + ++i); // Pre-increment System.out.println ("i++ : " + i++); // Post-increment System.out.println ("i : " + i); System.out.println ("--i : " + --i); // Pre-decrement System.out.println ("i-- : " + i--); // Post-decrement System.out.println ("i : " + i); } } 【例2.4】关系运算符的使用示例。 public class RelationalOp{ 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.println("a 和 b 不相等"); } } } 【例2.5】本例展示了如何使用关系和逻辑运算符。 import java.util.*; public class Bool { public static void main(String[] args) { Random rand = new Random(); int i = rand.nextInt() % 100; int j = rand.nextInt() % 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 ("(i < 10) && (j < 10) is " + ((i < 10) && (j < 10)) ); 第1章 Java语言概述 System.out.println ("(i < 10) || (j < 10) is " + ((i < 10) || (j < 10)) ); } } 【例2.6】 public class ShortCircuit { static boolean test1(int val) { System.out.println("test1(" + val + ")"); System.out.println("result: " + (val < 1)); return val < 1; } static boolean test2(int val) { System.out.println("test2(" + val + ")"); System.out.println("result: " + (val < 2)); return val < 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(test1(0) && test2(2) && test3(2)) System.out.println("expression is true"); else System.out.println("expression is false"); } } 【例2.7】移位运算符示例。 public class URShift { public static void main(String[] args) { int i = -1; i >>>= 10; System.out.println(i); long l = -1; l >>>= 10; System.out.println(l); short s = -1; s >>>= 10; System.out.println(s); byte b = -1; b >>>= 10; System.out.println(b); } } 【例2.8】利用if语句,判断某一年是否是闰年。 public class LeapYear{ public static void main(String args[]){ 第1章 Java语言概述 //第一种方式 int year = 1989; if ((year % 4 = =0 && year % 100 != 0) || (year % 400 = =0)){ System.out.println(year + "is a leap year."); }else{ System.out.println(year + "is not a leap year."); } //第二种方式 year = 2000; boolean leap; if (year % 4 != 0){ leap = false; }else if(year % 100 != 0){ leap = true; }else if(year % 400 != 0){ leap = false; }else{ leap = true; } if(leap = = true){ System.out.println(year + "is a leap year."); }else{ System.out.println(year + "is not a leap year."); } //第三种方式 year =2050; if(year % 4 = = 0){ if(year % 100 = = 0){ if(year % 400 = = 0){ leap = true; }else{ leap = false; } }else{ leap = false; } }else{ leap = false; } if(leap = = true){ System.out.println(year + " is a leap year."); }else{ System.out.println(year + " is not a leap year."); } } } 【例2.9】 switch语句示例。注意其中break语句的作用。 public class SwitchDemo { 第1章 Java语言概述 public static void main(String[] args) { for(int i = 0; i < 100; i++) { char c = (char)(Math.random() * 26 + 'a'); System.out.print(c + ": "); switch(c) { 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.10】 使用while语句,完成简单的数据求和。 public class WhileDemo{ public static void main(String args[]){ int n = 10; int sum = 0; while(n > 0){ sum += n; n--; } System.out.println("1~10的数据和为:" + sum); } } 【例2.11】 使用do-while语句,完成简单的数据求和。 public class WhileDemo{ public static void main(String args[]){ int n = 0; int sum = 0; do{ sum += n; n++; }while(n <= 10); System.out.println("1~10的数据和为:" + sum); } } 【例2.12】 break语句和continue语句的使用示例。 第1章 Java语言概述 public class LabeledWhile { public static void main(String[] args) { int i = 0; outer: while(true) { System.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; } if(i = = 7) { System.out.println ("break outer"); break outer; } } } } } 【例2.13】计算3、6和9的阶乘并输出结果。 public class TestFunction1{ public static void main(String[] args) { long z=1L; int x=1; for(x=3;x>0;x--) //该循环求3的阶乘 z*=x; System.out.println("3!="+z); //输出3的阶乘 for(x=6,z=1;x>0;x--) //该循环求6的阶乘 z*=x; System.out.println("6!="+z); //输出6的阶乘 for(x=9,z=1;x>0;x--) //该循环求9的阶乘 z*=x; System.out.println("9!="+z); //输出9的阶乘 } } 【例2.14】使用方法计算3、6和9的阶乘并输出结果。 public class TestFunction2{ //第一个方法是main方法,它3次调用了第二个方法 第1章 Java语言概述 public static void main(String[] args) { factorial(3); factorial(6); factorial(9); } //第二个方法是factorial方法,它求出参数n的阶乘并输出 static void factorial(int n) { long z=1L; int x=n; for( ;x>0;x--) //该循环求n的阶乘 z*=x; System.out.println(n+"!="+z);//输出n的阶乘 } } 【例2.15】方法的传递参数。 public class TestPara { static void test(boolean paratest) { paratest = !paratest; System.out.println("In test (boolean) : test = " + paratest); } public static void main(String[] args) { boolean test = true; System.out.println("Before test (boolean) : test = " + test); test(test); System.out.println("After test (boolean) : test = " + test); } } 【例2.16】使用递归方法计算3、4和5的阶乘。 public class TestFunction3{ public static void main(String[] args) { System.out.println("Factorial of 3 is " + fact(3)); System.out.println("Factorial of 4 is " + fact(4)); System.out.println("Factorial of 5 is " + fact(5)); } //递归方法,求出参数n的阶乘并返回阶乘值 static int fact(int n) { int result; if(n==1) return 1; result = fact(n-1) * n; return result; } } 【例2.17】使用间接递归方法,求斐波那契数列第n项。 public class TestF{ public static void main(String[] args) { int x1 = 1; 第1章 Java语言概述 int sum = 0; int n = 7; for (int i = 1; i <= n; i++) { x1 = func1(i); sum = sum + x1; } System.out.println("sum=" + sum); } static int func1(int a){ int b; b=func2(a); return b; } static int func2(int b) { if (b> 2) return (func1(b - 1) + func1(b - 2)); else return 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 calculateArea( ) { return pi*radius*radius; } } 【例3.2】 创建日期类Date并进行输出。 public class Date{ private int day; private int month; private int year; public void setDate(int d,int m,int y){ day=d; month=m; year=y; } public void printDate ( ){ System.out.println("今天是"+year+"年"+month+"月"+day+"日"); } public static void main(String [ ] args){ Date today=new Date ( ); today.setDate(12,3,2005); 第1章 Java语言概述 Date thisday; thisday=today; thisday.printDate( ); } } 【例3.3】设计类Number,测试对象间的赋值。 class Number{ int i; public static void main (String [ ] a){ Number n1=new Number( ); Number n2=new Number( ); n1.i=9; n2.i=47; System.out.println("n1.i="+n1.i+"\t\t"+"n2.i="+n2.i); n1=n2; System.out.println("n1.i="+n1.i+"\t\t"+"n2.i="+n2.i); n1.i=27; System.out.println("n1.i="+n1.i+"\t\t"+"n2.i="+n2.i); } } 【例3.4】测试成员变量修饰符的作用。 class FieldTest{ private int num=5; //私有作用域,本类可见 public int get( ){ //公共作用域 return num; // get 方法返回成员变量num的值 } } class Test{ public static void main(String [ ] args){ FieldTest ft=new FieldTest( ); int t=ft.get( ); //正确访问 //int s=ft.num; //不能访问FieldTest类中私有成员变量num System.out.println("t=" +t); //System.out.println(s); } } 【例3.5】定义类SaticTest,测试对实例成员和类成员的不同访问形式。 public class StaticTest{ static int i=1; int j=1; static void printStatic( ){ System.out.println("i="+i); //System.out.println("j="+j); //非法访问 } void print(){ System.out.println("i="+i); System.out.println("j="+j); 第1章 Java语言概述 } public static void main(String [ ] args){ StaticTest.printStatic( ); //StaticTest.print( ); //非法访问 StaticTest.i=2; //StaticTest.j=2; //非法访问 StaticTest st=new StaticTest( ); 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.println("i="+i); System.out.println("j="+j); } public static void main(String [ ] args){ StaticVar sv1=new StaticVar( ); sv1.i++; sv1.j++; sv1.print(); StaticVar sv2=new StaticVar( ); sv2.print(); } } 【例3.7】对例3.2中Date类进行修改,将定义日期的功能用构造函数来实现。 public class Date{ private int day; private int month; private int year; Date(int d,int m,int y) { //构造函数 day=d; month=m; year=y; } public void printDate( ) { System.out.println("今天是"+year+"年"+month+"月"+day+"日"); } public static void main(String [ ] args) { Date today=new Date(12,3,2005); today.printDate( ); Date anotherday=new Date(21,3,2005); anotherday.printDate( ); 第1章 Java语言概述 } } 【例3.8】设计类Person,用其创建对象,并对创建的对象个数计数。 public class Person{ private static int i; private String name; private int age; Person(String n,int a){ name=n; age=a; i++; speak(); } void speak(){ System.out.println("我是第"+i+"个人,名叫"+name+",年龄"+age+"岁"); } public static void main(String [ ] args){ Person p1=new Person("李大强",20); Person p2=new Person("张晓明",22); Person p3=new Person("王金宝",18); } } 【例3.9】 public class Swap{ public static void main(String args[]){ Integer a, b; a = new Integer(10); b = new Integer(50); System.out.println("before swap..."); System.out.println("a is " + a); System.out.println("b is " + b); swap(a, b); System.out.println("after swap..."); System.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; System.out.println("in swap..."); System.out.println("a is " + pa); System.out.println("b is " + pb); } } 【例3.10】 class TestObject{ 第1章 Java语言概述 private String name; public void setName(String pname){ name = pname; } public String getName(){ return name; } } public class Testit{ private void modify(TestObject ta,TestObject tb){ ta.setName("xyz"); tb.setName("uvw"); System.out.println("in test..."); System.out.println("ta.getName()=" + ta.getName()); System.out.println("tb.getName()=" + tb.getName()); } public static void main(String[] args){ TestObject ta = new TestObject(); TestObject tb = new TestObject(); Testit tc = new Testit(); ta.setName("abc"); tb.setName("def"); System.out.println("before test..."); System.out.println("ta.getName()=" + ta.getName()); System.out.println("tb.getName()=" + tb.getName()); tc.modify(ta, tb); System.out.println("after test..."); System.out.println("ta.getName()=" + ta.getName()); System.out.println("tb.getName()=" + tb.getName()); } } 【例3.11】对例3.2中Date类进行修改,用this实现对本类的引用。 public class Date{ private int day; private int month; private int year; public void setDate(int day,int month,int year){ this.day=day; this.month=month; this.year=year; } } 【例3.12】对例3.2中Date类进行修改,将对象作为自变量传送。 public class Date{ private int day,month,year; Date(int day,int month,int year){ setDate(day,month,year); printDate(this); } private void setDate(int day,int month,int year){ 第1章 Java语言概述 this.day=day; this.month=month; this.year=year; } private void printDate(Date 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】将HelloWorld程序放入自己定义的包myPackage中。 package myPackage; public class HelloWorld{ public static void main(String [ ] args){ System.out.print("Hello World!"); } } 【例3.14】将Date类放入包mypackage, 并用mypackage1包中的Test类实现该Date类。 package mypackage; public class Date{ private int day; private int month; private int year; public Date(int d,int m,int y){ day=d; month=m; year=y; } public void setDate(int d,int m,int y){ day=d; month=m; year=y; } public void printDate( ){ System.out.println("今天是"+year+"年"+month+"月"+day+"日"); } } // 以下程序是mypackage1包中的Test类。 package mypackage1; import mypackage.Date; public class Test{ public static void main(String [] args){ Date mydate=new Date(10,04,2005); mydate.printDate(); } } 第1章 Java语言概述 【例3.15】下面的例子演示了包的保护作用。 //A.java文件 package mypackage; public class A{ //公共作用域 int num; //包的作用域 public int get( ){return num;} //公共作用域 } //B.java文件 package anotherpackage; import mypackage.A; class B{ //包的作用域 A mya = new A ( ); //正确访问 void m( ){ int t= mya.get( ); //正确访问 int s = mya.num; //错误,num是包的作用域,不能访问 } } //程序的编译(javac -d . B.java)会出现如下错误: //B.java:8: num is not public in mypackage.A; cannot be accessed from outside package //int s = mya.num; //错误,num是包的作用域,不能访问 // ^ 【例3.16】设计一个电视机类,成员变量包括电视机编号、生产厂家、品牌名称、大小、开关状态,并可以对其进行相应操作,如打开电视、提高/降低音量、更换频道等。 电视机编号由生产日期和生产编号构成,如2005年4月12日生产的第一台电视的编号为2005041201,第二台为2005041202,该编号自动生成。将该类放入自己的包中,并进行测试。 package mypackage.tvset; //定义包mypackage.tvset import java.util.Date; //引入java.util.Date类,用于获得当前日期 public class TvSet{ private static int number; //电视机编号 private int tvnumber; private final String manufacturer="职业学院设备厂"; //生产厂家 private final String brandname="学院牌"; //电视机品牌名 private int size; //电视机尺寸 private String switchstate="关闭"; //电视开关状态 public TvSet (int size){ //构造函数 this.size=size; setNumber ( ); tvnumber=number; System.out.print("由"+manufacturer+"制造的"+brandname+size+"吋电视已被制造。"); System.out.println("该电视的编号为"+tvnumber); } private static void setNumber( ){ //设置电视机编号 第1章 Java语言概述 String datenumber; Date d=new Date( ); String day=Integer.toString(d.getDate( )); //获取当前日期 String month=(d.getMonth()<9)?"0"+Integer.toString(d.getMonth()+1):Integer.toString (d.getMonth( )+1); String year=Integer.toString(d.getYear ( )+1900); datenumber=year+month+day; number= (number==0)?Integer.parseInt(datenumber+"01"):number+1; //生成电视机编号 } public void openTv( ){ //打开电视 switchstate="打开"; System.out.println("电视已被打开"); } public void closeTv ( ){ //关闭电视 switchstate="关闭"; System.out.println("电视已被关闭"); } public void changeChannel (String s){ //更换频道 System.out.println("电视已被切换到"+s+"频道"); } public void heightenVolume ( ){ //增大音量 System.out.println("电视音量被提高"); } public void lowerVolume ( ){ //降低音量 System.out.println("电视音量被降低"); } public int getSize ( ){ //获取电视机尺寸 return size; } public String getSwitch ( ){ //获取电视机开关状态 return switchstate; } public int getTvnumber ( ){ //获取电视机编号 return tvnumber; } } class Test{ //运行测试 public static void main(String [ ] args){ TvSet tv1=new TvSet (24); TvSet tv2=new TvSet (29); TvSet tv3=new TvSet (34); tv1.openTv ( ); tv1.changeChannel ("CCTV5"); tv1.heightenVolume ( ); System.out.println ("tv1处于"+tv1.getSwitch ( )+"状态"); System.out.println ("tv2处于"+tv2.getSwitch ( )+"状态"); System.out.println ("tv2的大小为"+tv2.getSize ( )+"吋"); 第1章 Java语言概述 System.out.println ("tv2的编号为"+tv2.getTvnumber ( )); System.out.println ("tv3的编号为"+tv3.getTvnumber ( )); } } ============================================= 【例4.1】数据类型类的对象方法使用示例。 public class TestDataType1 { public static void main(String[] args) { //使用基本数据类型 double d = 0.7E-3; int i = 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=new Long(50000L); Character cc=new Character('a'); Float ff=new Float( 0.23F); Boolean bbool=new Boolean( true); //取得对象中的基本类型数据 double x=dd.doubleValue(); int y=ii.intValue(); System.out.println(x); System.out.println(y); System.out.println(bb.byteValue()); System.out.println(ss.shortValue()); System.out.println(ll.longValue()); System.out.println(cc.charValue()); System.out.println(ff.floatValue()); System.out.println(bbool.booleanValue()); //将基本数据类型类中的数值转换为字符串 System.out.println(ii.toString()); System.out.println(ff.toString()); System.out.println(dd.toString()); System.out.println(ll.toString()); System.out.println(ii); System.out.println(ff); //Integer si= new Integer("45"); //System.out.println(si.intValue()); } } 【例4.2】数据类型类的静态方法使用示例。 public class TestDataType2 { public static void main(String[] args) 第1章 Java语言概述 { //使用静态方法parseXxxx(String s) 把字符串转换为相应的基本数据类型 int pi= Integer.parseInt("1234"); float pf=Float.parseFloat("1234f"); double pd=Double.parseDouble("12.345"); long pl=Long.parseLong("123456789");//不加L byte pb=Byte.parseByte("45"); short ps=Short.parseShort("6789"); System.out.println(pi); System.out.println(pf); System.out.println(pd); System.out.println(pl); System.out.println(pb); System.out.println(ps); //使用静态方法valueOf(String s) 把字符串转化成相应的数据类型对象 Double td=Double.valueOf("1.234"); Integer ti=Integer.valueOf("456"); Byte tb=Byte.valueOf("120"); Short ts=Short.valueOf("500"); Long tl=Long.valueOf("12345678901"); Float tf=Float.valueOf("9.8765f"); Boolean tbool=Boolean.valueOf("true"); System.out.println(td);//系统会自动调用相应的toString()方法 System.out.println(ti); System.out.println(tb); System.out.println(ts); System.out.println(tl); System.out.println(tf); System.out.println(tbool); System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); System.out.println(Double.MAX_VALUE); System.out.println(Double.MIN_VALUE); } } 【例4.3】创建两个Double对象:一个是无穷,另一个是非数字。 class InforNaN{ public static void main(String[] args){ Double b=new Double(1/0.); Double d=new Double(0/0.); System.out.println(b+“:”+b.isInfinite()+”,”+b.isNaN()); System.out.println(d+“:”+d.isInfinite()+”,”+d.isNaN()); } } 【例4.4】编写一个应用程序,求 Fibonacci数列的前10个数。 Fibonacci数列的定义为:F1 = F2 = 1,当n>=3时,Fn = Fn-1 + Fn-2 。 public class Fibonacci 第1章 Java语言概述 { public static void main(String args[ ]) { int i; int f[ ]=new int[10]; f[0]=1; f[1]=1; //支持f[0]=f[1]=1的写法 for(i=2;i<10;i++) f[i]=f[i-1]+f[i-2]; for(i=1;i<=10;i++) System.out.println(" F[" +i+"]="+f[i-1]); } } 【例4.5】编写应用程序,声明一个整型数组并对它初始化,在屏幕上输出各元素的值和其总和。 public class intarray { public static void main(String args[ ]) { int a[ ]={1,2,3}; int i,sum=0; for(i=0;i0.9) { balance-=0.9; return true; } else return false; 第1章 Java语言概述 } } class IC_Card extends None_Number_PhoneCard { boolean performDial() { if (balance>0.5) { balance-=0.5; return true; } else return false; } } class IP_Card extends Number_PhoneCard { Date expireDate; boolean performDial() { if (balance>0.3 && expireDate.after(new Date())) { balance-=0.3; return true; } else return false; } } c1ass D200_Card extends Namber_PhoneCard { double additoryFee; boolean performDial() { if (balance>(0.5+additoryFee)) { balance-=(0.5+additoryFee); return true; } else return false; } } 【例5.6】 public class MethodOverride { public static void main(String [] args) { SubClass s=new SubClass(); s.fun(); 第1章 Java语言概述 } } class SuperClass { int i=1; public void fun() { System.out.println("Super"); System.out.println("父类的i=" + i); } } class SubClass extends SuperClass { int i=2; public void fun() { System.out.println("Sub"); System.out.println("子类的i=" + i); super.fun(); } } 【例5.7】 class A { public int a1; private float a2 int getA() { return(a1); } void setA(){} } class B extends A { int b1; String b2; String getB() { return(b2); } } class C extends B { int c; public int a1; int printC() { System.out.println(c); } } 第1章 Java语言概述 【例5.8】 public class ExtendsExam { public static void main(String [] args) { subclass e=new subclass(); System.out.println(" Sup_getX()方法结果:"+e. Sup_getX()); System.out.println(" Sub_getX()方法结果:"+e.Sub_getX()); } } class superclass { public int x=10; int Sup_getX() { 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 superClass{ void superPrint(){ System.out.println("This is subClass!"); } } public class myInherit{ public static void main(String args[]){ subClass subObject = new subClass(); subObject.superPrint(); //子类对象调用子类的方法 superClass superObject = new superClass(); superObject.superPrint(); //父类对象调用父类的方法 } } 【例5.10】 第1章 Java语言概述 public class ExtendsExam { public static void main(String [] args) { subclass e=new subclass(); e.Sub_printX(); } } class superclass { public int x=10; int Sup_getX() { return(x); } void Sup_printX() { System.out.println(“Sup_printX()方法结果:”+ Sup_getX()); } } class subclass extends superclass { private int x=20; int Sub_getX() { return(super.x); //修改部分 } void Sub_printX() { System.out.println(" Sub_getX()方法结果:"+Sup_getX()); super. Sup_printX(); } } 【例5.11】 public class OverloadExam { public static void print(String str) { System.out.println("String="+str); } public static void print(int i) { System.out.println("int="+i); } public static void main(String [] args) { print("123"); print(123); } } 第1章 Java语言概述 【例5.12】 public class OverloadExam{ public static void print(char c){ System.out.println("char="+c); } public static void print(short i){ System.out.println("short="+i); } public static void main(String [] args){ byte b=1; print(b); } } 【例5.13】 class Xyz { // member variables public Xyz() { // 无参数的构造函数 …… } public Xyz(int x) { //整形参数的构造函数 …… } } 【例5.14】 public class Employee { private String name; private int salary; public Employee(String n, int s) { name = n; salary = s; } public Employee(String n){ this(n, 0); } public Employee(){ this( " Unknown " ); } } 【例5.15】 abstract class fatherClass { 第1章 Java语言概述 abstract void abstractMethod(); void printMethod() { System.out.println("fatherClass function! "); } } class childClass extends fatherClass { void abstractMethod() { System.out.println("childClass function! "); } } public class mainClass { public static void main(String args[]) { childClass obj=new childClass(); obj. printMethod(); obj.abstractMethod(); } } 【例5.16】 public interface Sup_InterfaceExam { public static final int x; int y; public void z(); public abstract int getz(); } public interface Sub_InterfaceExam extends Sup_InterfaceExam { public static final int a; int b; public void c(); public abstract int getc(); } class MyClass implements Sub_InterfaceExam , Sup_InterfaceExam { public void z() { } public int getz() { return 1; } public void c() { } public int getc() 第1章 Java语言概述 { return 5; } } 【例5.17】 interface A{ int a=1; } interface B{ int b=2; public abstract void pp(); } interface MyInterface extends A,B{} //接口的继承 abstract class AbstractInterfaceExam implements A,B {} //抽象类实现接口 public class InterfaceExam implements A,B //一般类实现接口 { static InterfaceExam obj = new InterfaceExam(); public static void main(String [] args){ System.out.println("继承接口A中的a=" + obj.a); obj.pp(); } 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 s1 = "Hello,java!"; //声明一个字符串,然后为其赋值 String s2; s2 = "Hello,java!"; //使用String类的构造器中的一个。创建一个空字符串,然后赋值给它 String s3 = new String( ); s3 = "Hello,java!"; //将字符串直接传递给String类构造器来创建新的字符串 String s4 = new String("Hello,java!"); //使用String类的构造器中的一个。 //通过创建字符数组传递给String类构造器来创建新的字符串 char c1[ ] = { 'H', 'i', ',' , 'j', 'a', 'v', 'a'}; String s5 = new String(c1 ); //将字符数组子集传递给String类构造器来创建新的字符串 String s6 = new String(c1,0,2 ); System.out.println(s1); System.out.println(s2); 第1章 Java语言概述 System.out.println(s3); System.out.println(s4); System.out.println(s5); System.out.println(s6); } } 【例6.2】 比较字符串。 public class StrCompare { public static void main(String[] args) { String s1="aaaa"; String s2="aaaa"; String s3="AAAA"; String s4="bcd"; if (s1.equals(s2)) { System.out.println("s1==s2"); } else { System.out.println("s1!=s2"); } if (s1.equalsIgnoreCase(s3)) { System.out.println(" s1= =s3 when ignoring case"); } else { System.out.println(" s1!=s3 when ignoring case"); } if (s1.regionMatches(true,0,s3,1,3)) { System.out.println(" s1= =s3 when ignoring case"); } else { System.out.println(" s1!=s3 when ignoring case"); } if (s1.regionMatches(false,0,s3,1,3)) { System.out.println(" s1= =s3 when not ignoring case"); } else { System.out.println("s1!=s3 when not ignoring case"); } if (s1.compareTo(s4)<0) { System.out.println(" s1s4"); } } } 【例6.3】求指定字符串的长度。 public class StrLength 第1章 Java语言概述 { public static void main(String[] args) { String s1="Hello,Java!"; int i=s1.length(); System.out.println("字符串s1长度为"+i); } } 【例6.4】使用+和concat方法创建同一个字符串。 public class StrConcat { public static void main(String[] args) { String s1="Hello"; String s2=s1+","; String s3=s2.concat(" Java");! String s4=new String(" ! "); String s5=s3.concat(s4); System.out.println(" 连接而成的字符串是"+s5); } } 【例6.5】复制字符串。 public class StrCopy { public static void main(String[] args) { String s1=new String( ); char data[ ]={ 'a', 'b', 'c', 'd', 'e', 'f'}; s1=s1.copyValueOf(data); System.out.println(" s1="+s1); s1=s1.copyValueOf(data,2,3); System.out.println(" s1="+s1); s1.getChars(1,2, data,0); System.out.println(" data="+new String(data)); data=s1. toCharArray( ); System.out.println(" data="+new String(data)); String s2=new String( ); String s3=new String( ); s2=s1.substring(0); System.out.println(" s2="+s2); s3= s1.substring(1,2); System.out.println(" s3="+s3); } } // s1=abcdef // s1=cde // data=dbcdef // data=cde // s2=cde // s3=d 【例6.6】查找字符和子串。 public class StrSearch { public static void main(String[] args) { String s1="Javav"; char c=s1.charAt(2); 第1章 Java语言概述 System.out.println("c="+c); int i=s1.indexOf('a'); System.out.println("fistchar="+i); int j=s1.lastIndexOf('a'); System.out.println("lastchar="+j); i= s1.indexOf("av"); System.out.println("fiststring="+i); j=s1.lastIndexOf("av"); System.out.println("laststring="+j); } } 【例6.7】修改字符串。 public class StrModify { public static void main(String[] args) { String s1=" Java"; s1=s1.replace('a', 'b'); System.out.println("s1="+s1); String s2=s1.toLowerCase( ); String s3=s1. toUpperCase ( ); System.out.println("s2="+s2); System.out.println("s3="+s3); s2= s1.trim( ); System.out.println("s2="+s2); } } 【例6.8】用多种方法创建StringBuffer对象。 public class StrBufferSet { public static void main(String[] args) { StringBuffer s1=new StringBuffer( ); s1.append("Hello,Java!"); System.out.println("s1=" +s1); StringBuffer s2=new StringBuffer(10 ); S2.insert(0, "Hello,Java!"); System.out.println("s2="+s2); StringBuffer s3=new StringBuffer("Hello,Java!"); System.out.println("s3="+s3); } } 【例6.9】显示确定字符串的长度和容量,并改变字符串的长度。 public class StrLen { public static void main(String[] args) { StringBuffer s1=new StringBuffer("Hello,Java!"); System.out.println("The length is"+s1.length( )); System.out.println("The allocated length is"+s1.capacity( )); s1.setlength(100); System.out.println("The new length is"+s1.length( )); 第1章 Java语言概述 } } 【例6.10】改变字符串的内容。 public class StrChange { public static void main(String[] args) { StringBuffer s1=new StringBuffer("Hallo,Java!"); s1.setCharAt(1, 'e'); System.out.println(s1); s1.replace(1,5, "i"); System.out.println(s1); s1.delete(0,3); System.out.println(s1); s1.deleteCharAt(4); System.out.println(s1); } } 【例6.11】用arraycopy()方法复制两个数组。 class CopyArray { static byte array1[ ]={97,98,99,100,101}; static byte array2[ ]={102,102,102,102,102}; public static void main(String[] args) { System.out.println(" array1="+new String(array1)); System.out.println(" array2="+new String(array2)); System.arraycopy(array1,0,array2,0,array1.length); System.out.println(" array1="+new String(array1)); System.out.println(" array2="+new String(array2)); System.arraycopy(array1,0,array1,1,array1.length-1); System.arraycopy(array2,1,array2,0,array2.length-1); System.out.println(" array1="+new String(array1)); System.out.println(" array2="+new String(array2)); } } 【例6.12】 使用Vector类的示例。 import java.util.*; class VectorTest{ public static void main(String[] args){ Vector vec=new Vector(3); System.out.println(" old capacity is"+vec.capacity()); vec.addElement(new Integer(1)); vec.addElement(new Integer(2)); vec.addElement(new Integer(3)); vec.addElement(new Float(2.78)); vec.addElement(new Double(2.78)); System.out.println(" new capacity is"+vec.capacity()); System.out.println(" new size is"+vec.size()); System.out.println(" first item is"+vec.firstElement()); 第1章 Java语言概述 System.out.println(" last item is"+vec.lastElement()); if(vec. contains(new Integer(2))) System.out.println(" found 2"); vec. removeElementAt(1); if(vec.contains(new Integer(2))) System.out.println(" found 2"); else System.out.println(" after deleting not found 2"); } } 【例6.13】向堆栈中添加元素并弹出。 import java.util.*; class StackTest{ public static void main(String[] args){ Stack stack1=new Stack(); //构造一个空堆栈stack1 try { stack1.push(new Integer(0)); stack1.push(new Integer(1)); stack1.push(new Integer(2)); stack1.push(new Integer(3)); stack1.push(new Integer(4)); System.out.println((Integer)stack1.pop()); System.out.println((Integer)stack1.pop()); System.out.println((Integer)stack1.pop()); System.out.println((Integer)stack1.pop()); System.out.println((Integer)stack1.pop()); } catch(EmptyStackException e){ } } } 【例6.14】用Hashtable来检验随机数的随机性。 import java.util.*; class Counter { int i = 1; public String toString() { 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 Integer((int)(Math.random() * 20)); if(ht.containsKey(r)) ((Counter)ht.get(r)).i++; else ht.put(r, new Counter()); } 第1章 Java语言概述 System.out.println(ht); } } ========================================================== 【例7.1】没有使用异常处理的情况。 public class ExceptionExam { public static void main(String [] args) { int i=0; i=3/i; } } 【例7.2】使用try/catch进行异常处理的情况。 public classExceptionExam0 {   public static void main(String args[]) {     int i,a;   try { // 监视一代码块       i=0;    a=42/i; return;     } catch (ArithmeticException e) { //捕获一个被零除异常 System.out.println("被零除"); }   } } 【例7.3】嵌套try语句的示例。 public class ExceptionExam2 { public static void main(String args[]) { int data1[]={2,4,6,8,10,12}; int data2[]={1,0,2,4,3}; try { for(int i=0;i"; } } public class ExceptionExam7 { 第1章 Java语言概述 static void caculate(int a) throws ExceptionExam7_1 { System.out.println("对["+ a +"]已经进行过相应的操作"); if(a>100) throw new ExceptionExam7_1 (a); System.out.println("执行该算法正常退出!"); } public static void main(String args[]) { try { caculate(1); caculate(1000); } catch (ExceptionExam7_1 e) { System.out.println("捕获了异常" + e); } } } ========================================================= 【例8.1】使用File类管理文件和目录。 import java.io.*; import java.util.Date; public class filetest { public static void main(String []args) { String filename="d:\\javapj\\ex.java"; File myfile=new File(filename); if(!myfile.exists() ) { System.err.println(filename+"未找到!"); return; } if( myfile.isDirectory() ) { System.err.println("文件对象"+myfile.getName()+"是目录!"); File ds=new File("mydata"); if(!ds.exists()) { ds.mkdir(); System.out.println("目录"+ds.getAbsolutePath()+"创建结束!"); } return; } if(myfile.isFile()) { System.out.println("文件对象:"+myfile.getAbsolutePath()); System.out.println("文件字节数:"+myfile.length()); 第1章 Java语言概述 System.out.println("文件是否能读:"+myfile.canRead()); if(myfile.canWrite()) { System.out.println("设置文件为只读:"+myfile.setReadOnly()); } System.out.println("文件是否可写:"+myfile.canWrite()); Date fd=new Date(myfile.lastModified()); System.out.println("文件上次修改时间:"+fd.toString()); } } } 【例8.2】 编写程序,接收用户从键盘输入的数据,回车后保存到文件test.txt中。若用户输入符号#,则退出程序。 import java.io.*; public class WriteFile{ public static void main(String args[]) { byte buffer[]=new byte[128]; System.out.println("请输入数据,回车后保存到文件test.txt"); System.out.println("输入 # 则退出!"); try{ FileOutputStream f=new FileOutputStream("test.txt"); while(true){ int n=System.in.read(buffer); if(buffer[0]=='#' ) break; f.write(buffer,0,n-1); f.write('\n'); } f.close(); }catch(IOException e) { System.out.println(e.toString()); } } } 【例8.3】 使用FileInputStream类与FileOutputStream类复制文件。 import java.io.*; class ReadWriteFile{ public static void main(String[] args) { String file1,file2 ; int ch = 0 ; file1 = "readme.txt" ; file2="readme.bak"; try { FileInputStream fis = new FileInputStream(file1); FileOutputStream fos=new FileOutputStream(file2); int size=fis.available(); System.out.println("字节有效数:"+size); while ((ch=fis.read())!=-1){ 第1章 Java语言概述 System.out.write(ch); fos.write(ch); } fis.close(); fos.close(); } catch (IOException e){ System.out.println(e.toString()); } } } 【例8.4】 使用DataInputStream类和DataOutputStream类读写格式文件。 import java.io.*; public class fdsRW{ public static void main(String[] args){ String file="student.dat"; Student s1=new Student(); Student s2=new Student(10,"张飞",16,'A',true); try{ FileOutputStream fo=new FileOutputStream(file); //创建文件输出流对象 DataOutputStream out=new DataOutputStream(fo); //创建数据输出流对象 out.writeInt(s1.sno); //写文件 out.writeUTF(s1.name); out.writeInt(s1.age); out.writeChar(s1.grade); out.writeBoolean(s1.sex); out.writeInt(s2.sno); out.writeUTF(s2.name); out.writeInt(s2.age); out.writeChar(s2.grade); out.writeBoolean(s2.sex); out.close(); //关闭数据输出流 fo.close(); //关闭文件输出流 System.out.println("文件:"+file+"创建完毕!"); System.out.println("开始读取文件内容:"); FileInputStream fi=new FileInputStream(file); //创建文件输入流对象 DataInputStream in=new DataInputStream(fi); //创建数据输入流对象 for(int i=1;i<=2;i++){ //读取文件内容 int sno=in.readInt(); String sname=in.readUTF(); int age=in.readInt(); char grade=in.readChar(); boolean sex=in.readBoolean(); System.out.println(sno+"\t"+sname+"\t"+age+"\t"+grade+"\t"+sex); } in.close(); 第1章 Java语言概述 fi.close(); }catch(IOException e){ System.out.println(e.toString()); } } } class Student{ int sno; String name; int age; char grade; boolean sex; public Student(){ this.sno=0; this.name="未知"; this.age=0; this.grade='C'; this.sex=true; } public Student(int sno,String name,int age,char grade,boolean sex){ if(sno>0) this.sno=sno; this.name=name; this.age=age; this.grade=grade; this.sex=sex; } } 【例8.5】 随机读取文件中的字符信息。 import java.io.*; public class Readtext { public static void main(String[] args) { String str1; char ch1; int n; try{ File mytxt=new File("read.txt"); RandomAccessFile ra=new RandomAccessFile(mytxt,"rw"); ra.write("This is the first sentence".getBytes()); ra.writeChar('\n'); ra.write("Java Program Design".getBytes()); ra.writeChar('\n'); ra.seek(0); str1=ra.readLine(); System.out.println(str1); ra.seek(18); System.out.println(ra.readLine()); ra.close(); } catch(IOException e) { 第1章 Java语言概述 System.out.println(e.toString()); } } } 【例8.6】 利用RandomAccessFile实现记录式访问。 import java.io.*; public class RaFile { public static void main(String[] args) { Student s[]=new Student[4]; s[0]=new Student("zhangsan",17,false); s[1]=new Student("lisi",18,true); s[2]=new Student("wangwu",20,true); s[3]=new Student("zhaoliu",19,false); try{ RandomAccessFile ra=new RandomAccessFile("student.dat","rw"); for(int i=0;i<4;i++) //将4个学生信息写入文件 { ra.writeBytes(s[i].name); //将字符串按字节写入 ra.writeInt(s[i].age); ra.writeBoolean(s[i].sex); } System.out.println("随机文件字节数:"+ra.length()); ra.seek(0); //文件指针指向开始位置 System.out.println("第一条学生记录:"); byte b[]=new byte[8]; ra.read(b); int age=ra.readInt(); boolean sex=ra.readBoolean(); System.out.println(new String(b)+"\t"+age+'\t'+sex); ra.skipBytes(26); //访问第四个记录 System.out.println("移动后指针位置:"+ra.getFilePointer()); ra.read(b); age=ra.readInt(); sex=ra.readBoolean(); System.out.println(new String(b)+"\t"+age+'\t'+sex); ra.close(); } catch(IOException e){ System.out.println(e.toString()); } } } class Student{ //学生类的定义 String name; int age; boolean sex; final static int LEN=8; Student(String name,int age,boolean sex){ 第1章 Java语言概述 if(name.length()>LEN){ name = name.substring(0,8); //超过8个字符时,取前8个 } else{ while(name.length()和之内的参数和属性设置。 Example Applet This program requires a Java-enabled browser, if not, the Applet cannot be viewed. 第1章 Java语言概述 【例9.3】 用输出相应字符串的方法,指示出Applet生命周期中init()、start()、stop()、destroy()方法的执行时间。 import java.awt.*; import java.applet.*; public class AppletLifeCycle extends Applet { String status = ""; //成员变量 public void init() //创建时调用此方法 { status += "Call init() ->"; } public void start() //启动时调用此方法 { status+="Call start() ->"; } public void stop() //停止时调用此方法 { status+="Call stop() ->"; } public void destroy() //退出时调用此方法 { status+="Call destory() ->"; } public void paint(Graphics g) //被repaint()调用的方法 { g.drawString(status,20,40); //绘制字符串 } } 【例9.4】把HTML文件中设置的两组数据(“Yaoming”,30)和(“Shark”,40)传递给Applet,并在Applet界面中显示。 HTML文件设计如下: Applet Parameter Setting 第1章 Java语言概述 与此相应地,Java Applet程序AppletParameter.java设计如下: import java.awt.*; import java.applet.*; public class AppletParameters extends Applet { String score1, score2; String message1, message2; int s1, s2; public void init() //启动浏览器时调用 { score1 = getParameter("Yaoming"); //取得Applet所嵌入的HTML文件的参数Yaoming的数值 score2 = getParameter("Shark"); //取得Applet所嵌入的HTML文件的参数Shark的数值 s1= Integer.parseInt(score1); //将字符串score1转换成整数 s2= Integer.parseInt(score2); //将字符串score2转换成整数 message1 = "Yaoming scores is:"+score1; //构造字符串message1 message2 = "Shark scores is:"+score2; //构造字符串message2 } public void paint(Graphics g) { g.drawString(message1,20,40); //在(20,40)位置绘制message1 g.drawString(message2,20,55); //在(20,55)位置绘制message2 g.fillRect(150,35,s1,10); //在(150,35)位置绘制宽为s1、高为10的实心矩形 g.fillRect(150,50,s2,10); //在(150,50)位置绘制宽为s2、高为10的实心矩形 } } 【例9.5】 显示图像文件。 //Picture.java package firstapplet; import java.awt.*; import java.applet.*; public class Picture extends Applet { Image mycar; //Construct the applet public Picture(){ } //Initialize the applet public void init() { setBackground(Color.red ); mycar =getImage(getCodeBase(),"car.jpg"); } //draw the image public void paint(Graphics screen){ screen.drawImage(mycar,10,10,this); } } 第1章 Java语言概述 【例9.6】 将声音作为背景音乐播放。 // AUSound package firstapplet; import java.awt.*; import java.applet.*; public class AUSound extends Applet { AudioClip audioClip; //Construct the applet public AUSound() { } //Initialize the applet public void init() { audioClip=getAudioClip(getCodeBase(),"backSound.au"); //只播放一遍 //audioClip.play(); //循环播放 audioClip.loop() ; } //Stop public void stop(){ audioClip.stop(); } //paint public void paint(Graphics screen){ screen.setColor(Color.green ); screen.fillRect(0,0,200,100); screen.setColor(Color.red ); screen.drawString("Playing sounds...",40,50); } } 【例9.7】综合案例:实现动画显示并配有背景音乐。 程序清单: // Animation.java package firstapplet; import java.awt.*; import java.awt.event.*; import java.applet.*; public class Animation extends Applet implements Runnable{ private int totalImages=3;//total number of images private Image images[];//an array of images private int width; private int height; private Graphics g;//绘图区域 private Thread runner;//动画线程 private AudioClip sound;//背景音乐 //applet 初始化 public void init(){ 第1章 Java语言概述 images=new Image[totalImages]; MediaTracker mt=new MediaTracker(this); for(int i=0;i

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档