一、实验目的:
了解 Java 中包(package)和接口(interface)的作用,掌握包和接口的设计方法。掌握Math类,String类和StringBuffer类的使用。
二、实验环境:
Windows7平台下的eclipse。
三、实验内容:
(一) 创建并使用自定义包
源代码如下:
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() {
returnCalendar.getInstance().get(Calendar.YEAR);//返回当年的年份
}
public int year() {
return year;//返回年份
}
public String toString(){
returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日
}
}
编写 KY6_2.java 程序:
import Mypackage.KY6_1; //引用 Mypackage 包中的KY6_1 类
public classKY6_2
{
privateString name;
privateKY6_1 birth;
public static void main(Stringargs[])
{
KY6_2 a = new KY6_2("张驰",1990,1,11);
a.output();
}
publicKY6_2 (String n1, int y, int m, int d)
{ //初始化变量与对象
name= n1;
birth = new KY6_1(y, m, d);
}
publicint age() //计算年龄
{
return birth.year() - KY6_1.thisyear(); //返回当前年与出生年的差即年龄
}
publicvoid output()
{
System.out.println("姓名 :"+name);
System.out.println("出生日期:"+birth.toString());
System.out.println("今年年龄 : "+age());
}
}
有问题。returnbirth.year() - KY6_1.thisyear(); 这条语句中的减数和被减数相反了。
(二) 使用接口技术
接口:
public interfacejiafa {
double add(double a,double b);
}
public interfacejianfa {
double jianfa(double a,double b);
}
主函数:
public classKY6_3 implements jiafa,jianfa{
public double jianfa(doublea, double b) {
return a-b;
}
public double add(doublea, double b) {
return a+b;
}
public staticvoid main(String args[]) {
KY6_3 a =new KY6_3();
System.out.println("加法的结果是:"+a.add(50, 60));
System.out.println("减法的结果是:"+a.jianfa(80, 20));
}
}
代码运行的结果是:
(三) Math类的使用
源代码如下:
public class KY6_4 {
public static void main(String args[]) {
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类的使用
源代码如下:
public class KY6_4 {
public static void main(String args[]) {
String s=new String("This is an demoof the String method.");
System.out.println("Length:"+s.length());
System.out.println("SubString:"+s.substring(11,15));
StringBuffersf=new StringBuffer("Hello World!");
sf.append(" Hello Java!");
sf.insert(12," And");
System.out.println(sf);
System.out.println(sf.charAt(0));
sf.setCharAt(0,'h');
System.out.println(sf.charAt(0));
System.out.println(sf);
}
}
思考题:
1. 算术运算应该使用什么类?
Math类
2. Java语言中如何表示字符串?
字符串可以是字母数字和特殊的字符表示,在java里面则要用双引号才能在java里面表示出来,否则就会有错误。
四、心得体会:
感觉实验并不难,考察的是我们的动手和稍微的一点思考的能力,其中在定义接口的时候,接口定义的变量个人感觉要初始化,不然会出现错误。在使用math类感觉挺有用的,因为不用去定义很多东西,执行math类就可以实现很多的算数的功能了。其他就没啥了.