• Java 第三周总结


    1.本周学习总结

    2.书面作业

    1.代码阅读

    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() {
                Test1 test=new Test1();
        	System.out.println(test.i);
    	}
    
    	public static void getj() {
      	  System.out.println(j);
    	}
    
    }
    

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

    • 编译无法通过,i会报错,它不是一个静态的对象。第二行不能更改,所以增加Test1 test=new Test1();
    • 创建了三个Test1对象,内存中有三个i,一个j。因为静态对象的每个类就只有一个存储空间,三个j都是同一个。但是i不是静态对象,所以每次都会创建新的i,所以有三个。

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

    • 构造函数最大的好处是方便,能够便捷的快速调用编写好的一些程序,规则,同时也能区不同类型,用途的不同代码。
    • 编写格式 public(或者private)类名(有无参数都行){}构造函数不写返回类型。
    • 没有。如果一个类,没有定义构造函数,那么系统就会默认有一个无参的构造函数。但是如果定义了一个有参函数,为了保证正确性,系统不会创建无参构造函数。这时候如果还想允许无参构造,就必须显式的声明一个。

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

    • Math()是外部类,Math()类里面的方法是静态的。所以直接使用类访问就可以了。
    • 如果new Math(),那么也找不到math下面的其他方法。

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

    • 重载,简单来说就是函数活着方法有相同的名称,但是参数列表不相同的情况。可使函数、运算符等处理不同类型数据或接受不同个数的参数。
    • 函数名可以相同,但是特征标必须不同。用函数名来确定函数的不同,用特征标来确定重载函数的不同。同时,参数的顺序,类型不同也可以确定重载函数的不同。

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

    final int[] NUMBS= {1,2,3,4,5};
    NUMBS[2] = 1;
    
    • 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。这里引用的是int型的变量,但是他的内容还是可以改变的,所以代码可以正常运行。输出NUMBS[2]的答案为1;

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

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

    • 私有的,只能对自己使用,对别的类是不能访问的,也就是说对于别的类来说是隐藏不可见的。如果所有方法都public,万一被调用了本来应该封装的方法,那么很容易造成整个相关程序的修改。危害很大。

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

     public Employee(){
    		this("雇员1",3000.0,2015,3,5);
    	   }
    

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

    public Employee(String n, double s, LocalDate hireDay)
       {
      name = n;
      salary = s;
      hireDay = LocalDate.now();
       }
    

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

    功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。

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

    提示:使用LocalDateTime, DayOfWeek

    参考资料:
    JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf
    Java8DateTimeTest.java

    3.码云

    4. PTA实验总结

    • 初始化块的修饰符只能是static,使用static修饰的初始化块被称为静态初始化。初始化块里的代码可以包含任何可执行性语句,包括定义局部变量 ,调用其他对象的方法,以及使用分支,循环语句等。{}单纯被一个大括号括起来的叫初始化块,static{}叫做静态初始化。
    • 静态初始化的等级是最高的,会最优先执行
    • Shift+Alt+S,Generate toString()自动补全toString;Generate Getter and Setters,自动添加。
    • Private ,编程语句在模块级别中使用,用于声明私有变量及分配存储空间。使用private修饰符可以完全隐藏类的成员,使得不能从类外直接访问它们。相对的,使用public修饰符允许任何类访问类的成员。
    • 在main函数里调用新建的类中定义的函数,必须先new一个对象,然后对这个对象进行操作。
    • 这次的实验感觉不会太难,而且数量也比较适中,感觉这样挺好的。。。
  • 相关阅读:
    vim的一些基本配置
    做菜好吃的小技巧02
    SQLServer创建用户登录
    Python库整理
    centos7开机界面出现多个选项
    Elasticsearch和MongoDB简要对比
    OLTP与OLAP
    CentOS7命令总结
    windows下快速删除命令
    Idea配置热部署
  • 原文地址:https://www.cnblogs.com/ycll/p/6529410.html
Copyright © 2020-2023  润新知