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

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

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

答:

1.①不可以通过编译。②图一中第15行出错。③因为此时i变量不属于static变量。④改正如图2所示。
2.①在内存中会有3个i,因为对于一个static字段来说每个类只分有一份存储空间。②在内存中会有一个j,因为对于一个非static字段来说每个对象会分一个存储空间。

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

答:

  1. 构造函数的作用:构造函数可以在类下对所需要运用的一些初始化对象进行类型的指定和具体赋值;
    2. 构造函数的编写格式:名字和类名相同,且没有返回类型语句;
    3. 如果一个类不写构造函数有默认的构造函数;
    4. 如果一个类中只有带参的构造函数,其不带参数的默认构造函数不存在
    3、使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?分析原因?

答:
因为java.lang.Math中所有的函数都是静态方法,所以不需要new;
没办法使用new Math()会出现"The constructor Math() is not visible"字样。
4、什么是重载?什么是构造函数重载?在java.lang.Math类中举出1个函数重载的例子?怎么才能区分两个重载函数?

答:

①重载就是方法名相同,参数的类型或个数不同的方法。
②构造函数重载就是可以写多个构造函数,参数类型或个数不同,允许方法名相同而形式参数不同的构造器同时存在的方法。
③如下图所示。(不太懂,但百度后是这样说的)
④可以通过不同的参数,比如:“void f1(char x){prt("f1(char)");}//①”
“void f1(String x){prt("f1(String)");}//②”
调用时,有:“f1('x');//①”
“f1("aabb");//②”
如图:

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为当前日期。(粘贴代码)

答:1.因为属性是不希望被人轻易知道的,所以要将属性保护好,只有设置为private,才不会随便被调用或是被改变
2.public Employee()
{
Employee("雇员1", 3000.0, 2017, 3, 5);
}

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)
{
System.out.println("上班时间");
return true;
}
else
{
System.out.println("休息时间");
return false;
}
}
提示:使用LocalDateTime, DayOfWeek
参考资料:
JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf
Java8DateTimeTest.java

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

  2. PTA实验
    题目集:jmu-Java-03-面向对象1-基础-封装继承 中的编程(5-1, 5-2, 5-3)
    1.进一步了解了toString的用法,通俗一点是就是用文字描述这个对象里各个变量是什么值,这个变量是什么类型的变量等。明白了之后
    就可以更好的使用这个方法了。
    2.写第二题的时候对初始化块和静态初始化块不太熟悉,所以上网查找了一些相关代码,才顺利写下去。而在查找过程中,发现了静态初始化的优先级是最高的这一点,意外收获。
    好文要顶 关注我 收藏该文

posted on 2017-03-11 20:10  我信了你的邪  阅读(109)  评论(1编辑  收藏  举报