• 学号:201521123116 《java程序设计》第三周学习总结


    1. 本周学习总结

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

    书面作业

    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?

    答:不能编译通过。System.out.println(i)会出错。static是属于类的,非Static是属于对象,每个对象的值可能都不一样。geti是静态方法不能直接调用未经static定义的变量i。

    修改后的代码:

    public class Test1 {
        private int i = 1;//这行不能修改
        private static int j = 2;
    
        public static void main(String[] args) {
            geti();
            Test1getj();//编写Test1getj()静态方法
        }
    
        public static void Test1getj() {
            // TODO Auto-generated method stub
            System.out.println(j);
        }
    
        public static void geti() {
            Test1 t=new Test1();//新建一个Test1对象
            System.out.println(t.i);//调用它的属性
        }
    
        public static void getj() {
            System.out.println(j);
        }
    
    }
    Q2. 构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
    答:(1)构造函数可以简单使用函数,得到我们所需的数据,例如求圆的周长或是面积,直接调用函数得出,不需要在代码中重复书写圆的周长和面积的公式,节约成本
    (2)编写格式是private/public void/类型(int,String等等) 方法名{}
    (3)有,系统默认有一个无参构造函数;若是只有带参函数,需要自己构建,系统只默认有无参构造函数

    Q3.使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?分析原因?
    答:Math是final类,不是static类。且构造函数被声明为privata,说明不能被外部调用,所以不能new出来一个新的对象。Math类的所有方法都是静态方法,使用Math.方法名就可以。 强行使用new会提示`The constructor Math() is not visible`此构造函数Math()不可见。

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

       java.lang.Math类中函数重载:
       

    答:重载即多个方法拥有相同的方法名但参数不同(参数类型不同,参数个数不同,参数顺序不同)。在一个类中定义多个构造函数,只要构造函数的参数不同,称为重载构造函数。根据重载函数中参数的类型,个数,顺序的不同
    来区分两个重载函数。
     

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

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


    Q6:阅读代码EmployeeTest.java,回答:

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

    答:用private封装了类私有数据,不希望被外部的类访问。这样可以让用户无法直接存取,而必须通过管理者提供的操作方法,经过定义的流程才有可能存取私有数据。增强了保密性和安全性。

     6.2为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日

     6.3为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。

     

     Q7.编写函数public static boolean isMondayToFriday()
     功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。
     提示:使用LocalDateTime, DayOfWeek

    public static boolean isMondayToFriday(){
            LocalDateTime now = LocalDateTime.now();
            DayOfWeek dayOfWeek = now.getDayOfWeek();
            if(dayOfWeek!=DayOfWeek.SATURDAY && dayOfWeek!=DayOfWeek.SUNDAY){
                System.out.println("上班时间");
                return true;
            }
            else{
                System.out.println("休息时间");
                return false;
            }
                
            
        }

    3. 码云代码提交记录

    4.PTA实验总结

    • 答:在IDE中,可以使用程序代码自动产生功能来生成取值方法,点击source—>Generate Constructors from Superclass,创建一个空参的构造函数;点击Source –> Generate Getters and Setters自动生成Getter和Setter方法,可提高效率。
    • 初始化类与对象时,先后的顺序应该是静态初始化块,初始化块,构造函数。
    • 在Main()中调用时,跟Math一样,直接调用,但要注意参数,要根据自己所要调用的函数写进对应的参数,否则将调用错,达不到自己要的结果
     
  • 相关阅读:
    Spring----Day03
    Spring----Day02
    python
    python
    python
    python
    python
    python
    python
    python
  • 原文地址:https://www.cnblogs.com/gysbettrer/p/6534569.html
Copyright © 2020-2023  润新知