201521123059 《Java程序设计》第三周学习总结
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?
答:以上代码编译不能通过。编译时在 System.out.println(i)处出错,因为静态方法不能调用一个非静态成员。如果改正的话需要在这个静态中创建一个自身的对象。
如果创建3个Test1对象,在内存中有3个i,1个j。
2.构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
答:构造函数的作用是对类进行初始化操作,如初始化类的属性值。如果一个类不写构造函数它也会有构造函数,因为编译器会自动生成一个默认为空的构造函数。如果一个类中只有带参的构造函数,他没有不带参数的默认结构函数了,为了确保准确性,系统不会创建无参构造函数,这时候,如果还想允许无参构造,就必须显式的声明一个。
格式为
```
public void test(String a){
另一些需要的代码
}
```
3.使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?
答:由于构造函数被声明为私有的,就是说明不能被外部调用,所以static修饰的都可以直接用类名去调用。如果强行使用new Math()则会系统报错,编译不成功。
4.什么是重载?什么是构造函数重载?在java.lang.Math类中举出函数重载的例子?怎么才能区分两个重载函数?
java.lang.Math的源代码如下
答:重载就是方法名相同,参数(个数或类型)不同(称之为签名不同);构造函数的重载是从一个构造函数中调用另一个构造函数;可以通过不同的参数区分重载函数,因为不仅参数类型有的差异,而且参数顺序也会不同。如果利用函数返回值来区分时,是不能分别出来的,因为编译器分辨不出该调用哪个函数,所以利用函数返回值不能分辨两个重载函数。
5.final修饰的变量不能改变,为什么如下代码可以正常运行?
final int[] NUMBS= {1,2,3,4,5};
NUMBS[2] = 1;
答:final是修饰引用类型变量的,final修饰的变量不能改变其值,但对于引用对象的值可以改变 。
6.阅读代码EmployeeTest.java,回答:
1.为什么其属性均为private?这样设计有什么好处?
2.为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
3.为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)
解答:
1.属性均为private这样的好处是用户不能够随意操作类的成员变量,或者用户可以通过自己所指定的方法来操作类成员变量。
2.代码如下
public Employee(String name, folat salary, int year, int month, int day) {
GregorianCalendar calendar1 = new GregorianCalendar(year, month, day);
hireDay = calendar.getTime();
}
public Employee() {
this("雇员1", 3000.0, 2017, 3, 5);
}
3.代码如下
public Employee(String name, double salary , Date hireday){
getName();
getSalary();
getHireDay();
}
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;
}
3. 码云代码提交记录
.在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
4. PTA实验
.题目集:jmu-Java-03-面向对象1-基础-封装继承 中的编程(5-1, 5-2, 5-3)
.一定要有实验总结
实验总结
(1).实验课上老师教我们在在eclipse里面自动生成toStrig的方法,这可以快速的写成toString函数而且可以有效的减少我们的犯错。
(2).在eclipse里面写的Main函数是与PTA里面的要求不一定一样,在eclipse里面编写时尽量用Main不用Main1~~~等等,因为在PTA里面只要Main能编译成功,一般我们在eclipse里面编写完成时我们都会忘记改Main函数的Main,所以为了加快效率我们尽量一开始就用Main。
(3).setter/getter,设置器和访问器。我们之前说到了,通常将成员变量声明为private,是为了防止直接访问成员变量而引起的恶意操作。但是,这并不是不允许访问,我们可以通过setter和getter方法来完成。Eclipse可以自动生成getter和setter方法,在左上角Source菜单栏里
(4).通过实验我们了解到了toString和deepToString的区别,即Array.toString方法当接受的数组中还有数组时打印出的仅是该内嵌数组的名字,Array.deepToString方法会将内嵌数组的内容也打印出来,不管数组内嵌多少层,都会循环递归到最内层的数据.另外,当数组中的数组有死循环般的引用时,也有相应的保护机制防止死循环 ;deepToString方法主要用于多位数组 而toSring不能用在多维数组中
(5).PTA答案的格式比较单一,系统只默认了一种对的输出格式,所以在我第一次实验写好时,而且输出答案都是正确的,但在PTA里面提交了挺多次都不成功,直到我问了同学才知道只要有一个空格不符合格式要求就会不成功,并在同学的帮组下成功提交了实验。所以在eclipse里面执行输出时一定要按照格式要求输出。
(6).写实验之前先把实验构思好,大概写出伪代码,不然边想编写时容易出错也容易出现暂时没思路。
201521123059 《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程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
随机推荐
- python enumerate 枚举函数用法
enumerate()说明 enumerate()是python的内置函数 enumerate在字典上是枚举.列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enum ...
- HDU 3001 Travelling:TSP(旅行商)【节点最多经过2次】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题意: 有n个城市,m条双向道路,每条道路走一次需要花费路费v.你可以将任意一个城市作为起点出发 ...
- 一步一步学多线程-ThreadLocal源码解析
上网查看了很多篇ThreadLocal的原理的博客,上来都是文字一大堆,费劲看了半天,大脑中也没有一个模型,想着要是能够有一张图明确表示出来ThreadLocal的设计该多好,所以就自己看了源码,画了 ...
- Spring (三)
1.1 Spring的事务管理 1.1.1事务 事务:指的是逻辑上一组操作,要么全部成功,要么全部失败. 事务特性: 原子性:事务不可分割. 一致性:事务执行前后,数据完整性保存一致. 隔离性:一个事 ...
- 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)
微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...
- OpenCms模块创建图解
登录OpenCms后,切换到"管理(Administration)"视图,点击"模块管理",这时窗口显示已安装模块的列表. 确定当前不在"online ...
- C语言指针(三)指针传递给函数
实例1:传递一个无符号的long型指针给该函数 #include<stdio.h>#include<time.h>void getSeconds(unsignedlong*pa ...
- maven使用实战
maven使用实战 创建项目 在eclipse中创建maven项目之后,会生成.classpath / .setting / .project 三个文件或者文件夹 .classpath 这个文件是用来 ...
- 如何删除当前正在使用的SQLLite文件?
从网上搜索一大堆,套路几乎相同,但自己就是不行,怎么也不行,为什么不行呢?不行的话别人肯定不来坑博友了呀.然后放了一会,去拿下午茶回来,再次来看,恍然大悟,What?这么简单. 一开始代码如下: he ...
- SpringMVC的@RequestParam的解释
自SpringMVC4.2之后,RequestParam内部有4个参数: 1.String name 2.String value 3.boolean required 4.String defaul ...