(一)实验总结
1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法。举例说明equals方法和的区别。
在Java中,每一个对象都有一个地址空间,在这空间保存着这个对象的值。equals比较的是值,比较的是地址以及值。
例如:
'''
public class yi {
public static void main(String[] args) {
String str1="hello";
String str2=new String("hello");
String str3=str2;
System.out.println("str1==str2-->"+(str1==str2));
System.out.println("str1==str3-->"+(str1==str3));
System.out.println("str2==str3-->"+(str2==str3));
}
'''
运行结果如下:
...
str1str2-->false
str1str3-->false
str2==str3-->true
...
...
public class yi {
public static void main(String[] args) {
String str1="hello";
String str2=new String("hello");
String str3=str2;
System.out.println("str1==str2-->"+(str1.equals(str2)));
System.out.println("str1==str3-->"+(str1.equals(str3)));
System.out.println("str2==str3-->"+(str2.equals(str3)));
}
...
运行结果如下:
str1str2-->true
str1str3-->true
str2==str3-->true
2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
构造方法在对象实例化时可以直接把对象的值赋值给属性,在面向对象程序中构造方法的主要作用是为类中的属性初始化。在程序中只要出现了“()”就表示要调用构造方法。与普通方法一样,构造方法也是可以重载的,只要每个构造方法的参数类型或参数个数不同,即可实现重载。
这个程序不可以被编译,因为构造函数Foo未被定义。
3.运行下列程序,结果是什么?查阅资料,分析为什么。
运行结果为“不等于0.3”
4.运行下列程序,结果是什么?分析原因,应如何修改.
运行结果为Exception in thread "main" java.lang.NullPointerException
at test.main(test.java:4),因为含有空指针。应该改为
'''
public class yi {
public static void main(String args[]) {
MyClass[] arr={new MyClass()};
arr[1].value=100;
}
}
class MyClass{
public int value=1;
}
'''
5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)
应该使用String Buffer类。
6.其他需要总结的内容。
本次实验相对于我来说有点难度,在两次实验课上只写出来一个程序,还是在同学的帮助和细心教导之下,而且写出来的程序用的都是最简单最没有技术性的方法和语句。本次作业依旧是不太会写,上面的问题也没有答完,对于基础知识的掌握还不行,课下会认真学习,观看授课视频,请教同学和老师,争取跟大家站在同一起跑线。
(二)实验总结
1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
程序设计思路:定义数组用来存放选手成绩和平均成绩,输入评委的打分,找出最大值和最小值,去掉最大值和最小值,对剩下8个选手成绩进行求和,再求出平均值。
问题:所用方法太过于简单,没有技术性,希望能改成高级语句。
(三)代码托管(务必链接到你的项目)
https://git.oschina.net/hebau_cs15/java-cs02hfj.git