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

    1. 本周学习总结

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

    2. 书面作业

    Q1.代码阅读
    
    public class Test1 {
        private int i = 1;//这行不能修改
        private static int j = 2;
    
        public static void main(String[] args) {
            geti();
            Test1.getj();
        }
    
        public static void geti() {
            System.out.println(i);
        }
    
        public static void getj() {
            System.out.println(j);
        }
    
    }
    
    以上代码可否编译通过?哪里会出错?为什么?尝试改正?
    如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因?
    

    答:

    如图所示编译不通过,有两处错误。(1)Test1.getj()尚未定义方法,不可直接调用。(2) geti为静态变量,无法直接调用非静态变量i。
    如果创建3个Test1对象,则有3个i和1个j。因为j为静态变量,只占用了一个内存,而i为非静态,所以占了3个内存。

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

    答:构造函数可以根据需要编写一个数据间的关系,也可以对数据进行初始化。格式为public/private 类名(){}。如果一个类中只有带参的构造函数,系统会为其自动生成一个无参构造函数。如果一个类中只有带参的构造函数,那么构造完便不会有无参构造函数。

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

    答:Math函数final类,不允许被继承,而且是私有的,外部无法调用,所以不需要new,会产生错误。

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

    答:重载就是函数名相同。构造函数重载就是可以写多个构造函数,参数类型、个数不同。和普通函数重载是一样的。

    要区分两个重载函数,可以使其参数类型不同,如一个int型,一个double型;或者可以使参数个数不同。

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

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

    答:当含有final属性的类被加载进内存并且被实例化的时候,就会为这个final属性分配内存,同时必须对该属性进行初始化,之后不可变。也就是说如果是基本类型的,那么它的值不能再改变;如果是对象,则引用不可变,而对象本身还是可以改变的。

    Q6.阅读代码EmployeeTest.java,回答:
    
    (1)为什么其属性均为private?这样设计有什么好处?
    

    答:防止被修改,保证了数据的安全性。

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

    答:

    
    class Employee
    {
       public Employee(String n, double s, int year, int month, int day)
       {
          name = n;
          salary = s;
          GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
          hireDay = calendar.getTime();
       }
       public Employee(){
           this("雇员1",3000,2017,3,5);
       }
    
    
    (3)为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)
    

    答:

    public Employee(String n,double s){
           this(n,s,Calendar.getInstance().get(Calendar.YEAR),Calendar.getInstance().get(Calendar.MONTH)+1,Calendar.getInstance().get(Calendar.DAY_OF_WEEK));
       }
    
    
    Q7.编写函数public static boolean isMondayToFriday()
    

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

    答:

    
    import java.time.LocalDate;
    import java.time.DayOfWeek;
    
    public class Time {
        public static boolean isMondayToFriday(){
            LocalDate now = LocalDate.now();
            DayOfWeek dayOfWeek = now.getDayOfWeek();
            int d=now.getDayOfMonth();
            if (d>=1&&d<= 5) 
            {
                System.out.println("上班时间");
                return true;
            }
            else
            {
                System.out.println("休息时间");
                return false;
            }       
        }
    
    public static void main(String[] args) {
    isMondayToFriday();
        }
    
    }
    
    

    3. 码云代码提交记录

    在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
    

    4. PTA实验

    实验总结:学会了如何初始化一个对象,以及弄清类与对象的关系。
  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/zfy666/p/6535696.html
Copyright © 2011-2022 走看看