java实验报告 接口、泛型、枚举、内部类与异常
java(枚举、泛型)

第4章枚举和泛型---6.1 枚举---6.2 泛型1 知识点1.1 上次内容1.Java异常处理1.2 习题讲解1.求int型数组元素的平均值。
(提示:存在空对象异常和除数为0等潜在错误,要求使用异常进行处理。
(参考教材128页)1.3 本次内容〖知识点〗1.枚举2.泛型〖了解〗1.枚举扩展【重点】1.泛型2.枚举〖难点〗1.泛型2.枚举2 具体内容6.1 枚举在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。
例如:星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。
在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场。
6.1.1 枚举简介在JDK 1.5之前,JA V A可以有两种方式定义新类型:类和接口。
对于大部分面向对象编程来说,这两种方法看起来似乎足够了。
但是在一些特殊情况下,这些方法就不适合。
例如,想定义一个Color类,它只能有Red、Green、Blue三种值,其他的任何值都是非法的,那么JDK 1.5之前虽然可以构造这样的代码,但是要做很多的工作,也有可能带来各种不安全的问题。
而JDK 1.5之后引入的枚举类型(Enum)就能避免这些问题。
枚举就是规定好了指定的取值范围,所有的内容只能从指定的范围中取得,也就是一个类只能产生固定的几个对象。
范例:使用定义类实现枚举操作。
范例:使用接口表示一组范围6.1.2 定义一个枚举类型在JDK 1.5之后,引入了一个新的关键字类型—— enum,可以直接定义枚举类型,格式如下:范例:定义一个Color的枚举类型。
范例:枚举操作。
6.1.3 Enum使用enum关键字可以定义一个枚举。
实际上此关键字表示的是ng.Enum类型,即:使用enum 声明的枚举类型,就相当于定义一个类,而此类默认继承ng.Enum类。
ng.Enum类的定义如下:枚举类的主要操作方法:6.1.4 取得枚举的信息枚举类的构造方法:protected Enum(String name,int ordinal);在枚举类建立完成之后,实际上都会为其调用枚举类中的构造方法,为其赋值,在Enum类的构造方法中的第一个参数name就是定义的枚举的名称,第二个参数ordinal则会从0开始依次进行编号。
java实验报告 接口、泛型、枚举、内部类与异常

实验报告课程名称: Java程序设计成绩评定:实验项目名称:接口、泛型、枚举、内部类与异常指导教师:学生姓名:学号:专业班级:实验项目类型:基础实验地点:实验时间:一、实验目的与要求:1、理解接口的定义与实现;2、知道泛型、枚举型与内部类的基本应用;3、掌握常用异常的抛出与捕获及处理.二、实验环境:(硬件环境、软件环境)1.硬件环境:奔ⅣPC。
2.软件环境:Windows XP 操作系统,JDK6.0。
三、实验内容:(原理、操作步骤、程序代码等)任务:1、按照要求完成下述接口及实现类的程序1)定义名称为PCI()的接口,包括启动的方法start和关闭的方法stop;2)定义名称为NetworkCard 的类表示网卡,实现PCI接口,并且其在实现start方法时输出“sending data……”,在实现stop方法时输出“network stop.”3)定义名称为SoundCard 的类表示声卡,实现PCI接口;并且其在实现start方法时输出“dudu……”,在实现stop方法时输出“sound stop.”4)定义名称为MainBoard 的类表示主板,包含方法public void usePCICard(PCIp),在方法体内通过p来启动和关闭组件;5)定义一个包含main方法的Test类,在main方法内创建一个MainBoard 对象用mb来引用,创建一个NetworkCard对象用nc来引用,创建一个SoundCard对象用sc来引用,分别通过mb来使用usePCICard(PCI p)启动声卡和网卡。
2、泛型类程序的调试调试教材P165的程序8-2,写出程序运行结果,理解泛型类的工作机理及应用。
3、调试运行内部类程序:在类内部再定义另外一个类,这个另外定义的类就叫内部类。
调试教材P171-172程序8-3,写出程序运行结果,理解内部类的定义方法与应用。
4、异常抛出与捕获编程与调试先调试教材P182、183中的程序9-2和9-3,写出调试结果。
java10-泛型与枚举

