java第二次作业

1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法

举例说明equals方法和==的区别
1.基本数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(),比较的是他们的值。
基本数据类型比较(string 除外), == 和 equals 两者都是比较值;
2.复合数据类型(类)
当他们用(
)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。

int a1=1; int a2=1; a1==a2:    true
Integer b1 =new Integer (1); Integer b2 =new Integer (1); b1==b2:    false
Integer b1 =new Integer (1); Integer b2 =new Integer (1); bi.equals(b2):    true

2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
(1).构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
(2).构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。

public void abc()
public void abc(String str)

重载,方法名或参数类型或个数不同。

public abc()
public abc(String str)
    public static void main(String args[]) { 
       Foo obj = new Foo();       
    }     
}
class Foo{
    int value;
    public Foo(int intValue){
        value = intValue;
    }
}

不能编译,构造方法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,因为double还有未显示小数。
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;
}

数组的初始化错误,改为:

public class Test {
    public static void main(String[] args) {
        MyClass[] arr=new MyClass();
        arr[1].value=100;
    }
}
class MyClass{
    public int value=1;
}

5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)
应该用StringBuffer类,应为String为常量,长度不可变,StringBuffer长度可变,性能优化。

(二)实验总结

实验内容:
1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
程序设计思路:
主方法是双重循环,主要负责输入五名选手的十个成绩

子方法max求出最高分并返回;

子函数min求出最低分并返回;

子函数average求出平均分并返回;

子函数Array负责把输入成绩中的最高分和最低分去掉,然后赋值给新数组,新数组再从小到大排序,返回首地址,在主函数中输出。
问题1:未导入import java.util.Arrays包

2.Email验证:在各种应用中,需要对用户输入的email地址进行验证,编写一个方法,判断一个email地址是否有效。(判断条件:A:@和.同时存在 B: @在.之前 C: 不能@开头 D: 以com|cn|net|gov|edu|org结尾 )
程序设计思路:
indexOf:查找字符是否存在,返回其位置。
startsWith:查找字符串开始字符,返回true或false。
endsWith:查找字符串结束字符,返回true或false。
s.endsWith("com"):s.indexOf("\.")-1||s.indexOf("\@")-1)
不用转义字符,直接找@和.
问题2:s.endsWith("com||an||net||gov||edu||org")
(s.endsWith("com")||s.endsWith("cn")||s.endsWith("net")||s.endsWith("gov")||s.endsWith("edu")||s.endsWith("org"))
(三)代码托管(务必链接到你的项目)
http://git.oschina.net/hebau_cs15/hqh

posted @ 2017-03-27 12:01  一块二  阅读(137)  评论(0编辑  收藏  举报