java第二次作业
(一)学习总结
1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法。举例说明equals方法和==的区别。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,不一定为true。
2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
(1)在Java中,允许在一个类中定义多个构造方法。(2)在创建对象时,系统会自动根据所调用的构造方法中包含的参数类型,个数,选择匹配的构造方法创建对象。(II)构造方法的注意事项(1)如果在类中没有明确定义构造方法,系统会自动调用默认的构造方法。(2)如果指定了构造方法,则不调用默认的构造方法。(3)如果已经指定了有参的构造方法,而又要调用无参的构造方法,则要在类中追加无参构造
···
public class Test {
public static void main(String args[]) {
Foo obj = new Foo();
}
}
class Foo{
int value;
public Foo(int intValue){
value = intValue;
}
}
···
不能通过编译,new Foo()错误,应创建构造函数Foo()
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
float或double不能准确计算精度,需要精确计算的结果用BigDecimal类。
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;
}
···
数组没有正常初始化。
程序只是对arr数组进行了声明,并没有初始化。
修改为:
···
public class Test {
public static void main(String[] args) {
MyClass[] arr=new MyClass[3];
for(int i=0;i<3;i++){
arr[i]=new MyClass();
}
arr[1].value=100;
}
}
class MyClass{
public int value=1;
···
5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)
String类、StringBuffer类是两个独立的类,.String类是不可改变的,如果更改了String类的实例,那么以前的就“不存在了”,所指向的是一个新的实例。而StringBuffer类是可以更改的。
将26个英文字母重复加了5000次
得到的结果为46687左右。
得到的结果为 16 。
(二)实验总结
实验内容:
1.
程序设计思路:评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
问题:后面排序数组的时候,数组没有识别
原因:数组定义在了上一个循环的里面的
解决方案:将数组的定义放在循环外面。
2.
程序设计思路:Email验证:在各种应用中,需要对用户输入的email地址进行验证,编写一个方法,判断一个email地址是否有效。(判断条件:A:@和.同时存在 B: @在.之前 C: 不能@开头 D: 以com|cn|net|gov|edu|org结尾 )
问题:没输入‘.’是显示输入正确
原因:@,.的顺序反了
解决方案:@,.的顺序正过来。
3.
程序设计思路:统计文件:输入一个字符串,包含各种文件类型的文件名。文件名之间用“,”分隔,要求将各个文件名的首字母大写后分别输出,并统计各种类型文件的文件个数。
4.
程序设计思路:身份证识别:公民身份证号码由十八位数字组成。从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。顺序码的奇数分配给男性,偶数分配给女性。编写一个识别身份证基本信息的小工具,输入一个居民身份证号,则输出居民所属省份(直辖市、自治区),生日(格式:xxxx-xx-xx)和性别信息。
(三)代码托管(务必链接到你的项目)git@git.oschina.net:hebau_cs15/Java-CS02XJL2.git