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

    1. 本章学习总结

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

    http://naotu.baidu.com/file/9fe346029d5b41fae0d11c63e93b639a?token=a2940b61753003cc

    2. 书面作业

    **Q1.代码阅读 **

    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);
        }
    
    }
    

    以上代码可否编译通过?哪里会出错?为什么?尝试改正?
    如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因?

    代码不能通过编译,第七行和第十一行会出错,7:该方法test1getj类型test1()是未定义的;11:不能让i一个静态的引用非静态字段。
    如果创建3个Test1对象,有内存中有3个i,1个j;
    分析:因为static不会让每个对象拥有,而是只有一个存储空间,所以内存中只有1个j,而非static则是每个对象都有一个存储空间,所以内存中有3个i。
    

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

    构造函数的用处:数据成员初始化,如果没有指定初始值,则会使用默认值初始化。
    编写格式:public(private)类名(){ }
    如果一个类不写构造函数,编译程序会自动加入一个无参数,内容为空的构造函数。
    如果一个类中只有带参的构造函数,它没有不带参数的默认构造函数。 
    

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

    因为java.lang.Math类的函数都为静态的,直接用类名调用即可,不需要new;
    如果new Math()会编译出错,
    分析:图中Math类源代码有private Math() {},说明只能在类内部new Math(),而不能在类外部实例化。
    

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

    重载就是函数名或方法名相同,但参数列表(个数或类型)不同,返回类型可同可不同。
    重载构造函数就是可以定义多个构造函数,只要参数类型或个数不同。
    根据参数列表(个数或类型)来区分两个重载函数。
    

    java.lang.Math类中函数重载的例子:

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

    final int[] NUMBS= {1,2,3,4,5};
    NUMBS[2] = 1;
    
    final修饰的变量不能改变,是指final修饰的变量指向的对象不能改变,但素对象的值是可以改变的。
    所以如下代码是可以正常运行哒!
    

    **Q6.阅读代码EmployeeTest.java,回答:
    为什么其属性均为private?这样设计有什么好处?
    为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
    为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码) **
    1.因为属性为private,在Employee类外部无法对其修改,所以很好的保护了雇员的信息。
    2.

    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);
          // GregorianCalendar uses 0 for January
          hireDay = calendar.getTime();
       }
    
       public Employee(){
           this("雇员1",3000,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);
          // GregorianCalendar uses 0 for January
          hireDay = calendar.getTime();
       }
    
       public Employee(){
           this("雇员1",3000,2017,3,5);
       }
       
     
       public Employee(String n,double s){
           name=n;
           salary=s;
           Calendar rightNow = Calendar.getInstance();
           hireDay=rightNow.getTime();   
       }
    

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

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

    3. PTA实验总结及码云上代码提交记录

    3.1本周Commit历史截图

    3.2 实验总结

    1.学会了构造有参函数和无参函数并且会定义类;
    2.static,this,final关键字的使用;
    3.初始化块这里不太懂;
    4.码云上提交一直不行,然后重新关联了,就OK了。
    
  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/TSlover/p/6534993.html
Copyright © 2011-2022 走看看