第四周总结&第二次实验报告
实验二 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值,则再引用对象数组时都要对其进行实例化操作




第四周总结&第二次实验报告的更多相关文章
- 20145330《Java程序设计》第二次实验报告
		20145330<Java程序设计>第二次实验报告 实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承多态 3.初步掌握UM ... 
- 20145320《Java程序设计》第二次实验报告
		20145320<Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.12 15: ... 
- 《Java程序设计》第二次实验报告
		20145220 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测 ... 
- 20145333 《Java程序设计》第二次实验报告
		2014333 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测试 ... 
- 20145240 《Java程序设计》第二次实验报告
		20145240 <Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.12 实验 ... 
- 第二次实验报告:使用 Packet Tracer 分析应用层协议
		个人信息: 姓名:倪晓东 班级:计算1811 学号:201821121020 1 实验目的 熟练使用Packet Tracer工具.分析抓到的应用层协议数据包,深入理解应用层协议,包括语法.语义.时序 ... 
- java第二次实验报告
		课程:Java实验 班级:201352 姓名:池彬宁 学号:20135212 成绩: 指导教师:娄佳鹏 实验日期:15.05.05 实验密级: ... 
- java程序设计第二次实验报告
		北京电子科技学院(BESTI) 实验报告 课程:数据结构 班级:1352 姓名:何伟钦 学号:20135223 成绩: 指导教师:娄嘉鹏 实验日期: ... 
- java第二次实验报告20135231
		Java实验报告二:Java面向对象程序设计 20135231 何佳 实验要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉 ... 
随机推荐
- strptime strftime时间函数总结
			time(2) #include <time.h> time_t time(time_t *timep);//获取当前时间距离1970-01-01 00:00:00 经历的秒数 p = ... 
- 【学习】016 MySQL数据库优化
			MySQL如何优化 表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] SQL语句优化 分表技术(水平分割.垂直分割) 读写[写: ... 
- uboot if_changed函数
			u-boot编译过程分析 u-boot.lds: $(LDSCRIPT) prepare FORCE $(call if_changed_dep,cpp_lds) u-boot: $(u-boot-i ... 
- django搭建一个小型的服务器运维网站-查看和修改服务器配置与数据库的路由
			目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ... 
- oracle数据库架构
			3.1 Client/Server Oracle 采取的是 Client/Server 架构. oracle 服务端分为两部分: Instance 实例 Database 数据库 实例, 又称为数据库 ... 
- SpringBoot实体类对象和json格式的转化
			1.引入maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson ... 
- 初识Django之前端后端与数据库的配置
			目录 一.静态文件配置 二.关于form表单的补充 三.post请求出现403问题 四.request方法初识 4.1判断当前请求方式 4.2request.POST与request.GET 五.py ... 
- java -jar 和 java -cp 区别
			原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/12022527.html Project Directory SRC MainTest.java pac ... 
- js返回上一页并刷新 代码整理
			真正好用: 强制载入后刷新一次 在要载入的页面加入以下代码: <script> if(window.name != "bencalie"){ location.relo ... 
- python 指定画图分辨率
			from IPython.core.pylabtools import figsize # import figsize figsize(12.5, 4) # 设置 figsize plt.rcPar ... 
