201521123002 《Java程序设计》第3周学习总结
1. 本周学习总结
初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识组织起来。请使用纸笔或者下面的工具画出本周学习到的知识点。截图或者拍照上传。

2. 书面作业
- 代码阅读
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?请分析原因?
答:不能通过,放入eclipse中马上报错显示
原来是因为静态方法中不能调用非静态成员。
如果要修改的话按照提示可以马上修改好,但是因为限制了不能修改第一行,所以好像就没有那么容易了,但是当我们了解了为什么静态方法不能调用非静态成员的原因后调用静态方法或属性可以不用new对象,但是非静态方法或属性需要new对象才能使用,如果非静态变量已经创建了对象那么静态方法就能调用所以可以这样
public static void geti(){
System.out.println((new Test1().i);
}
如果创建3个Test1对象,有内存中有3i,1j.
因为非静态变量成员属于每一个对象,而静态成员属于类。
- 构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
答:构造函数
- 作用:对类进行初始化
- 编辑格式:构造函数的名称和类名相同/无返回类型/可以带参或者不带参。
举个例子
public class Test{
public Test(){
System.out.println("Test is initializing!");
}
public static void main(String args[]){
Test test = new Test();
}
}
- 有构造函数,系统会默认一个无参构造方法
- 如果自己编写了带参的构造函数,系统就不会提供不带参的构造函数了,需要自己编写。不信可以用eclipse验证一下。
- 使用
java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?分析原因?
答:查看源代码
我们发现java.lang.Math函数是用静态定义的,而使用静态的方法可以不用new一个对象。
如果new Math(),我们看到上面的图片已经显示了---由于构造函数被声明为私有的,就是说明不能被外部调用,所以不能调用new Math(),并且Don't let anyone instantiate this class也说明不会产生Math对象。
- 什么是重载?什么是构造函数重载?在java.lang.Math类中举出1个函数重载的例子?怎么才能区分两个重载函数?
答:
重载就是方法重名参数不同,
理解了重载,构造函数的重载理解起来也容易多了,用相同的类名不同的参数来初始化一个类。
同样可以查看源代码找例子,但是因为代码比较多容易看乱我们需要更简洁的界面这是就可以用老师之前给我们的
来找例子
很快我们就找到了
我们要善用这个文件啊。
区分两个重载函数可以通过看他们的参数来区别
- final修饰的变量不能改变,为什么如下代码可以正常运行?
final int[] NUMBS= {1,2,3,4,5};
NUMBS[2] = 1;
答:
回答这题还是比较困惑的,但是只要我们搞清楚什么是对象和对象的变量就还是能理出思路的,如果上课认真听的话我们就会发现这么一句话-----final修饰引用类型变量,变量的值(引用)不能修改,但是变量指向的对象的值可以修改。所以这段代码是可以运行的。
- 阅读代码EmployeeTest.java,回答:
1.为什么其属性均为private?这样设计有什么好处?
答: 因为这样才能保证类的封装性,只允许在类的内部访问不能再外部访问,保证了安全性私密性等,如果要访问就要用setter/getter。
2.为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
答: 我们发现在一个构造函数中调用另一个构造函数用this最方便了
public Employee(){
this("雇佣1",3000,2017,3,5);
}
3.为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)
答:同样的用this,
public Employee(String n, double s){
this(n,s,Calendar.getInstance().get(Calendar.YEAR),Calendar.getInstance().get(Calendar.MONTH)+1,
Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
}
- 编写函数
public static boolean isMondayToFriday()
功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。
提示:使用LocalDateTime, DayOfWeek
参考资料:
JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf
Java8DateTimeTest.java
public static boolean isMondayToFriday(){
LocalDateTime now = LocalDateTime.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
if(dayOfWeek!=DayOfWeek.SATURDAY && dayOfWeek!=DayOfWeek.SUNDAY){
System.out.println("上班时间");
return true;
}
else{
System.out.println("休息时间");
return false;
}
}
- Runnable Jar(可选)
我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打打成一个可运行的jar包,在命令行直接运行。改造题目7,使其从命令行接收参数,参数为年-月-日,将项目打成jar包,然后在命令行通过java -jar运行,并截图。参考文件如下:
3. 使用码云管理Java代码

不知道为什么又提交的两个显示不出来。果然和git过不下去了总是出现问题。
##**4. 实验总结**
```
*第一题 还是比较简单的,就是自己编的时候getter开头return this.***其实不用加this就可以了,类的属性用private进行封装。
主要还是又发现了eclipse的好用之处点source就可以帮我们完成很多重复的内容提高了代码的效率。
*第二题 需要对不同雇佣有不同的id这时候我们就会发现static的用处了,我们在类中定义一个静态的id可以为我们保持上一个雇
佣的id当下一个雇佣进来时就可以用static id 自增的方式赋值给id这样就会有不同的id出现这样比较方便。
*第三题 做完前两题就差不多比较熟练了,但是在一些细节的地方比方计算面积的时候没有弄好优先顺序,要加括号的地方没有加。
还有可以使用Arrays.deepToString分别输出上面建立的Rectangle数组与Circle数组。
```
201521123002 《Java程序设计》第3周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- Sublime Text3使用汇总
Sublime Package Control 功能:安装包管理 简介:sublime插件控制台,提供添加.删除.禁用.查找插件等功能 使用:https://sublime.wbond.net/ins ...
- 【转载】QT MySQL数据库操作总结
转载自http://blog.chinaunix.net/uid-28194872-id-3631462.html #include <QtSql> QT += sqlQSqlDataba ...
- MySQL触发器学习
简介 MySQL从5.0.2版本开始支持触发器的功能.触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合. 创建触发器 语法: CREATE TRIGGER trigge ...
- HAOI2015 树上操作
HAOI2015 树上操作 题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 x 为根 ...
- 【转载】Linux的inode的理解
本文转在是博主为了以后温习.请访问原文链接 http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 一.inode是什么? 理解ino ...
- Ubuntu 14.04下Redis安装报错:“You need tcl 8.5 or newer in order to run the Redis test”问题解决
Redis简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工 ...
- SpringBoot切面控制业务逻辑
业务逻辑:写一个公共拦截类,过滤传进Controller的参数 为了调用接口安全起见,每个需要调用的接口有一个参数accessToken,用于安全验证 注:先进入过滤器Filter,再进入aop,最后 ...
- Spring(三)--AOP【面向切面编程】、通知类型及使用、切入点表达式
1.概念:Aspect Oriented Programming 面向切面编程 在方法的前后添加方法 2.作用:本质上来说是一种简化代码的方式 继承机制 封装方法 动 ...
- Java 调用Azure认知服务Demo--Computer API
说明 本文主要介绍使用Java代码,基于HTTP请求调用Microsoft Azure的认知服务.图片来源分别介绍了使用公网的URL和上传本地图片. 依赖的jar包下载地址: key的获取需要登录到A ...
- SpringBoot 注解事务声明式事务
转载请注明: http://www.cnblogs.com/guozp/articles/7446477.html springboot 对新人来说可能上手比springmvc要快,但是对于各位从sp ...



来找例子