201521123110 《JAVA程序设计》第3周学习总结
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() {
System.out.println(i);
}
public static void getj() {
System.out.println(j);
}
}
以上代码可否编译通过?哪里会出错?为什么?尝试改正?
如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因?
不能通过,第一是没有建立的getj()函数,把Test1getj()改为getj(),第二是public static void geti(),因为i不是static型的,如果将static删掉就可以了。 如果创建3个test对象,有3个i和1个j,因为j是静态的只能分配一个空间,而i则可以分配到三个空间。
2.构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
构造函数可以初始化数据,提高打代码的效率,编写格式为 pubilc Class test{};,有的,因为系统会默认有一个无参构造函数。
3.使用java.lang.Math类的方法时,为什么不需要new出一个对象,然后调用该对象上相应的方法?如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。
因为math类的函数是静态的,使用时不用创建。如果加个new则会出现编译错误。
4.什么是重载?什么是构造函数重载?怎么才能区分两个重载函数?
重载就是可以创建多个构造函数,区分的话就是据自变量的类型不同或者参数的个数来区分。
5.final修饰的变量不能改变,为什么如下代码可以正常运行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
final修饰的变量不能改变,是指final修饰的变量指向的对象不能改变,但值是可以改变的。
6.阅读代码EmployeeTest.java,回答:
为什么其属性均为private?这样设计有什么好处?
为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)
因为使用private能限制客户随意操作私有数据,让用户无法直接存取,而必须通过提供的方法进行才能存取私有数据,增加了安全性性。
public Employee(){ this("雇员1",3000,2017,3,5); }
public Employee(String name, double salary) { this.name = name; this.salary = salary; hireDay = getTime(); }
7.编写函数public static boolean isMondayToFriday()
功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。
提示:使用LocalDateTime, DayOfWeek
public static boolean isMondayToFriday(){ LocalDateTime time = LocalDateTime.now(); DayOfWeek day = time.getDayOfWeek(); int d=now.getDayOfMonth(); if(d>=1&&a<=5) { System.out.println("上班时间"); return true; } else { System.out.println("休息时间"); return false; } }
3.码云代码提交记录#
`
`
4. PTA实验#
本次实验用到了本周刚学的构造函数,刚开始打有点陌生,不过构造函数对长代码能方便许多。