• 201521123051 《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);
        }
    }
    

    以上代码可否编译通过?哪里会出错?为什么?尝试改正?
    如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因?
    (1)不能编译通过。 System.out.println(i)出错,因为静态方法不能调用一个非静态成员。
    改正:创建一个自身的对象。
    (2)三个i,一个j。因为j是static只有一个存储空间,i是非static每创建一个对象都会形成一个存储空间。

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

    作用:完成对新对象的初始化。
    格式:修饰符 类名(形式参数...){    }
    类一定会有构造函数,但不是一定要我们去写。
    如果定义了一个有参的构造函数,为了保证正确性,系统不会创建无参构造函数,这时候,如果你还想允许无参构造,就必须显式的声明。

    3.使用 java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?分析原因?
    因为Math类里面的所有成员变量和成员方法都是静态的,可以直接调用
    The constructor Math() is not visible.(构造函数math()是不可见的),不需要使用new创建。

    4.什么是重载?什么是构造函数重载?在java.lang.Math类中举出1个函数重载的例子?怎么才能区分两个重载函数?
    重载,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
    构造函数的作用就是实例化一个对象。 当你new 了一个对象,会调用它的构造函数。构造函数重载就是可以写多个构造函数,参数类型、个数不同。和普通函数重载是一样的。

    重载举例

    区分:通过方法的参数的数量、顺序和类型

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

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

    对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

    6.阅读代码EmployeeTest.java,回答:
    为什么其属性均为private?这样设计有什么好处?
    为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
    为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)

    private 表示私有属性,只可以在内部访问使用;
    好处:封装之后类以外的本类定义的方面都有可能不能直接访问,这是为了保护数据的有效性,还有安全性的考虑

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

    public static boolean isMondayToFriday() {
        LocalDateTime localDateTime = LocalDateTime.now();
        int day = localDateTime.getDayOfWeek().getValue();
        if (day >= 1 && day <= 5) {
            return true;
        }
        return false;       
    }
    

    8.Runnable Jar(可选)
    我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打打成一个可运行的jar包,在命令行直接运行。改造题目7,使其从命令行接收参数,参数为年-月-日,将项目打成jar包,然后在命令行通过java -jar运行,并截图。参考文件如下:
    Eclipse生成Runnable jar

    3. 码云代码提交记录

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

    4. PTA实验

    题目集:jmu-Java-03-面向对象1-基础-封装继承 中的编程(5-1, 5-2, 5-3)
    一定要有实验总结

    利用Eclipse自动生成toString函数没有注意name,age,gender,id的顺序.PTA上一直不通过。半天才找到问题所在。
    `本次实验是Java的第3次上机,通过编程和上机实验理解了

    1. Java 语言是如何体现面向对象编程基本思想
      2)了解了类的封装方法
      3)如何创建类和对象
      4)了解了成员变量和成员方法的特性`
  • 相关阅读:
    Java反编译代码分析(一)
    Java信号量Semaphore
    Ubuntu SVN安装&使用&命令
    Android -- Dialog动画
    Android -- EventBus使用
    Android -- queryIntentActivities
    解决:fatal: authentication failed for https
    MySQL表名大小写敏感导致的问题
    Publish to a Linux Production Environment
    layer.js 弹窗组件API文档
  • 原文地址:https://www.cnblogs.com/xqy123/p/6530922.html
Copyright © 2020-2023  润新知