实验二 Java简单类与对象

实验目的

  • 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
  • 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
  • 理解static修饰付对类、类成员变量及类方法的影响。

实验内容

写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:

(1) 使用构造函数完成各属性的初始赋值

(2) 使用get…()和set…()的形式完成属性的访问及修改

(3) 提供计算面积的getArea()方法和计算周长的getLength()方法

实验过程

class Rectangle {
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Rectangle(double width,double height,String color) {
this.setColor(color);
this.setHeight(height);
this.setWidth(width);
}
private double width;
private double height;
private String color;
public double getArea() {
return width * height;
}
public double getLength() {
return (width + height) * 2;
} } public class Example {
public static void main(String args[]) {
Rectangle angle = null;
angle = new Rectangle(4,5,"red");
System.out.println("矩形的颜色为:"+angle.getColor());
System.out.println("矩阵的周长为:"+angle.getLength());
System.out.println("矩阵的面积为:"+angle.getArea());
} }

实验结果

银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。

实验过程】

import java.util.*;
public class Account {
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
*/
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public static String getRandomNumbersAndString(int length) {
String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
return getRandomString(length, base);
}
private static String getRandomString(int length, String base) {
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
/*private static String getUniqueRandomString(int length, String base) {
// TODO Auto-generated method stub
return null;
}*/
//private Date date = new Date(); private String id = getRandomNumbersAndString(11);
private String name;
private String password = "123456";
private double balance;
public Account(String name,double balance) {
this.setName(name);
this.setBalance(balance);
}
public Account() { }
public double Deposit(double n) {
this.balance = balance + n;
return balance;
}
public double Draw(double m) {
this.balance = balance - m;
return balance;
}
public String Changepassword(String password) {
this.password = password;
return password;
}
} import java.util.*;
public class Example2 {
public static void main(String args[]) {
Account yonghu = null;
yonghu = new Account("及你太美",0);
Date date = new Date();
Scanner in= new Scanner(System.in);
Scanner sr = new Scanner(System.in);
String str;
System.out.println("输入相应的英文进行操作。。。。。。。。");
while(true) {
str = in.nextLine();
if(str == "exit") {
break;
}
switch(str) {
case "Deposit":{
double n = in.nextDouble();
System.out.println("用户的余额还有:"+yonghu.Deposit(n));
System.out.println("输入exit结束程序。。。。。。");
break;
}
case "Draw":{
double n = in.nextDouble();
System.out.println("用户的余额剩余:"+yonghu.Draw(n));
System.out.println("输入exit结束程序。。。。。。");
break;
}
case "Changepassword":{
String str2;
str2 = in.nextLine();
System.out.println("用户的密码改为:"+yonghu.Changepassword(str2));
System.out.println("输入exit结束程序。。。。。。");
break;
}
case "date":{
System.out.println("用户的开户日期为:"+date);
System.out.println("输入exit结束程序。。。。。。");
break;
}
case "id":{
System.out.println("用户标识为:"+yonghu.getId());
System.out.println("输入exit结束程序。。。。。。");
break;
}
case "name":{
System.out.println("用户的姓名为:"+yonghu.getName());
System.out.println("输入exit结束程序。。。。。。");
break;
}
case "balance":{
System.out.println("用户的当前余额为:"+yonghu.getBalance());
System.out.println("输入exit结束程序。。。。。。");
break;
}
case "exit":{
System.exit(0);
System.out.println("程序关闭正常");
}
default:{
System.out.println("输入错误请重新输入:");
System.out.println("输入exit结束程序。。。。。。");
break;
}
}
}
/*System.out.println(yonghu.getId());
System.out.println(date);*/
in.close();
sr.close();
} }

实验结果

总结:

这次的实验总体来说还算可以,第一题没什么问题,第二题有一点问题,开始定义了一些在Account类中的方法,然后想在另一个类中使用,开始不能用,提示说要定义为static属性,然后想了一下定义为static那些set跟get就没用了,后面一想,可以用对象调用,把这个问题解决了,后面又出了一个在switch中yonghu这个对象要为空,出现了这么一个错误,后来把对象的实例化放到前面去就可以了,没有这个错误了,这个题目还有一些没有实现,比如是否开户,开户了每一个人的账户内容保存在那,不能这个程序只能保存一个的吧,还有产生的随机账户,如果后面有重复账户怎么办,本来还想把它优化一下的,想用对象数组来保存每一个对象,但是这个题目在周二我就做好了,所以也不想改了,时间我是不知道怎么保存。

第四周总结:

本周主要讲了String类,还讲了对象数组,以及Java数组的定义。

String类

我们一直使用String定义字符串,一种是直接赋值,还有一种是调用String的构造方法,两种赋值方法效果类似。但有一些区别,直接赋值是如果开辟了一个堆空间来保存这个字符串,那么后面又出现这个字符串的赋值,就不会再开辟空间,而构造方法则是开辟了两个空间,甚至更多

String对象内容的比较,如果一个直接赋值,和一个用构造方法赋值的一样的字符串,进行直接比较,会出现false



所以要用eauals()方法比较这个方法只比较内容,但是会区分大小写。

字符串一旦声明就不可改变

还有一些String类的一些常用操作方法

对象数组

所谓对象数组,就是包含了一组相关的对象数组,数组一定要先开辟空间,因为其是引用数据类型,所以数组每一个对象都是null值,则再引用对象数组时都要对其进行实例化操作



第四周总结&第二次实验报告的更多相关文章

