JAVA第二次作业
-
1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法。举例说明equals方法和==的区别
在菜单中打开 window->Preferences->Java->installed JRES
![]()
![]()
选择自己的JRE,然后点Edit
![]()
找到自己之前保存的rt.jar文件项,点击“SourceAttachment(none)”,然后点击右边的按钮“SourceAttachement...”,选择JDK目录下的“src.zip”文件
“==”比较两个变量在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。
例如 定义string a,b="qwe"
此时都是相等的,再加上
a = new String("qwe");
b = new String("qwe");
此时 a ==b 为 false a.equal(b)为 ture -
2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
构造一个函数然后在主函数中用 new操作调用
构造方法的重载,就是改变函数中的参数,方法名不变,以此来完成更多的功能。
该程序不能编译通过,因为没有输入参数 -
3.运行下列程序,结果是什么?查阅资料,分析为什么。
![]()
double是浮点型数据,存在精度丢失问题。
4.运行下列程序,结果是什么?分析原因,应如何修改.
运行结果
![]()
使用类名称进行调用,则必须将其声明为static属性。
修改为 public static int claue =1
public class Test { public static void main(String[] args) { MyClass[] arr=new MyClass[3]; arr[1].value=100; System.out.println(arr[1].value); } } class MyClass{ public static int value=1; } -
5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。
String abc = "yy66666qiangwudi"; int times = 10000; long lstart1 = System.currentTimeMillis(); String str = ""; for (int i = 0; i < times; i++) { str += abc; } long lend1 = System.currentTimeMillis(); long time = (lend1 - lstart1); System.out.println(time);
输出结果3126
String abc = "yy66666+qiangwudi"; int times = 10000; long lstart2 = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < times; i++) { sb.append(abc); } long lend2 = System.currentTimeMillis(); long time2 = (lend2 - lstart2); System.out.println(time2);
输出结果 32
第一个为String类,第二个为StringBuffer类。
选择StringBuffer类
String类的操作实际上是通过建立一个StringBuffer,然后调用append(),最后再将StringBuffer toSting();这样的话String的连接操作就比StringBuffer多出了一些附加操作,效率上要打折扣.
-
(二)实验总结
-
1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
程序设计思路:使用一个二维数组,用双循环将每个选手的10个得分输入。
在内层循环中找出10个得分的最大值和最小值。在统计10个分数时求出10个分的总和,最后用这个总和减去查找出来的2个值。除以8,得出平均数。 最后在循环外 用选择排序法对5个平均值进行排序。
2.Email验证:在各种应用中,需要对用户输入的email地址进行验证,编写一个方法,判断一个email地址是否有效。(判断条件:A:@和.同时存在 B: @在.之前 C: 不能@开头 D: 以com|cn|net|gov|edu|org结尾 )
程序设计思路 :输入一个字符串,利用JAVA中字符串函数进行各项操作。先用indexOf()判断字符串中是否含有@ . ,同时利用返回值查看@是否在首位,@是否在.之前。
然后用用endsWith()判断字符串是否以com|cn|net|gov|edu|org结尾。
问题1:在多个if else 判断条件中如何只输出一个正确结果
解决方案: 声明一个int i ,然后给i赋值为0,在每个判断结果为正确时将其赋值为1,在最后根据i的值来输出正确结果。
![]()






浙公网安备 33010602011771号