第四周课程总结&试验报告(二)

第四周课程总结

一:对象数组

1.对象数组的定义,所谓的对象数组,就是指包含了一组相关的对象,而且数组里面的每一个对象都是null值,所以在使用时数组中的每一个对象都必须分别进行实例化操作。
2.对象数组的声明,类 对象数组名称[ ] = new 类[数组长度];
3.对象数组的初始化,与数组初始化的方式一样,对象数组也分为静态初始化和动态初始化。

二:String类

1.String类的两种实例化方法
(1)直接赋值:如String name = "lichen";
(2)利用new开辟一个新的空间(实际上就是直接调用String类中的构造方法):如String name = new String("lichen");
2.String类的比较方法
(1)通过使用“==”进行内容的比较,但“==”并不能适用于字符串内容的比较,因为字符串的内容看似相等,但其实地址不同,而“==”主要的功能是进行数值的相等判断的,如果用在了String对象上表示的是内存地址数值的比较,所以“==”就不能用于比较字符串内容啦。
(2)使用equals()方法对String的内容进行比较,equals()方法是String提供的一个方法,此方法专门负责进行字符串内容的比较,所以字符串内容比较是用equals()方法进行判断的。
3.String类两种对象实例化方式的区别
(如果想对上面问题进行解释,首先必须明白一个重要概念,一个字符串就是一个String类的匿名对象,匿名对象就是已经开辟了堆内存空间的并可以直接使用的对象。)
(1)直接赋值,对于这个代码String str1="lichen";实际上就是把一个在堆中开辟好的堆内存空间的使用权给了str1这个对象,使用这种方法还有另外一个好处,那就是,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明的时候,不会再重新开辟空间,并且会自动保存在对象池之中以供下次重复使用。
(2)使用new String()的方式实例化String对象,上面说过一个字符串就是一个String类的匿名对象,所以使用new关键词的话,不管如何都会再开辟一个新的空间,但空间的内容不变,所以实际上开辟了两个内存空间,但真正使用的只是一个使用关键字new开辟的空间,另一个是垃圾空间。
4.String类的使用特点
字符串的内容一旦声明则不可改变。
5.String类的常用方法
我介绍几个常用的因为方法种类有点多。
(1)toCharrArray(),可以使字符串变成一个字符数组。
(2)charAt(),取出字符串指定位置的字符。
(3)indexOf(),可以返回指定的字符串的位置,如果不存在则返回-1
(4)substring(),从指定位置截取到字符串结尾。
(5)startsWith(),判断字符串是否以指定的内容开头。
(6)endsWith(),判断字符串是否以指定的内容结尾。
(7)replaceAll(),可以将字符串的指定内容进行替换,等。

三:包的概念

1.包的概念,包是在使用多个类或接口时,为了避免名称重复而采用的一种措施。如果使用,直接在程序中加入package关键字即可。
2.包的定义,package 包名称.字包名称;
3.import语句
(1)定义,如果将几个类存放在不同的包中,则在使用类的时候就必须通过import语句导入。
(2)格式,import 包名称.子包名称.类名称;(手工导入所需要的类),import 包名称.子包名称.*;(由JVM自动加载所需要的类)。
4.系统常见包
下面简单介绍几个
(1)java.lang,此包为基本的包,像String这样的类就都保存在此包之中。
(2)java.util,此包为工具包,一些常用的类库、日期操作等都在此包之中。
(3)java.io,输入、输出处理。

试验报告(二)

实验二 Java简单类与对象

- 实验目的

- 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;

- 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;

- 理解static修饰付对类、类成员变量及类方法的影响。

- 实验内容

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

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

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

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

源代码
package test;

