JAVA第二次作业
(一)学习总结
1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法。
举例说明equals方法和==的区别
操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。比较的是2个对象的地址,而equals比较的是2个对象的内容。当equals为true时,==不一定为true。
2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
构造方法是一种特殊的方法,与一般的方法不同是:
1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。
3.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。
构造方法的重载:只要每个构造方法的参数类型或参数个数不同,即可实现重载。
public class Test {
public static void main(String args[]) {
Foo obj = new Foo();
}
}
class Foo{
int value;
public Foo(int intValue){
value = intValue;
}
}
该程序不能编译,因为构造函数 Foo()未定义。应改为Foo obj = new Foo(0);
3.运行下列程序,结果是什么?查阅资料,分析为什么。
没有考虑到double,float精度问题
修改后的程序为
import java.math.BigDecimal;
class Math{
public static double add(double d1,double d2,double d3){
BigDecimal b1 = new BigDecimal(d1) ;
BigDecimal b2 = new BigDecimal(d2) ;
BigDecimal b3 = new BigDecimal(d3) ;
return b1.add (b2).add(b3). doubleValue();
}
public static double round(double d, int len) {
BigDecimal b1 = new BigDecimal(d) ;
BigDecimal b2 = new BigDecimal(1) ;
return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class Test {
public static void main(String args[])
{
ystem.out.println("等于:"+Math.round(Math.add(0.1,0.1,0.1),1));
}
}
5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)
String 对象是不可改变的。每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。例如,当在一个循环中将许多字符串连接在 一起时,使用 StringBuilder类可以提升性能。
(二)实验总结
实验内容:
1.评分系统
程序设计思路:先设置给一位选手评分,创建一个数组,然后循环五次。
问题1:去掉最大小值
解决的方法:
int index=0,sum=0,temp=0,avg=0;
for(int i=0;i<a.length-1;i++){
for(int j=i+1;j<a.length;j++){
if(a[j]>a[i]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
//求和
while(a.length !=index){
sum +=a[index];
index++;
}
do{
sum=sum-a[0]-a[a.length-1];
}
while(false);
avg=sum/8;
System.out.println("该选手的成绩为:"+avg);
}
2.Email验证
1.程序设计思路:利用mail.matches(reg)定义一个字符串,输入邮件的格式。然后用户输入的与它比较。
3.统计文件
1.程序设计思路:先按逗号把各个文件分开,,利用substring()方法取出第一个首字符,然后利用toUpperCase()大写输出。然后按"."号分割开,利用str1.indexOf(".")的方法,取文件名的后缀名。然后统计个数
问题1:个数没有加到一起
解决方法: