• 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:个数没有加到一起

    解决方法:

    (三)代码托管(https://git.oschina.net/hebau_cs15/zuoye.git)

  • 相关阅读:
    Linux系统开发笔记
    软件测试 | Chrome 浏览器+Postman还能这样做接口测试 ?
    yum 在线安装 nginx
    画图3D Paint 3D工作区黑屏
    InfluxDB 存储结构、读、写
    纯前端保存下载文件到本地
    umijs 配置的一些用法和解释 记录
    mongodb在双活(主备)机房的部署方案和切换方案设计
    mongodb oplog详解和格式分析
    麒麟操作系统上安装docker并加载镜像
  • 原文地址:https://www.cnblogs.com/hukauihui/p/6626228.html
Copyright © 2020-2023  润新知