public class Rectangle {
	private double width,height;
	private String color;
	public Rectangle(String color,double width,double height){
		this.setColor(color);
		this.setWidth(width);
		this.setHeight(height);
	}
	public String getColor(){
		return color;
	}
	public void setColor(String n){
		color=n;
	}
	public double getWidth(){
		return width;
	}
	public void setWidth(double a){
		if(a>0){
			width=a;
		}
	}
	public double getHeight(){
		return height;
	}
	public void setHeight(double b){
		if(b>0){
			height=b;
		}
	}
	public double getArea(){
		return width*height;
	}
	public double getLength(){
		return width+width+height+height;
	}
	public static void main(String[] args) {
		Rectangle rec=new Rectangle("白色",12,12);
		System.out.println("颜色:"+rec.getColor());
		System.out.println("宽:"+rec.getWidth());
		System.out.println("高:"+rec.getHeight());
		System.out.println("面积:"+rec.getArea());
		System.out.println("周长:"+rec.getLength());
	}

}

因为这个作业是在学校机房写的,书上面有类似的,写到最后还是求助了同学、助教与老师才把它给完成。

当我把代码粘贴至自己电脑上就出现了下面的问题

当时求助了助教,懂了一点,之后回去上网搜索了一下如图

通过网上提供的方法,和助教的帮助,最终实现了实验。

正确截图

自我反思:这个题目写的不是很熟稔,有点陌生,写的时候犯了许多错误,自我感觉有点难度,还没完全掌握。

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

源代码
package test;
import java.util.Date;
import java.util.Scanner;
class Account{
	private String id,name,password;
	private Date date;
	private double balance;
	public Account() {
}
public Account(String id,String name,double balance) {
	this.setId(id);
	this.setName(name);
	this.date=new Date();
	this.password="123456";
	this.setBalance(balance);
}
public String getId() {
	return id;
}
public String getName() {
	return name;
}
public Date getDate() {
	return date;
}
public String getPassword() {
	return password;
}
public double getBalance() {
	return balance;
}
public void setId(String i) {
	id=i;
}
public void setName(String n) {
	name=n;
}
public void setDate(Date d) {
	date=d;
}
public void setPassword(String p) {
	password=p;
}
public void setBalance(double b) {
	balance=b;
}
public void cunqian(double money) {
	this.balance=this.balance+money;
}
public void quqian(double money) {
	this.balance=this.balance-money;
}
public Date date() {
	return date;
}
public void changepassword() {
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入新密码:");
	String password=sc.nextLine();
}
public static void main(String[] args) {
	Account a=new Account("1234567890","李晨",999999999);
	a.cunqian(999999999);
	a.quqian(5000);
	a.changepassword();
	a.date();
	System.out.println("账户标识:"+a.getId());
	System.out.println("姓名:"+a.getName());
	System.out.println("开户日期:"+a.date());
	System.out.println("当前余额:"+a.getBalance());
}
}

当时遇到一个这样的问题如下图

发现是日期的定义错了,当时对于日期的输出不了解于是上网搜索了一些相关知识如下图

然后在JDK的帮助文档中也搜索了一些如下图

通过以上步骤总算是初步了解了一些关于日期的定义,之后就完成了实验。

截图

输入密码界面

输入完成界面

问题就来了,当时我觉得自己的余额太少了,于是就增加了一些,就出现了下面截图的问题

于是我把余额的定义都改成了double类型的,但还是没得用,我找了许久也不知道怎么更改了就放弃了,只能在int类型的范围输入最大的了,如下图

除了上面那个问题还有一个重要的问题没解决,如下图

代码中有两个警告,虽说不影响代码的运行,但我还是尝试着解决一下,可惜知识知道了其中一个警告的意思,但不能更改。

自我反思:本题难度较大,我通过上网查阅一些相关知识,也查看过书籍,最后磕磕绊绊的写出来了。

总结:这两个题目我觉得下面这张图片非常贴切。

对于这次实验所要求的掌握的知识点,我还是不太熟练,不太会运用,期待自己的进步。

posted @ 2019-09-19 20:21  代码不是我的菜  Views(141)  Comments(2Edit  收藏  举报