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

一、实验目的:

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

二、实验环境:

1. 了解 Java 系统包的结构,创建并使用自定义包。

2. 掌握接口定义与使用。

3. 掌握Math类的使用。

4. 掌握String类和StringBuffer类的使用

 

三、实验内容

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

1.自定义包的声明方式

        <package>  <自定义包名>

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

2.创建自定义包 Mypackage

在存放源程序的文件夹中建立一个子文件夹 Mypackage。例如,在“D:\java\javacode”文件夹之中创建一个与包同名的子文件夹 MypackageD:\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 (int y,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(){

                return year+"-"+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 (String n1, int y, int m, int d)

        {    //初始化变量与对象

name = n1;

            birth = new KY6_1(y, m, d);

        }

        public int age()                                   //计算年龄

        {

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

        }

        public void output()

        {

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

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

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

        }

    }

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

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

 

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

有问题,问题就是年龄为负数,将return KY6_1.thisyear()-birth.year() ;改为return KY6_1.thisyear()-birth.year();

(二)使用接口技术

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

public class KY6_3 {

interface K1{

public int add(int a,int b);

}

interface K2{

public int sub(int a,int b);

}

class SUM implements K1{

public int add(int a,int b){

return a+b;

}

class JIAN implements K2{

public int sub(int a,int b){

return a-b;

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

SUM n=new SUM();

JIAN m=new JIAN();

System.out.println("8与9的求和结果为:"+n.add(89));

System.out.println("8与9的相减结果为:"+m.sub(8,9));

}

}

 

 

(三)Math类的使用 

 1.利用下面的关键代码编写一个完整的程序KY6_4.java,理解Math类的使用。

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

public class KY6_4 {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println (Math.abs (-5.8));

System.out.println (Math.ceil (3.2));

System.out.println (Math.floor (3.8));

System.out.println (Math.round (3.8));

System.out.println (Math.round (3.2));

System.out.println (Math.min (3, 2));

System.out.println (Math.max (Math.PI, 4));

System.out.println (Math.log (7.0));

System.out.println (Math.pow (7,2));

System.out.println (Math.exp (0.4));

System.out.println ("e is:"+ Math.E);

System.out.println ("π is:"+Math.PI);

System.out.println(Math.random());

}

} 

 

(四)String与StringBuffer类的使用

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

public static void main(String[] args) {

// TODO Auto-generated method stub

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

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

 System.out.println("SubString: "+s.substring(11,15)//返回以上字符串中第12-15个字符

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

 sf.append(" Hello Java!");//追加字符串Hello Java到字符串末尾

 sf.insert(12," And");//在字符串第12位置插入And

 System.out.println(sf);

 System.out.println(sf.charAt(0));

 sf.setCharAt(0, 'h');

 System.out.println(sf.charAt(0));//获得指定位置的字符,即索引号为0的字符

 System.out.println(sf);//重置索引号为0处的字符

     

}

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

 

 

 

四、心得体会:

 1.构造函数和init()方法谁先被执行?

构造方法是容器实例化selevlet 用的,init其实是构造方法调用的,
简单说,先构造方法,然后init方法
除非init()是静态的,不需构造函数作一些初始化


算术运算应该使用什么类

Java.math.*类中:

Math.sqrt() : 计算平方根

Math.cbrt() : 计算立方根

Math.pow(a, b) : 计算ab次方

Math.max( , ) : 计算最大值

Math.min( , ) : 计算最小值

Math.abs() : 取绝对值

Math.ceil(): 天花板的意思,就是逢余进一

Math.floor() : 地板的意思,就是逢余舍一

Math.rint(): 四舍五入,返回double值。注意.5的时候会取偶数

Math.round(): 四舍五入,float时返回int值,double时返回long

Math.random(): 取得一个[0, 1)范围内的随机数

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

使用字符串有两个步骤:

1)定义并初始化字符串。

2)使用字符串对字符串进行一些处理。

//创建一个字符串对象“Hello World”

1.String s=”Hello World”;

2.Stirng s2=new String(“Hello World”);

有关字符串String的基本方法

1获取字符串长度    s.length();

2检查是否为空(无内容)  boolean b=s.isEmpty();

注意字符串的empty无内容和空的String s=null;的区别,前者表示有对象没有内容,后者无对象。

字符串比较

 String a ="abc";   

 String b="abc";

 boolean r=a.equals(b);     

3将字符串转为大写

 a.toUpperCase();

4将字符串转为小写

 a.toLowerCase();

5忽略大小写比较

 a.equalsIgnoreCase();

String str3=”abc”;

6获取某个位置的字符,下标从0开始

char a= str3.toCharAt(3);

如果下标大于字符串长度-1则会出现下标越界异常StringIndexOutOfBoundsException

7字符串拼接

可以使用+多个字符或者使用字符串的concat方法

8查询字符串的位置

str.indexOf(s);//参数为要查询的字符,结果从0开始查询出第一次遇到的字符下标,如果没有找到返回-1

str.indexOf(s.startIndex);//第二个参数起表示起始位子

9字符串截取

str.subString(1,3);//前包括后不包括

str.subString(3);//表示从当前位置开始截取到末尾

StringBuffer/StringBuilder

StringBuffer sc=new StringBuffer(“Hello”);

1添加内容(添加到同一段内容中)

sc.append(“abc”).append(true).append(123);

2转为字符串

String s=sc.toString();

3删除内容

sc.delete(sc.length()-3,sc.length());

4插入内容

sc.insert(8,”,”);

5翻转

sc.reverse(); 

猜你喜欢

转载自blog.csdn.net/hml666888/article/details/80847659