  1. 20145330《Java程序设计》第二次实验报告

    20145330<Java程序设计>第二次实验报告 实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承多态 3.初步掌握UM ...

  2. 20145320《Java程序设计》第二次实验报告

    20145320<Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.12 15: ...

  3. 《Java程序设计》第二次实验报告

    20145220 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测 ...

  4. 20145333 《Java程序设计》第二次实验报告

    2014333 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测试 ...

  5. 20145240 《Java程序设计》第二次实验报告

    20145240 <Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.12 实验 ...

  6. 第二次实验报告:使用 Packet Tracer 分析应用层协议

    个人信息: 姓名:倪晓东 班级:计算1811 学号:201821121020 1 实验目的 熟练使用Packet Tracer工具.分析抓到的应用层协议数据包,深入理解应用层协议,包括语法.语义.时序 ...

  7. java第二次实验报告

    课程:Java实验   班级:201352     姓名:池彬宁  学号:20135212 成绩:             指导教师:娄佳鹏   实验日期:15.05.05 实验密级:         ...

  8. java程序设计第二次实验报告

    北京电子科技学院(BESTI) 实验报告 课程:数据结构    班级:1352    姓名:何伟钦     学号:20135223 成绩:            指导教师:娄嘉鹏      实验日期: ...

  9. java第二次实验报告20135231

    Java实验报告二:Java面向对象程序设计 20135231 何佳 实验要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉 ...

随机推荐

  1. P4513 最大连续字段和 (线段树+区间合并)

    题目链接:https://www.luogu.org/problem/P4513 题目大意:单点修改和求区间最大连续字段和 解题思路:很容易想到是用线段树来做,但是如何进行维护呢? 每个维护区间 [L ...

  2. jvm 堆

    1.堆内存线程共享,在虚拟机启动时创建. 2.几乎所有的对象实例都在堆上分配:栈中存放基本数据类型和堆中对象的引用. GC回收 程序计数器.虚拟机栈.本地方法栈随线程而生,随线程而灭.栈中的栈帧随着方 ...

  3. CSS3边框 阴影 box-shadow

    box-shadow是向盒子添加阴影.支持添加一个或者多个. box-shadow: X轴偏移量 Y轴偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色] [投影方式]; 参数介绍: box-sh ...

  4. bzoj4998 星球联盟 LCT + 并查集

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4998 题解 根据题意,就是要动态维护点双,求出一个点双的权值和. 所以这道题就是和 bzoj2 ...

  5. springboot easyexcel

    pom..xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel&l ...

  6. 细数不懂Spring底层原理带来的伤与痛

    原文链接:https://www.jianshu.com/p/c9de414221ac?utm_campaign=haruki&utm_content=note&utm_medium= ...

  7. 【NOIP2016提高A组8.11】钱仓

    题目 分析 发现,一定有一个点作为起点,所有的路径都不经过这个起点. 接着贪心求答案, 如果\(c_i>1\),将其中\(c_i-1\)个钱往后"铺". 易证\(x^2+y^ ...

  8. 【leetcode】1137. N-th Tribonacci Number

    题目如下: The Tribonacci sequence Tn is defined as follows: T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 ...

  9. Day01_初识Python

    Python简介 Python的历史 1.1989年圣诞节:Guidao von Rossum开始写Python语言的编译器 2.1991年2月:第一个Python编译器(同时也是解释器)诞生,他是使 ...

  10. CSS背景和CSS3背景background属性

    css背景属性用于定义HTML元素的背景 背景属性既可以为单个的单元设置背景,也可以为整个页面设置背景,可以对上述二者的任意组合设置背景,段落.文字.不同状态的链接.图像.内容区域修改其背景样式.设置 ...