zoukankan      html  css  js  c++  java
  • 201521123067 《Java程序设计》第3周学习总结

    201521123067 《Java程序设计》第3周学习总结


    1. 本周学习总结

    初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识组织起来。请使用纸笔或者下面的工具画出本周学习到的知识点。截图或者拍照上传。参考资料:百度脑图 XMind

    2. 书面作业

    (1)代码阅读

    public class Test1 {
    private int i = 1;//这行不能修改
    private static int j = 2;
    
    public static void main(String[] args) {
        geti();
        Test1getj();
    }
    
    public static void geti() {
        System.out.println(i);
    }
    
    public static void getj() {
        System.out.println(j);
    }
    }
    

    ①以上代码可否编译通过?哪里会出错?为什么?尝试改正?

    答:编译不可通过。Test1getj()会出错,因为找不到这个方法;System.out.println(i)这行也会出错,因为i并不是static类型的,静态的方法不能调用非静态的值,应将public static void geti()改为 public static void geti(int i)。
    

    ②如果创建3个Test1对象,有内存中有几个i,几个j?

    答:i和j各一个。
    

    (2)构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?

    答:●构造函数的作用:在创建对象时初始化对象,为对象成员变量赋初始值。
      ●其编写格式是:
        public+函数名(参数)
        {
           函数的内容
        }
        构造函数的命名必须和类名完全相同。
        ●如果一个类不写构造函数,编译器中会默认有一个构造函数。
        ●如果一个类中只有带参的构造函数,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。因此它有不带参数的默认构造函数。
    

    (3)使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?

    答:如果一个方法是静态的,它是属于整个类的,可以用类名.方法来直接访问,不需要new一个新的对象,只需要在代码的头部加上import java.lang.Math即可,而不需要new一个新的对象。由于构造函数被声明为私有的,就是说明不能被外部调用,所以不能new出来一个新的对象,如果new Math()会产生编译错误。
    

    (4)什么是重载?什么是构造函数重载?在java.lang.Math类中举出函数重载的例子?怎么才能区分两个重载函数?

    答:●重载:是指函数或者方法有相同的名称,但是参数列表不相同的情形。
      ●构造函数的重载:构造函数具有相同的名字,而参数的个数或参数类型不相同。
      ●在java.lang.Math类中函数重载的例子:static int getExponent(double d)和static int getExponent(float f)
      ●区分两个重载函数:虽然函数有相同的名称,但是参数列表不相同,所以可以根据参数列表来区分两个重载函数。
    

    (5)final修饰的变量不能改变,为什么如下代码可以正常运行?

    final int[] NUMBS= {1,2,3,4,5};
    NUMBS[2] = 1;

    答:因为final修饰引用类型变量,变量的值(引用)不能修改,但是变量指向的对象的值可以修改。就如指针一样,指向一方的箭头方向不能变,而引用的东西的具体内容可以改变,所以这段代码可以正常运行。
    

    (6)阅读代码EmployeeTest.java,回答:

    ①为什么其属性均为private?这样设计有什么好处?

    答:因为属性是不希望被人轻易知道的,所以要将属性保护好,只有设置为private,才不会随便被调用或是被改变
    

    ②为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)

    代码如下:
    public Employee() 
    {
       Employee("雇员1", 3000.0, 2017, 3, 5);
    }
    

    ③为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)

    代码如下:
    public Employee(String ming, double gongzi, int year, int month, int day) 
    { 
        name = ming;
        salary = gongzi;
        GregorianCalendar c= new GregorianCalendar(year, month - 1, day);
        hireDay = c.getTime();
    }
    public Employee(String ming, double gongzi) 
    {
        Employee(ming, gongzi, Calendar.getInstance().get(Calendar.YEAR), 
        Calendar.getInstance().get(Calendar.MONTH) + 1, 
        Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
    }
    

    (7)编写函数public static boolean isMondayToFriday()功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。提示:使用LocalDateTime, DayOfWeek 参考资料:JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf Java8DateTimeTest.java

    代码如下:
    public static boolean isMondayToFriday() 
    {
        LocalDateTime time = LocalDateTime.now();
        int day = time.getDayOfWeek().getValue();
        if (day >= 1 && day <= 5) 
        {
            System.out.println("上班");
            return true;
        }
        else
        {
            System.out.println("休息");
            return false;
        }       
    }
    

    3. 码云代码提交记录

    4. PTA实验总结

    ●问题:

    ①总体来说,这次的三道编程题难度都不大,相对来说比第二次简单。

    ②在做第一道题的时候,我不知道如何覆盖toString函数;刚开始不知道怎样编写有参构造函数对name,gender,age赋值。

    ③起初第二题中的初始化块我不会做;后来把代码打好之后,在eclipse能正常运行并且结果时正确的,但复制到PTA上一直出错。

    ④在第三题中,我把public String tostring()错打成了public string tostring(),所以一直出错。

    ●解决:

    ①第一题通过百度搜索知道了如何正确覆盖toString函数,于是就做出来了。

    ②第二题我问了同学,得知做初始化块的方法,这道题也打出来了,但是在PTA上无法通过。

    ③第三题我找了很久的错误原因,终于发现是大小写的问题,修改好之后就能正常运行了。

  • 相关阅读:
    事务
    handler
    codeforces 27E Number With The Given Amount Of Divisors
    暑期实践日志(五)
    暑期实践日志(四)
    暑期实践日志(三)
    暑期实践日志(二)
    暑期实践日志(一)
    数论 UVALive 2756
    数论 UVALive 2911
  • 原文地址:https://www.cnblogs.com/yjliao/p/6513078.html
Copyright © 2011-2022 走看看