1.(1)学习使用Eclipse关联jdk源代码
点击项目-属性-Java构建路径-库-JRE系统库-rt.jar-源代码连接-编辑“源代码连接”-设置“外部文件”的路径为JDK安装路径下的src.zipString类的equals()方法
equals方法和==的区别
"=="是用来进行数值比较的,无法进行字符串的比较,而str2和str3所指的地址相同,地址值相同,所以str2=str3;
而equals是用来判断字符串的内容,在equals()方法中比较说明了这一结论。 2.构造方法 在对象实例化时直接把对象的值赋值给属性的一种简单方法,在面向对象程序中构造方法的主要作用是为类中的属性值初始化。构造方法的重载 :每个构造方法的参数类型或参数个数不同构造方法就可以重载
程序不可以通过编译,因为构造方法中有一个整型参数,而主函数调用构造方法时传递参数
3.运行下列程序,结果是什么?查阅资料,分析为什么。public class Test { public static void main(String args[]) { double a = 0.1; double b = 0.1; double c = 0.1; if((a + b + c) == 0.3){ System.out.println("等于0.3"); }else { System.out.println("不等于0.3"); } } }
结果是 不等于0.3
原因是:double类型为浮点型不能精确计算结果。计算机是二进制的,浮点数无法用二进制精确表示 应该用BigDecimal类精确计算。参考书上378和379页修改后的程序为import java.math.BigDecimal;public class Text { public static void main(String args[]) { BigDecimal bi1=new BigDecimal("0.1"); BigDecimal bi2=new BigDecimal("0.1"); BigDecimal bi3=new BigDecimal("0.1"); if(bi1.add(bi2).add(bi3).doubleValue()==0.3){ System.out.println("等于0.3"); } else { System.out.println("不等于0.3"); } }}
4.运行下列 程序,结果是什么?分分 析原因,应如何修改.
public class Test { public static void main(String[] args) { MyClass[] arr=new MyClass[3]; arr[1].value=100; }}class MyClass{ public int value=1;}
运行的结果
运行不出结果,应该是数组中没有值。
5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。 String对象是不可改变的。每次使用System.String类都要在内存中创建一个新的字符串对象,就需要对新对象分配内存空间,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提高速度。 string类的:public class Stringlei { public static void main(String args[]){ String str1="thisismyfirstworld!!"; for(int i=0;i<10000;i++){ str1+=1; } System.out.println(str1); }}
stringBuilder类的:
String里的内容不能更改,而对于频繁修改字符串内容的的程序,最好使用StringBuffer类完成;
(二)实验总结
1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。我只写了这一道题,但是还没有改完,在编程时总是习惯把所有的都放到一个类里,在参考了书上的方法和舍友的帮助后,还差一些输出语句,试验的设计思路:是五个参赛人员内用循环分别输入评委的评分,然后在代码块中构造最高分,最低分和平均分,将平均分放置在score数组中,再将数组从大到小排列。(三)代码托管(务必链接到你的项目)
•码云commit历史截图() 上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。