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实验

    实验总结:学会了如何初始化一个对象,以及弄清类与对象的关系。
  • 相关阅读:
    通过Java获取图片的信息
    防止浏览器缓冲
    InitializingBean,DisposableBean
    php 直接跳出嵌套循环
    个推IGt.BaseTemplate.php,不仅有bug,还有bom头,好恶心!
    【洛谷】2473:[SCOI2008]奖励关【期望DP(倒推)】
    【BZOJ】4720: [Noip2016]换教室
    【BZOJ】4767: 两双手【组合数学】【容斥】【DP】
    【BZOJ】4318: OSU!【期望DP】
    【BZOJ】4985: 评分【DP】
  • 原文地址:https://www.cnblogs.com/zfy666/p/6535696.html
Copyright © 2011-2022 走看看