一、实验目的:
了解 Java 中包(package)和接口(interface)的作用,掌握包和接口的设计方法。掌握Math类,String类和StringBuffer类的使用。
二、实验环境:
一台配置有java环境,装有eclipse的电脑。
三、实验内容:
(写出主要的内容)
(一)
1. 了解 Java 系统包的结构,创建并使用自定义包。
2. 掌握接口的定义与使用。
3. 掌握Math类的使用。
4. 掌握String类和StringBuffer类的使用
)创建并使用自定义包
1.自定义包的声明方式
自定义包名>
声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。
2.创建自定义包 Mypackage
在存放源程序的文件夹中建立一个子文件夹 Mypackage。例如,在“D:\java\javacode”文件夹之中创建一个与包同名的子文件夹 Mypackage(D:\java\javacode\Mypackage),并将编译过的 class 文件放入到该文件夹中。 注意:包名与文件夹名大小写要一致。
3.在包中创建类
1) 编写程序KY6_1.java,在源程序中,首先声明使用的包名 Mypackage,然后创建KY6_1类,该类具有计算今年的年份,可以输出一个带有年月日的字符串的功能。
2) 源代码如下。
声明存放类的包
引用 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() {
返回当年的年份
}
public int year() {
返回年份
}
public String toString(){
返回转化为字符串的年-月-日
}
}
3) 编译KY6_1.java 文件,然后将KY6_1.class 文件存放到 Mypackage 文件夹中(D:\java\javacode\Mypackage)。 注意:先不运行程序KY6_1.class!
.编写一个需要使用到包 Mypackage 中的KY6_1 类的程序KY6_2.java。
1) 编写 KY6_2.java 程序:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用了KY6_1 的方法来计算年龄。
2) 源代码如下。
引用 Mypackage 包中的KY6_1 类
public class KY6_2
{
private String name;
private KY6_1 birth;
public static void main(String args[])
{
张驰",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 void output()
{
姓名 : "+name);
出生日期: "+birth.toString());
今年年龄 : "+age());
}
}
3) 编译KY6_2.java 程序并运行程序KY6_2.java
4) 在实验报告中写出该程序的运行结果。
5) 程序运行的结果有没有问题?问题出在哪里?请在实验报告中指出。
答:有问题。问题出在今年年龄是个负数。应该改为:
源代码为:
import Mypackage.KY6_1; //引用 Mypackage 包中的KY6_1 类
public class KY6_2
{
private String name;
private KY6_1 birth;
public static void main(String args[])
{
张驰",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 void output()
{
姓名 : "+name);
出生日期: "+birth.toString());
今年年龄 : "+age());
}
}
(三)使用接口技术
定义两个接口,其中各包括一个抽象方法分别用来完成两个数的加法和减法操作,然后创建一个类KY6_3来实现这两个接口中的抽象方法。编写程序KY6_3.java,将源程序写在实验报告中。
源代码:
interface M1{
int add(int x,int y);
}
interface M2{
int subtract(int x,int y);
}
public class KY6_3 implements M1,M2{
public int add(int x,int y){
return x+y;
}
public int subtract(int x,int y){
return x-y;
}
public static void main(String[] args) {
KY6_3 ky=new KY6_3();
System.out.println("x+y="+ky.add(11,22));
System.out.println("x-y="+ky.subtract(23,11));
}
}
结果截图:
类的使用
1.利用下面的关键代码编写一个完整的程序KY6_4.java,理解Math类的使用。
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());
2.将程序的运行结果写在实验报告中。
源代码:
import java.lang.Math;
public class KY6_4 {
public static void main(String[] args) {
求绝对值
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.log (7.0));//
System.out.println (Math.pow (7,2));//
System.out.println (Math.exp (0.4));//
输出e的值
π is:"+Math.PI);//输出π的值
System.out.println(Math.random());//
}
}
结果截图:
类与StringBuffer类的使用
1.利用下面的关键代码编写一个完整的程序KY6_5.java,理解String类与StringBuffer类的使用。
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));
StringBuffer sf=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);
2.将程序的运行结果写在实验报告中。
源代码:
public class KY6_5 {
public static void main(String[] args) {
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));
StringBuffer sf=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. 算术运算应该使用什么类?
答:java.lang.Math类
2. Java语言中如何表示字符串?
答:直接使用String类,在给它定义对象的时候就把字符串内容给写出来。如:
String s=new String("This is an demo of the String method.") 这是长度不可变的
StringBuffer sf=new StringBuffer("Hello World!");
sf.append("Hello Java!");
这是可以加上其他的字符串的