包与接口以及常用工具类的使用

 

一、实验目的:

了解 Java 中包(package)和接口(interface)的作用,掌握包和接口的设计方法。掌握Math类,String类和StringBuffer类的使用。

二、实验环境:

eclipse

三、实验内容:

(一)创建并使用自定义包

1.自定义包的声明方式

         <自定义包名>

    声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。

2.创建自定义包 Mypackage

在存放源程序的文件夹中建立一个子文件夹 Mypackage。例如,在“D:\java\javacode”文件夹之中创建一个与包同名的子文件夹 Mypackage(D:\java\javacode\Mypackage),并将编译过的 class 文件放入到该文件夹中。 注意:包名与文件夹名大小写要一致。

3.在包中创建类

1)       编写程序KY6_1.java,在源程序中,首先声明使用的包名 Mypackage,然后创建KY6_1类,该类具有计算今年的年份,可以输出一个带有年月日的字符串的功能。

2)       源代码如下。  

 package Mypackage;                    //声明存放类的包

   import java.util.*;                          //引用 java.util 包

   public class KY6_1 {   

       private int year,month,day;

       public static void main(String[] args){}

       public KY6_1 (inty,int m,int d) {

            year = y;

           month = (((m>=1) & (m<=12)) ? m : 1);  

           day = (((d>=1) & (d<=31)) ? d : 1);

       }     

       public static int thisyear() {

            return Calendar.getInstance().get(Calendar.YEAR);//返回当年的年份

       }

       public int year() {

           return year;//返回年份

       }

       public String toString(){

                returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日

       }

      }

3)       编译KY6_1.java 文件,然后将KY6_1.class 文件存放到 Mypackage 文件夹中(D:\java\javacode\Mypackage)。注意:先不运行程序KY6_1.class!

      4.编写一个需要使用到包 Mypackage 中的KY6_1 类的程序KY6_2.java。

1)       编写 KY6_2.java 程序:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用了KY6_1 的方法来计算年龄。

2)       源代码如下。 

 import Mypackage.KY6_1; //引用 Mypackage 包中的KY6_1 类

  public class KY6_2  

  {

        private String name;

        private KY6_1 birth;

             public static void main(String args[])

        {

            KY6_2 a = new KY6_2("张驰",1990,1,11);

            a.output();

        }

        public KY6_2 (Stringn1, int y, int m, int d)

        {                          //初始化变量与对象

                     name = n1;

            birth = newKY6_1(y, m, d);

        }

        public int age()                                   //计算年龄

        {

            returnbirth.year() - KY6_1.thisyear(); //返回当前年与出生年的差即年龄

        }

        public void output()

        {

            System.out.println("姓名 : "+name);

           System.out.println("出生日期: "+birth.toString());

           System.out.println("今年年龄 : "+age());

        }

    }

3)       编译KY6_2.java 程序并运行程序KY6_2.java

4)       在实验报告中写出该程序的运行结果。

运行结果:姓名 : 张驰

出生日期: 1990-1-11

今年年龄 : -28

5)       程序运行的结果有没有问题?问题出在哪里?请在实验报告中指出。

答:运行结果有问题,今年年龄为负数。问题出在:return birth.year() - KY6_1.thisyear(); //返回当前年与出生年的差即年龄 。返回的结果是给定的1990减去当前真实年份,所以结果为负。

应当改为:return KY6_1.thisyear() - birth.year();

 

(二)使用接口技术

定义两个接口,其中各包括一个抽象方法分别用来完成两个数的加法和减法操作,然后创建一个类KY6_3来实现这两个接口中的抽象方法。编写程序KY6_3.java,将源程序写在实验报告中。

Count.java源代码:

package 实验六;

interface SumCount{     //定义加法接口

              intsum(int m,int n);                     //定义两个数的加法函数

       }

interface MinusCount {         //定义减法接口

       intminus(int m,int n);           //定义两个数的减法

}

KY6_3.java源代码:

package 实验六;

public class KY6_3 implements SumCount,MinusCount {         //实现接口

