课程:《程序设计与数据结构》
班级: 1723
姓名: 李馨雨
学号:20172328
实验教师:王志强
实验日期:2018年4月17~30日
必修/选修: 必修java
1.实验内容程序员
初步掌握单元测试和TDD编程
理解并掌握面向对象三要素:封装、继承、多态设计模式
初步掌握UML建模安全
熟悉S.O.L.I.D原则数据结构
了解设计模式多线程
完成蓝墨云上 (1)-(5)实验。函数
2.实验过程及结果
码云连接工具
3.实验过程当中遇到的问题和解决过程单元测试
问题1:StringBuilder、StringBuffer、String类之间的关系
问题1解决方案:
String的值是不可变的,这就致使每次对String的操做都会生成新的String对象,不只效率低下,并且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操做类,任何对它指向的字符串的操做都不会产生新的对象,StringBuffer和StringBuilder类功能基本类似。
String 类
String的值是不可变的,这就致使每次对String的操做都会生成新的String对象,不只效率低下,并且大量浪费有限的内存空间。 String a = "a"; //假设a指向地址0x0001
a = "b";//从新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经再也不是a所指向的,a 已经指向了其它地址。
所以String的操做都是改变赋值地址而不是改变值操做。
StringBuffer是可变类,和线程安全的字符串操做类,任何对它指向的字符串的操做都不会产生新的对象。 每一个StringBuffer对象都有必定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增长容量。
StringBuffer buf=new StringBuffer(16); //分配长16字节的字符缓冲区
StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。
3.StringBuffer
StringBuffer和StringBuilder类功能基本类似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于常常要改变值的字符串应该使用StringBuffer和StringBuilder类。
问题2:多线程和单线程的概念
问题2解决方案:
问题3解决方案:这个问题一直不知道是本身哪里错误。后来经同窗帮助,是前面Complex类中编写错误,形式参数中变量a的实部和虚部不能直接调用,应该用我以前写在前面的get方法去调用具体值。(很差意思,忘记截图)
问题4:在作第三个提交点问题时,有一个小错误。一直红线提示。
问题4解决方案:后来发现是浮点数程序系统默认double,因此float型在后面初始化时应该用数值f
。
个人实验二中的几个实验作的有点吃力,可是仍是收获了不少。尤为是测试驱动开发(TDD),直接提供了一种很好用的方法去测试编写的程序是否有些纰漏,以前用命令行的时候老是找编译类错误和语法错误,如今能够具体系统的去找编程中的逻辑错误,因此junit是一种对程序员很实用的工具。
参考资料
1.全面解释java中StringBuilder、StringBuffer、String类之间的关系
2.《Java程序设计与数据结构教程(第二版)》学习指导