Java第二次作业——数组和String类

《Java第二次作业——数组和String类》
(一)学习总结
1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法。举例说明equals方法和==的区别。
(1)右键项目,依次选择:构建路径,配置构建路径,Java构建路径,库,JRE系统库,rt.jar,源代码连接。编辑“源代码连接”,设置“外部文件”的路径为JDK安装路径下的src.zip。
1080881-20170328120207623-1265753604.png
(2)equals方法和==的区别
==:用于数值的比较,比较的是两个字符串的地址值

public class Test {
    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = new String("hello");
        String str3 = str2;
        String str4 = "hello";
        System.out.println("str1 == str2 --> " + (str1 == str2)); 
        System.out.println("str1 == str3 --> " + (str1 == str3)); 
        System.out.println("str2 == str3 --> " + (str2 == str3)); 
        System.out.println("str1 == str4 --> " + (str1 == str4)); 
    }
}

运行结果:
str1 == str2 --> false
str1 == str3 --> false
str2 == str3 --> true
str1 == str4 --> true

equals()方法:用于内容的比较,比较两个字符串内容是否相等

public class Test {
    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = new String("hello");
        String str3 = str2;
        String str4 = "hello";
        System.out.println("str1 equals str2 --> " + (str1.equals(str2))); 
        System.out.println("str1 equals str3 --> " + (str1.equals(str3))); 
        System.out.println("str2 equals str3 --> " + (str2.equals(str3))); 
        System.out.println("str1 equals str4 --> " + (str1.equals(str4))); 
    }
}

运行结果:
str1 equals str2->true
str1 equals str3->true
str2 equals str3->true
str1 equals str4->true
2.2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
(1)什么是构造方法?
构造方法用于在创建对象时对其进行初始化。

Person per = new Person() ;  

(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;
    }
}

此程序不能运行,因为没有定义构造函数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
为了处理精度损失的问题,可以使用java.math.BigDecimal类,查阅JDK帮助文档或教材p378,对上述程序进行修改。

import java.math.BigDecimal;
public class Text {
    public static void main(String[] args) {
        double a = 0.1;
        double b = 0.1;
        double c = 0.1;
        double sum=0;
        sum=MyMath.round(MyMath.add(a, b, c),1);
        if(sum == 0.3){
            System.out.println("等于0.3");
        }else {
            System.out.println("不等于0.3");
        }

    }
}
class MyMath{
    public static double round(double d,int len){
        BigDecimal a=new BigDecimal(d);
        BigDecimal b=new BigDecimal(1);
        return a.divide(b,len,BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    public static double add(double a1,double b1,double c1){
        BigDecimal a=new BigDecimal(a1);
        BigDecimal b=new BigDecimal(b1);
        BigDecimal c=new BigDecimal(c1);
        return a.add(b).add(c).doubleValue();
    }
}

1080881-20170328135608904-1865266546.png

1080881-20170328135621389-1646074009.png
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;
}

结果:1080881-20170328140327826-435443124.png
原因:没有对数组进行初始化
改正:

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

1080881-20170328142347529-1802213081.png
5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)
String类对象一旦产生便不能修改,StringBuffer类对象可修改
6.其他需要总结的内容。
(二)实验总结
实验内容:
1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
程序设计思路:用一维数组实现成绩的输入,然后分别定义求最大值、最小值与平均数的方法求出取出最高分与最低分的平均分,最后用冒泡排序将成绩从高到低输出
问题:数组的动态赋值出现问题
原因:没有掌握好数组赋值的基础知识
解决方案:查阅老师的课件
(三)代码托管(务必链接到你的项目)
https://git.oschina.net/hebau_cs15/Java-CS02yxy.git
1080881-20170328145955654-1291800236.png

转载于:https://www.cnblogs.com/ying-520/p/6634870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值