java10-泛型与枚举java10泛型与枚举泛型和枚举都是JDK1.5版本之后加⼊的新特性,泛型将程序代码的类型检查提前到了编译期间进⾏,枚举类型增强了程序代码的健壮性。
1.泛型类class VariableType<T> { // 此处可以随便写标识符号,T是type的简称private T var; // var的类型由T指定,即:由外部指定public T getVar() { // 返回值的类型由外部决定,泛型⽅法return var;}public void setVar(T var) { // 设置的类型也由外部决定this.var = var;}};public static void main(String args[]) {VariableType <String> p = new VariableType <String>(); // ⾥⾯的var类型为String类型p.setVar("it"); // 设置字符串System.out.println(p.getVar().length()); // 取得字符串的长度}2.泛型⽅法// T 为参数类型public static void main(String[] args) {variableType(1);variableType(1.0);}public static <T> void variableType(T a) {System.out.println(a.getClass());}3.泛型接⼝的定义和使⽤package com.rimi.Test;import java.util.Date;interface Show<T,U>{void show(T t,U u);}class ShowTest implements Show<String,Date>{@Overridepublic void show(String str,Date date) {System.out.println(str);System.out.println(date);}}public class TestDemo {public static void main(String[] args) {ShowTest showTest=new ShowTest();showTest.show("Hello",new Date());}}4.⽐较任意类型的两个数的⼤⼩public static void main(String[] args) {System.out.println(get(1,2));}public static <T extends Comparable> T get(T t1, T t2) { // 添加类型限定if (pareTo(t2) >= 0){return t2;}return t1;}5.枚举// 枚举定义public enum Color {RED, GREEN, BLANK, YELLOW}// 枚举使⽤public static void main(String[] args) {System.out.println( isRed( Color.BLANK ) ) ; //结果: falseSystem.out.println( isRed( Color.RED ) ) ; //结果: true}// 枚举值的使⽤static boolean isRed( Color color ){if ( Color.RED.equals( color )) {return true ;}return false ;}public enum Color {RED, GREEN, BLANK, YELLOW}public static void main(String[] args) {showColor(Color.RED);}static void showColor(Color color) {switch (color) {case BLANK:System.out.println(color);break;case RED:System.out.println(color);break;default:System.out.println(color);break;}}//⾃定义函数public enum Color {RED("红⾊", 1), GREEN("绿⾊", 2), BLANK("⽩⾊", 3), YELLO("黄⾊", 4);private String name;private int index;private Color(String name, int index) { = name;this.index = index;}public String getName() {return name;}public void setName(String name) { = name;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}}public static void main(String[] args) {// 输出某⼀枚举的值System.out.println(Color.RED.getName());System.out.println(Color.RED.getIndex());// 遍历所有的枚举for (Color color : Color.values()) {System.out.println(color + " name: " + color.getName() + " index: " + color.getIndex()); }}。
java接口实验报告

java接口实验报告实验报告:Java接口实验一、实验目的通过本次实验,我们希望达到以下目的:1. 深入理解Java接口的概念、特点和用途。
2. 掌握如何定义、实现和使用接口。
3. 理解接口在多态性中的作用。
4. 掌握如何使用接口来设计可扩展的代码。
二、实验内容1. 定义一个接口,并实现该接口。
2. 使用接口实现多态性。
3. 通过接口设计可扩展的代码。
三、实验步骤及结果步骤1:定义一个接口首先,我们定义一个名为"Shape"的接口,该接口包含一个计算面积的方法。
```javapublic interface Shape {double getArea();}```步骤2:实现接口接下来,我们创建两个类(Circle和Rectangle),分别实现Shape接口。
每个类都提供了一个计算面积的方法。
Circle类:```javapublic class Circle implements Shape {private double radius;private static final double PI = ;public Circle(double radius) {= radius;}Overridepublic double getArea() {return PI radius radius;}}```Rectangle类:```javapublic class Rectangle implements Shape {private double width;private double height;public Rectangle(double width, double height) {= width;= height;}Overridepublic double getArea() {return width height;}}```步骤3:使用接口实现多态性现在,我们创建一个名为"ShapeDisplay"的类,该类接受一个Shape对象,并使用该对象的getArea方法来计算面积。
java异常处理实验报告

java异常处理实验报告Java异常处理实验报告一、实验目的本次实验旨在通过编写Java程序,学习和掌握异常处理的相关知识和技巧,提高代码的健壮性和可靠性。
二、实验环境本次实验使用的开发环境为Eclipse,使用Java语言进行编程。
三、实验内容1. 异常的概念异常是指程序在运行过程中出现的意外情况,例如除零错误、数组越界等。
Java中的异常是以类的形式存在的,所有异常类都是Throwable类的子类。
2. 异常处理的方法Java提供了try-catch-finally语句用于处理异常。
在try块中编写可能会抛出异常的代码,如果发生异常,则会跳转到对应的catch块进行处理。
finally块中的代码无论是否发生异常都会被执行。
3. 异常的分类Java中的异常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。
受检异常需要在代码中显式地进行处理,否则编译器会报错;而非受检异常不需要强制处理。
4. 自定义异常除了使用Java提供的异常类,我们还可以根据需要自定义异常类。
自定义异常类需要继承Exception类或RuntimeException类,并重写相应的方法。
5. 异常处理的最佳实践在实际的软件开发中,异常处理是非常重要的一部分。
以下是一些异常处理的最佳实践:- 尽早捕获异常:在代码中尽量早地捕获异常,以避免异常的传播和影响其他部分的代码。
- 适当处理异常:根据具体情况,选择合适的处理方式,可以是打印日志、返回默认值、抛出新的异常等。
- 避免捕获过宽的异常:捕获异常时要尽量精确,避免捕获过宽的异常类型,以免屏蔽了真正的问题。
四、实验步骤1. 创建一个Java项目,并新建一个类用于实现异常处理的实验。
2. 编写代码,在try块中编写可能会抛出异常的代码。
3. 使用catch块捕获异常,并进行相应的处理,例如打印异常信息。
4. 在finally块中编写必要的代码,例如资源的释放。
Java实验三 Java 接口与抽象类、异常处理

实验报告课程名称:Java程序设计方法。
人员编号基数为 0A00,每创建一个人员实例对象,其编号属性的值顺序加 1。
月薪计算方法:经理拿固定月薪 5000 元;兼职技术人员按每小时 60 元领取月薪;兼职推销人员的月薪按当月的销售额的 4%提成。
要求:根据题意,自己确定需要定义的类及各类的属性、构造方法和其他方法,程序实现功能:存储若干个职工信息,然后分行显示所有职工的姓名、编号、月工资等相关信息,另外计算所有职工的月薪总和并显示出来。
要求定义:(1)抽象类 Staff 作为父类,并定义通用的域变量 name,num,income,添加构造方法 Staff(String name,int num,double income){……} 添加抽象方法 abstract double getPay(); abstract void print(); (2)分别定义 Staff 的子类 Manager,Engineer,Salesman,让它们继承父类的属性并分别将抽象的构造方法根据各自特点将抽象方法具体化。
(3)上述类放在同一个包中实现。
3. 编写一个Java程序,计算S=N!,其中N的值由键盘输入,要求用try catch finally 语句能够处理多种不同的异常处理。
四、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)1.实验一2.实验二3.实验三五、实验总结(包括心得体会、问题回答及实验改进意见,可附页)真的难六、教师评语1、完成了所有规定的实验内容,实验步骤正确,结果正确;2、完成了绝大部分规定的实验内容,实验步骤正确,结果正确;3、完成了大部分规定的实验内容,实验步骤正确,结果正确;4、基本完成了规定的实验内容,实验步骤基本正确,结果基本正确;5、未能很好地完成规定的实验内容或实验步骤不正确或结果不正确;。
java实验报告——异常、集合类和泛型

