201521123076《java程序设计》第三周学习总结
1. 本周学习总结

2.书面作业
- Q1.代码阅读 - 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?请分析原因?
A1:在Test1getj(); System.out.println(i);这两条语句不能通过编译,因为在静态方法geti()中调用了非静态属性‘i’,调用类的方法的格式为类.方法。
改正:Test1.getj(); 在geti()中实例化一个Test1的对象,用对象.i即可;
如果创建3个Test1对象,内存中有3个i,1个j;原因:静态属性为类的属性,非静态属性为对象的属性,新建三个Test1对象,Test1类只初始化了一次。
- Q2.构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
A2:构造函数对类进行初始化操作;编写格式为 pubilc ClassName(有参或无参){...};如果一个类不写构造函数,系统默认给它一个无参的构造函数;如果一个类中只有带参的构造函数,它就没有没有不带参数的默认构造函数。
- Q3.使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?分析原因?
A3:会出现‘The constructor Math() is not visible’错误,即构造函数 Math()是不可见的。
我们来看Math类的部分源代码:
	public final class Math {
	    /**
	     * Don't let anyone instantiate this class.
	     */
	    private Math() {}
	    /**
	     * The {@code double} value that is closer than any other to
	     * <i>e</i>, the base of the natural logarithms.
	     */
	    public static final double E = 2.7182818284590452354;
	    /**
可以很清楚地看到’ Don't let anyone instantiate this class.’ 编写Math类的人不让我们实例化它。
Math类中的方法都是静态方法,静态方法属于类,所以调用数学方法的时候直接用类.方法()即可,无需new一个对象来使用,而 ‘private Math() {}’的存在,也不让我们new;
- Q4.什么是重载?什么是构造函数重载?在java.lang.Math类中举出1个函数重载的例子?怎么才能区分两个重载函数?
A4:重载即多个方法拥有相同的方法名但参数不同,可以是参数类型不同,参数个数不同,参数顺序不同。要注意的是,只有返回类型不同不能算是重载(编译不能通过)。下图为Math类max函数重载的例子,至于怎么区分?看其参数情况吧。

- Q5.final修饰的变量不能改变,为什么如下代码可以正常运行? - final int[] NUMBS= {1,2,3,4,5};
 NUMBS[2] = 1;
 
A5:要注意,这里final修饰的是NUMBS这个数组对象,即这个对象的引用不能被修改,而非这个引用所指向的一系列值不能被修改。若:NUMBS = null;就会发生错误,它让被final修饰的NUMBS对象重新指向null,当然不行。
- Q6.阅读代码EmployeeTest.java,回答:
 为什么其属性均为private?这样设计有什么好处?
 为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
 为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)
A6:属性设置为private的目的是为了不让其他人直接修改属性值,而只能通过封装类的人提供的方法进行操作,这样就对这些信息起到了保护效果。
	public Employee()
	{
	    this("雇员1", 3000.0, 2017, 3, 10);   //name,salary,year,month,day;
	}
	public Employee(String n, double s) {
	    name = n;
	    salary = s;
	    Calendar  calendar = Calendar.getInstance();
	    hireDay = calendar.getTime();
	}
- Q7.编写函数public static boolean isMondayToFriday()
功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。
提示:使用LocalDateTime, DayOfWeek
	public static boolean isMondayToFriday(){
	        LocalDateTime now = LocalDateTime.now();
	        DayOfWeek week = now.getDayOfWeek();
	        //System.out.println(week.getValue());
	        if(week.getValue()>=1&&week.getValue()<=5){
	        	 System.out.println("上班时间");
	        	return true;
	        }
	        System.out.println("休息时间");
	            return false;
	    }
- Q8.Runnable Jar(可选) 
 我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打打成一个可运行的jar包,在命令行直接运行。改造题目7,使其从命令行接收参数,参数为年-月-日,将项目打成jar包,然后在命令行通过java -jar运行,并截图。- public static boolean isMondayToFriday(){
 Scanner in = new Scanner(System.in);
 String now1 = in.nextLine();
 String[] sourceStrArray = now1.split("-");
 int year = Integer.valueOf(sourceStrArray[0]);
 int month = Integer.valueOf(sourceStrArray[1]);
 int day = Integer.valueOf(sourceStrArray[2]);
 LocalDateTime now = LocalDateTime.of(year,month,day,1,1);
 DayOfWeek week = now.getDayOfWeek();
 if(week.getValue()>=1&&week.getValue()<=5){
 System.out.println("上班时间");
 return true;
 }
 System.out.println("休息时间");
 return false;
 }
 
实验截图:

3. 码云代码提交记录截图:

4. PTA实验
- 题目集:jmu-Java-03-面向对象1-基础-封装继承 中的编程(5-1, 5-2, 5-3) - 5.1 掌握了构造函数,Override Of toString(),创建对象数组。 
- 5.2 更进一步了解了类-对象之间的一些联系。static属性和静态块与初始化块的搭配使用来完成一些需求。如获悉已经实例化多少个对象(本题通过id的值来判断)。 
- 5.3 IDE的自动生成Getter,Setter,toString()为我们提供了极大的便利。 
 
201521123076《java程序设计》第三周学习总结的更多相关文章
- Java程序设计第三周学习总结
		1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ... 
- 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈
		对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ... 
- 20145213《Java程序设计》第九周学习总结
		20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ... 
- 20145213《Java程序设计》第二周学习总结
		20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ... 
- 21045308刘昊阳 《Java程序设计》第九周学习总结
		21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ... 
- 20145330孙文馨   《Java程序设计》第一周学习总结
		20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ... 
- 20145337 《Java程序设计》第九周学习总结
		20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ... 
- 《Java程序设计》第九周学习总结
		20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ... 
- 20145236 《Java程序设计》第九周学习总结
		20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ... 
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
		20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ... 
随机推荐
- Hadoop1.0.3安装部署
			0x00 大数据平台相关链接 官网:http://hadoop.apache.org/ 主要参考教程:http://www.cnblogs.com/xia520pi/archive/2012/05/1 ... 
- 关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1
			关于IMP由拥有DBA权限的用户EXP数据时,数据存放表空间的几种情况(IMP-00013) -1 ORACLE公司来培训BIEE,带了一个DEMO的DMP文件,其导出用户DBO具有DBA权限,缺省表 ... 
- C# 调用 C++ DLL方法
			在C# 中,可以通过 DllImport 调用C++ 的非托管DLL程序. VS2010中C#调用C++的DLL示例: 一.新建C++ DLL程序 1.新建 C++ Win32项目,类型为DLL. 生 ... 
- session统计在线人数
			/* * 当不涉及验证码的时候 */ //统计游客(未登录)人数 $map = array('session_expire'=>array('gt',NOW_TIME),'session_dat ... 
- Java中parseInt()和valueOf(),toString()的区别
			1.parseInt()就是把String类型转化为int类型. 如 String a= "123"; int b = Integer.parseInt(a); 这样b就等于123 ... 
- tensorflow笔记(四)之MNIST手写识别系列一
			tensorflow笔记(四)之MNIST手写识别系列一 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7436310.html ... 
- mutex和CRITICAL_SECTION,互斥和临界区
			本文不没有任何知识可讲,只是帖上自己测试的结果. 想看底层原理的可以直接关闭. 不过对于急着要选方案的人,倒提供一些帮助. 先说一些无关紧要的废话: ========================= ... 
- 【Centos】yum 安装mariaDB
			[dream361@za ~]$ sudo yum search mariadb #查找需安装的包 mariadb-libs.x86_64 : The shared libraries require ... 
- openstack配置
			参考林海峰老师的配置教程 http://blog.51cto.com/9161406/1839667 
- 记一次Spring aop的所遇到的问题
			由来 项目中需要实现某个订单的状态改变后然后推送给第三方的功能,由于更改状态的项目和推送的项目不是同一个项目,所以为了不改变原项目的代码,我们考虑用spring的aop来实现. 项目用的是spring ... 
