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


    1. 本章学习总结

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

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

    答:不能编译,将代码放到eclipse中出现以下问题:
    


    通过图示,很容易的知道,这两个问题就是:
    1.没有可调用的函数Test1getj()。
    2.public static void geti(){
        System.out.println(i);
        }根据static方法不能访问非static的属性与方法,所以,System.out.println(i)不能调用非静态变量i。
    
    改正:
    1.可以建立先关方法private static void Test1getj();
    2.将public static void geti()改成:public void geti()。
    

    如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因?

    答:3个i,1个j,因为非static的对象和static的对象所分配的存储空间不一样,相同的static的对象会分配在同一存储空间中,而非static对象每创建一个,就会被放在新的存储空间。
    

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

    答:
       构造函可以理解为构造方法。
      ·它的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域;
      ·如果定义类时,没有撰写构造函数,编译程序会自动加入一个无参函数、内容为空的构造函数;
      ·根据课本的结论如果自行撰写了构造函数,编译程序就不会自动建立默认构造函数。所以如果一个类中只有带参的构造函数,它就不会有不带参数的默认构造函数。
    

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

    答:·通过查询java的API文档,Math不是一个静态类,但是他的方法是静态的。根据静态的定义,如果一个方法是静态的,它是属于整个类的,可以用类名.方法直接访问,也就不用new出一个实例对象来进行访问了。
        ·如果new Math()会产生The constructor Math() is not visible的错误。
    

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

    答: 重载是指方法名相同,参数的个数或者类型不同。
        构造函数重载是指函数的函数名与类名相同,自变量的类型不同或者参数的个数不同。
    
    举例:
    class Person{
        private String name;
        private int age;
         
        public Person(){
            super();
        }
         
        public Person(String name,int age){
            super();
            this.name = name;
            this.age = age;
        }
    }
    对于函数Person进行多次使用,但是它的参数不一样。
    
    java.lang.Math类中的例子:
    

    通过传入的参数个数和类型,进行判断,调用相适的方法
    

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

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

    答:final修饰的变量不能改变是指他所指的变量不能变,但是对象的内容可以变化。
    

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

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

    答:·每个对象都有各自的属性和方法.但是有的属性涉及安全因素或秘密因素不能让外面的程序调用,所以就用到了private。
        ·经过它定义的变量只能在此对象内部调用,外部程序就无法调用,也就是说只能供其自身调用。
        ·举个有趣的例子:比如某个人是一个对象,那么他的血液就肯定是私有变量,只能供其自身调用来维持人的状态.而如果将血液定义成public(公共的)的话,随便其他人都可以改变他血液的状态,你随便把他的血液值设为逆流,那他不就挂了,哈哈。。。
    

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

    答:
    
    public Employee(){
        name = 1;
        salary = 3000;
        GregorianCalendar calendar = new GregorianCalendar(2017, 3-1 , 5);
        hireDay = calendar.getTime();
    }
    

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

    答:
    
    public Employee(String n,double s){
        name = n;
        salary = s; 
        GregorianCalendar calendar = new GregorianCalendar(GregorianCalendar.year, GregorianCalendar.Month-1 , GregorianCalendar.day);
        hireDay = calendar.getTime();
    }
    

    7.编写函数public static boolean isMondayToFriday()

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

    3.码云上代码提交记录

    4.PTA实验总结

    实验碰到的问题、思考、收获与解决方案
    实验一:使用eclipse可以自动生成settter,getter以及toString函数,大大减少了码代码的时间,能提高效率。
    实验二:在实验一的基础上用到了静态初始化,属性id为每个对象的唯一标识,即每个对象的id都不一样。不能被随意修改,能不错的保护信息。
    实验三:用到了Arrays.deepToString输出Rectangle数组与Circle数组。
    总体上三道题都有相似之处。
  • 相关阅读:
    Android SwitchButton(滑动开关)
    创建您自己的Maven模板
    Bag标签成一条线的代码来实现中国字
    rabbitmq的java简单的实现
    【七】注入框架RoboGuice使用:(Your First Custom Binding)
    Sqlmap渗透测试是常用语句
    Android NOtification 使用(震动 闪屏 铃声)
    Android loader 详解
    Android实现获取本机中所有图片
    Android保存图片到系统图库
  • 原文地址:https://www.cnblogs.com/Min21/p/6533588.html
Copyright © 2020-2023  润新知