试验报告

1.计算面积和周长

源代码:

package text;

public class Rectangle {           
	private double width;    //声明属性
	private double height;
	private String color;
	
public  Rectangle(double width,double height,String color) {
	this.setWidth(width);
	this.setHeight(height);
	this.setColor(color);
	
}
	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 double getArea() {						//面积公式
		 return width*height;
	}
	public double getLength() {						//周长
		 return (width+height)*2;
	}
	
	public static void main(String agrs[]) {
		   Rectangle rec1 = new Rectangle(30,40,"黑色");
           System.out.println("长:"+  rec1.width+"  宽  "+  rec1.height+"  颜色: "+  rec1.color);
           System.out.print("面积:" + rec1.getArea() + "   周长:" + rec1.getLength());
	}
}

运行截图:

遇到的问题:在给对象赋值的时候,出现了问题,颜色一直输出null,检查后发现,少了颜色的set方法,还有在使用点运算符的时候,出现调用不了的问题,调用方法,一直没有加括号,所以错误,以后还是要细心。

感想:虽然书上有一个差不多的题目,都是我没有看书,所以在做出来之后,还是感觉到非常的有信心,构造方法不难,都是要和普通方法一起运用的话,就非常有难度了,知识的逻辑性很强,还是没有区分普通方法与构造方法有什么区别,觉得差不多,都是又不一样,这让我很头疼,还是要多做题目,加强训练。

2.银行开户;

源代码:

package text;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;


public class Account {
	private String name;	//姓名
	private String date; 	//开户日期	
	private String code;	//密码
	private double save;	//存钱金额
	private double balance;	//余额
	private String bsf;		//标识符
	private double yc;		//预存
	
	public Account(String name,String code,double yc,double save){
		this.setName(name);
		this.setCode(code);
		this.setSave(save);				//构造方法
		this.setYc(yc);
		
		Date now = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");			//开户日期生成
		 date = dateFormat.format(now);    											
		 
		SimpleDateFormat dateFormat2 = new SimpleDateFormat("mmmddhhssmm");					//标识符生成
		 bsf = dateFormat2.format(now);
		 
	}
	//给出set与get方法
	public void setName(String name) {
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public void setCode(String code) {
		this.code=code;
	}
	public String getCode() {
		return code;
	}
	public void setSave(double save) {
		this.save=save;
	}
	
	public void setYc(double yc) {
		this.yc=yc;
	}
	
	public double getBalance() {
	return balance=yc+save;	
	}
	
	public double getYc() {
		return yc;
	}
  
	//主方法
	public static void main(String[] agrs) {
		Scanner sc = new Scanner(System.in);
		String c = sc.nextLine();   		 //输入姓名
		String b = sc.nextLine();			//设置密码
		double n =sc.nextDouble();			//预存金额	
		double m = sc.nextDouble();			//本次存钱
		
		
	Account ac = new Account(c,b,n,m);			//构造对象
	System.out.println( "开户日期:" + ac.date+"\n" +"姓名:" + ac.name+"\n" + "密码:" + ac.code );
	System.out.println("预存为:"+ ac.yc);
	System.out.println("本次存入金额为:" + ac.save);
	System.out.println("余额:" + ac.getBalance() );
	System.out.print("标识符 " + ac.bsf);
	}
}


运行截图:

遇到的问题:在设置开户日期的时候,不会,然后百度找到了读取当前日期的方法,format方法,然后就可以读取当前日期,然后想利用这个日期做为标识符,由于没有看懂这个方法,纠结了好久,最后明白了,在new一个新的对象就行了,都是还是不明白,为什么俩个对象,赋的是同一个now,都是表示当前时间?应该是这样吧,在设置存钱的时候,因为开始没有搞清楚普通方法与构造方法的区别,所以就都在主方法里面进行输入了,后来明白了可以使用普通方法进行提示输入,都是知道的太晚了,所以就先提交用直接输入的吧,还有密码也只能进行覆盖,也没有想到用新学的Stringbuffer去进行修改,由于时间问题,所以就只能在后面进行修改了,不过这个题目需要明白的知识点,我想我应该是清楚了。

感想:学以致用,和知道,真的是一个天上一个地下,差的不是一点,还是经验太少了,在听取别人的想法之后,恍然大悟,其实挺简单的一种思路,自己却是怎么样都想不到,有一种思维自我封闭的感觉,这不是一个好消息,还是要多加练习。

学习总结:这一个礼拜主要是学习了String类。

String(字符串常量)概述

在API中是这样描述:

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。使用Stringbuffer是可以进行修改的。

创建字符串对象两种方式的区别

直接赋值方式创建对象

直接赋值方式创建对象是在方法区的常量池

String str="hello";//直接赋值的方式

通过构造方法创建字符串对象

通过构造方法创建字符串对象是在堆内存

String str=new String("hello");//实例化的方式

两种实例化方式的区别

1)直接赋值(String str = "hello"):只开辟一块堆内存空间,并且会自动入池,不会产生垃圾。

2)构造方法(String str= new String("hello");):会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public String intern();方法进行手工入池。

String类的常用方法

int length():获取字符串的长度,其实也就是字符个数
char charAt(int index):获取指定索引处的字符
int indexOf(String str):获取str在字符串对象中第一次出现的索引
String substring(int start):从start开始截取字符串
String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end
char[] toCharArray():把字符串转换为字符数组
String toLowerCase():把字符串转换为小写字符串
String toUpperCase():把字符串转换为大写字符串
String trim():去除字符串两端空格
String[] split(String str):按照指定符号分割字符串