    public intsum(int m,int n) {       //重写加法函数方法

        returnm+n;         //返回两个数的和

    }

    public intminus(int m, int n) {        //重写减法函数的方法

        returnm-n;     //返回两个数的减法

    }

    publicstatic void main(String[] args) {

        KY6_3count=new KY6_3();        //定义一个计算对象

        System.out.println(count.sum(15,8));       //调用方法计算两个数的和,并输出

        System.out.println(count.minus(19,28));        //调用方法计算两个数的差,并输出

    }

}运行结果:

23

-9

(三)Math类的使用

 1.利用下面的关键代码编写一个完整的程序KY6_4.java,理解Math类的使用。
System.out.println (Math.abs(-5.8));          //方法abs返回-5.8的绝对值

         System.out.println(Math.ceil (3.2));          //方法ceil返回大于3.2的最小整数,并将该整数转化为double型数据

         System.out.println(Math.floor (3.8));        //方法floor返回小于3.8的最大整数,并将该整数转化为double型数据    

         System.out.println(Math.round (3.8));     //方法round返回3.8的四舍五入的值      

         System.out.println(Math.round (3.2));      //方法round返回3.2的四舍五入的值  

         System.out.println(Math.min (3, 2));        //方法min返回3和2之间最小值  

         System.out.println(Math.max (Math.PI, 4));    //方法max返回π和4之间色最大值   

         System.out.println(Math.log (7.0));        //方法log返回7.0的对数,底数是e

         System.out.println(Math.pow (7,2));        //方法pow返回7的2次方      

         System.out.println(Math.exp (0.4));        //方法exp返回欧拉数 e 的0.4次幂的值      

         System.out.println("e is:"+ Math.E);       //方法 Math.E返回欧拉数e的值 

         System.out.println("π is:"+Math.PI);       //方法Math.PI返回圆周率π的值 

      System.out.println(Math.random());        //返回带正号的 double 型的随机数,该值大于等于 0.0 且小于 1.0
 2.将程序的运行结果写在实验报告中。

运行结果:

5.8

4.0

3.0

4

3

2

4.0

1.9459101490553132

49.0

1.4918246976412703

e is:2.718281828459045

π is:3.141592653589793

0.525832983976047

 

(四)String类与StringBuffer类的使用 1.利用下面的关键代码编写一个完整的程序KY6_5.java,理解String类与StringBuffer类的使用。
       

 package 实验六;

public class KY6_5 {

    public static void main(String[]args) {

        // TODO Auto-generated methodstub

         Strings=new String("This is an demo of the String method.");

           System.out.println("Length:"+s.length());      //方法length()返回此字符串的长度

           System.out.println("SubString: "+s.substring(11,15));//返回一个新字符串,它是此字符串的一个子字符串,从11的位置到15

          StringBuffersf=new StringBuffer("Hello World!");

           sf.append(" Hello Java!");          //将指定的字符串追加到此字符序列

           sf.insert(12," And");       //将字符串插入此字符序列中,在第12的位置插入And

           System.out.println(sf);

           System.out.println(sf.charAt(0));  //返回此序列中指定索引处的 char 值H

           sf.setCharAt(0,'h');        // 将给定索引处的字符设置为 h

           System.out.println(sf.charAt(0));  //返回此序列中指定索引处的 char 值h

           System.out.println(sf);

    }

}


 2.将程序的运行结果写在实验报告中。

运行结果:

Length: 37

SubString: demo

Hello World! And Hello Java!

H

h

hello World! And Hello Java!

四、思考题

1.    算术运算应该使用什么类?

答:加、减、乘、除不需要用类。直接用符号就行了。如果是比较大的数进行算术运算,可以使用java.math.BigInteger和java.math.BigDecimal,前者是进行整数的大数操作的,后者是进行小数的大数操作的。详细用法请参考API文档

2.    Java语言中如何表示字符串?

答:使用String类或StringBuffer类,结合相应的方法对字符串进行相关的操作。详细用法请参考API文档

你可能感兴趣的:(包与接口以及常用工具类的使用)