试验报告
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):按照指定符号分割字符串
作者:xudo~
出处:https://www.cnblogs.com/xudo/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。