for(int x=13;x<Stu.length;x++) {
Stu[x]-generated method stub //XueShengXinXi[] Stu=ChuShiHua(); //初始化系统数据 XueShengXinXi[] Stu=new XueShengXinXi[100]; Stu[0]=new XueShengXinXi("专业", "班级", "姓名", "性别", "电话", "家庭住址 "); Stu[1]=new XueShengXinXi(" 自 动 化 ", " 自 动 化 10-1", " 张 三 ", " 男 ", "63256", "fnhjfdhsdbh"); Stu[2]=new XueShengXinXi("自动化", "自动化10-2", "李四", "女", "653256", "nfhggdfddhsdbh"); Stu[3]=new XueShengXinXi(" 电 子 ", " 电 子 10-1", " 王 五 ", " 男 ", "6156", "fnhvjbh");
JAVA实验报告

学生实验报告课程名称:面向对象程序语言(Java)年级:专业:学号:姓名:指导教师:实验地点:学年至学年度第学期1.目录实验一初识Java——“一个简单的应用程序”实验二基本数据类型与数组——“输出希腊字母表”实验三分支与循环语句——“猜数字游戏”实验四类与对象——“机动车”实验五类与对象——“家中的电视”实验六类与对象——“共饮同井水”实验七类与对象——“求方程的根”实验八子类与继承——“中国人、北京人和美国人”实验九子类与继承——“银行计算利息”实验十子类与继承——“公司支出的总薪水”实验十一接口与实现——“评价成绩”实验十二内部类与异常类——“检查危险品”实验十三常用实用类——“检索简历”实验十四组件及时间处理——“计算三角形的面积”实验十五实验十六实验(一)初识Java——“一个简单的应用程序”实验时间:2017年02月21日实验目的本实验的目的是让学生掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序实验要求编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,欢迎学习Java”和“We are students”。
实验内容public class Hello {public static void main (String args[ ]) {System.out.println("你好,很高兴学习Java"); //命令行窗口输出"你好,很高兴学习Java"A a=new A();a.fA();}}class A {void fA() {System.out.println("We are students"); //命令行窗口输出"We are students"}}实验结果分析通过本次实验,在老师的指导下我学会了基本的JAVA编译原理,能够自行改变环境变量,能够成功编译出一个简单的应用程序,而且通过实验后的练习知道了一些基础的错误在JAVA中出现时编译器的提示信息是怎样的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称: Java程序设计成绩评定:
实验项目名称:接口、泛型、枚举、内部类与异常指导教师:
学生姓名:学号:专业班级:
实验项目类型:基础实验地点:实验时间:
一、实验目的与要求:
1、理解接口的定义与实现;
2、知道泛型、枚举型与内部类的基本应用;
3、掌握常用异常的抛出与捕获及处理.
二、实验环境:(硬件环境、软件环境)
1.硬件环境:奔ⅣPC。
2.软件环境:Windows XP 操作系统,JDK6.0。
三、实验内容:(原理、操作步骤、程序代码等)
任务:
1、按照要求完成下述接口及实现类的程序
1)定义名称为PCI()的接口,包括启动的方法start和关闭的方法stop;
2)定义名称为NetworkCard 的类表示网卡,实现PCI接口,并且其在实现start
方法时输出“sending data……”,在实现stop方法时输出“network stop.”
3)定义名称为SoundCard 的类表示声卡,实现PCI接口;并且其在实现start
方法时输出“dudu……”,在实现stop方法时输出“sound stop.”
4)定义名称为MainBoard 的类表示主板,包含方法public void usePCICard(PCI
p),在方法体内通过p来启动和关闭组件;
5)定义一个包含main方法的Test类,在main方法内创建一个MainBoard 对
象用mb来引用,创建一个NetworkCard对象用nc来引用,创建一个
SoundCard对象用sc来引用,分别通过mb来使用usePCICard(PCI p)启动声
卡和网卡。
2、泛型类程序的调试
调试教材P165的程序8-2,写出程序运行结果,理解泛型类的工作机理及应用。
3、调试运行内部类程序:
在类内部再定义另外一个类,这个另外定义的类就叫内部类。
调试教材P171-172程序8-3,写出程序运行结果,理解内部类的定义方法与应用。
4、异常抛出与捕获编程与调试
先调试教材P182、183中的程序9-2和9-3,写出调试结果。
然后,自己编写一个能抛出并捕获、处理NullPointerException、NumberFormanException多异常的程序,并调试后写出运行结果。
具体操作步骤及程序代码为:
1.
interface PCI{
public void start();
public void stop();
}
class NetworkCard implements PCI{
public void start(){
System.out.println("sending data......"); }
public void stop(){
System.out.println("network stop."); }
}
class SoundCard implements PCI{
public void start(){
System.out.println("dudu......");
}
public void stop(){
System.out.println("sound stop.");
}
}
public class MainBoard{
public void usePCICard(PCI p){
p.start();
p.stop();
}
public static void main(String[] args){
NetworkCard nc=new NetworkCard();
SoundCard sc=new SoundCard();
MainBoard mb=new MainBoard();
ePCICard(nc);
ePCICard(sc);
}
}
2.public class GenericPool<T>{
private Object[] objArray;
private int headLoc;
private int tailLoc;
public GenericPool(int length){
objArray=new Object[10];
headLoc=-1;
tailLoc=-1;
}
public T get(){
Object result=null;
int idx=(headLoc+1)%objArray.length;
if(objArray[idx]!=null){
result=objArray[idx];
objArray[idx]=null;
headLoc++;
}
return (T)result;
}
public int add(T o){
int ins=(tailLoc+1)%objArray.length;
if(objArray[ins]!=null){
return -1;
}
objArray[ins]=o;
tailLoc=ins;
return ins;
}
public static void main(String[] args){
GenericPool<String>pool=new GenericPool<String>(2);
System.out.println(pool.add("1"));
String x=pool.get();
System.out.println(x);
System.out.println(pool.add("2"));
}
}
3.public class OutClass{
private String name;
private String state;
public OutClass(String name,String state){
super();
=name;
this.state=state;
}
private void say(){
System.out.println("外部"+name+"的状态是"+state);
}
public class InnerClass{
public void alarm(){
System.out.println("内部:"+name+"的状态是"+state);
say();
}
}
public static void main(String[] args){
OutClass Outer=new OutClass("冰箱","完好");
OutClass.InnerClass inner=Outer.new InnerClass();
inner.alarm();
}
}
4.p182 9-2的运行结果为:
D:\Java>java Summer2
不能给我一个null的参数!
P183 9-3 的运行结果为:
D:\Java>java Summer3
也不能给我一个不是数值型的参数!
sum=0
public class BuHuo{
public static int sum(String a,String b){
int sum=0,x=0,y=0;
try{
a.trim();
b.trim();
x=Integer.parseInt(a);
y=Integer.parseInt(b);
sum=x+y;
}catch(NullPointerException e){
System.out.println("不能给我一个null的参数!");
}catch(NumberFormatException e){
System.out.println("不能给我一个不是数值型的字符串参数!");
}
return sum;
}
public static void main(String[] args){
int result=sum("ab",null);
System.out.println("sum="+result);
}
}
四、实验体会(实验中碰到的问题及解决方法等)
1、知道了接口该如何定义和如何使用接口。
2、学会了枚举类的定义和使用,掌握了内部类的定义和使用方法。
3、能正确区分异常和错误,掌握了将可能发生异常的语句放在try{}catch(){}代码块中,来确保异常发生时能够得到捕获,并学会了自定义异常。
4、理解题目容易,自己写比较难,往往会遇到一些问题很难得到解决。
如:找不到符号是什么愿意导致,当定义一个方法为public时,有时程序会出错,而删除时程序能正常运行的原因。
5、将可能发生异常的语句放在try{}还不能很好的理解,如:对输入值的判断,不知道该把那句放在try中。