石家庄铁道大学信息科学与技术学院
2017年----2018年 第一学期
专 业: 网络工程
课程名称: Java语言
班 级: 信1603
姓 名: 梁秋实 学号: 20163592
指导教师: 王建民
实验二:类与对象
[实验任务一]:静态变量(验证型实验)。
预测:静态变量x=0
静态变量a.x=3
静态变量a.y=2
静态变量b.x=3
静态变量b.y=4
结果
原因分析:
第一行:x没被初始化,又是静态全局,自动初始化为0
第二、四行:由于x是全局静态变量,而且最近一次x被b.set赋值为3,所以a中的x继承b,为3,同理第四行
第三、五行:实例变量不会继承,被赋值为多少就是多少
System.out.println("实例变量 y="+StaticDemo.getY());一行出错,因为gety函数不是静态的
总结:静态变量和实例变量使用的区别。
A:调用方式
静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。这个变量属于类。成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。B:存储位置静态变量存储在方法区长中的静态区。成员变量存储在堆内存。C:生命周期静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。成员变量随着对象的创建而存在,随着对象的消失而消失。D:与对象的相关性静态变量是所有对象共享的数据。成员变量是每个对象所特有的数据[实验任务二]:构造方法(验证型)
代码1:
sideA=a;
sideB=b;
sideC=c;
代码2:a+b>c&&a+c>b&&b+c>a
代码3:boo=true;
代码4:boo=false;
代码5:
length=sideA+sideB+sideC;
return length;
代码6:
sideA=a;
sideB=b;
sideC=c;
代码7:a+b>c&&a+c>b&&b+c>a
代码8:boo=true;
代码9:boo=false;
代码10:
a=above;
b=bottom;
h=height;
代码11:
area=(above+bottom)*height/2;
return area;
代码12:radius=r;
代码13:
area=radius*radius*3.14;
return radius;
代码14:
double length=6.28*radius;
return length;
代码15:Circle circle=null;
代码16:Trangle trangle;
代码17:Lader lader;
代码18:
Circle C=new Circle(0);
length=C.getLength();
代码19:area=C.getArea();
代码20:
Trangle T=new Trangle(0, 0, 0);
length=T.getLength();
代码21:area=T.getArea();
代码22:
Lader L=new Lader(0, 0, 0);
area=L.getArea();
代码23:T.setABC(12,34,1);
代码24:area=T.getArea();
代码25:length=T.getLength();
[实验任务三]:验证是否为闰年(设计型)。
程序设计思想:
定义Exercise2010类,接受年份,判断年份是否是闰年
定义TestExercise0210类,给与年份,输出结果
流程图
package 闰年;
import java.util.Scanner;
class Exercise2010 {
int year;
public void set(int y) {
year=y;
}
public boolean isLeap() {
if((year%4==0&&year%100!=0)||(year%400==0))
return true;
else
return false;
}
}
public class TestExercise0210{
public static void main(String args[]) {
int n;
System.out.println("输入年份:");
Scanner input=new Scanner(System.in);
n=input.nextInt();
input.close();
Exercise2010 Exercise2010=new Exercise2010();
Exercise2010.set(n);
if(Exercise2010.isLeap()==true)
System.out.println("是闰年");
else if(Exercise2010.isLeap()==false)
System.out.println("不是闰年");
else
System.out.println("没有");
}
}
结果
编译错误:无
[实验任务四]:Stduent类设计(设计型)。
源代码
import java.util.Scanner;
class student {
String name;
int age;
boolean sex;
double score;
void set(String N,int A,double S2,boolean S)
{
name=N;age=A;sex=S;score=S2;
}
void show() {
System.out.println("名字:"+name);
System.out.println("年龄:"+age);
if(sex==true)
System.out.println("性别:女");
if(sex==false)
System.out.println("性别:男");
System.out.println("分数:"+score);
}
public static void main(String args[]) {
String name ,sex2, M="男",W="女";
int age;
boolean sex = false;
double score;
System.out.println("输入姓名,年龄,分数,性别");
Scanner input=new Scanner(System.in);
name=input.next();
age=input.nextInt();
score=input.nextInt();
sex2=input.next();
if(sex2.equals(M))
sex=false;
else if(sex2.equals(W))
sex=true;
else
{
System.out.println("性别输入错误");
}
input.close();
student student=new student();
student.set(name, age, score, sex);
student.show();
}
}
截图
编译无错误
类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。
属性:类中的变量
封装:类中一个方法可以看成一个封装
抽象数据类型:简单来讲就是 数据元素(不仅限于一般的数据元素)+对其的操作(不太严谨但有助于理解)
抽象数据类型是描述数据结构的一种理论工具。在介绍抽象数据类型之前我们先介绍一下数据类型的基本概念。成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用。
类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性。而且所有的实例都可以修改这个类变量的值(这个类变量没有被final修饰的情况),而且访问类变量的时候不用实例,直接用类名.的方式就可以。
成员方法:包括实例方法和类方法,用static的方法就是类方法,不用static修饰的就是实例方法。实例方法必须在创建实例之后才可以调用。
类方法:和类变量一样,可以不用实例,直接用类就可以调用类方法。
例:class Demo{
int x; //x是实例变量,也是成员变量
static int y; //y为类变量,也是成员变量
public int x() { //该方法为实例方法,是成员方法
return x;
}
public static void setX(int x1){ //该方法为类方法,也是成员方法
x = x1;
}
}
class 类名称
{
属性 (变量) ;
行为 (方法) ;
}
其中变量是对象
例如学生类,分数姓名(类)都是他的内在属性
方法可以封装