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代码
![](http://images2015.cnblogs.com/blog/1100960/201703/1100960-20170311180454592-267070906.png)
不知道为什么又提交的两个显示不出来。果然和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 ...
随机推荐
- Heritrix工具实现网络爬虫
上次用的java相关知识实现了一个简单的网络爬虫,现在存在许多开源免费的爬虫工具,相对来说,可以很简单的获取网页数据,并写入到本地. 下面我就阐述一下我用Heritrix爬虫工具实现网页数据爬取. - ...
- C/C++ 知识点---设计模式
在软件工程中,设计模式用来描述在各种不同情况下,要怎么解决问题的一种方案.面向对象设计模式通常以类或对象来描述其中的关系和相互作用,是软件“设计”层次上的问题.使用设计模式可提高代码的重用性和可靠性, ...
- 设计模式之桥接模式(Bridge模式)
我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根据想象描绘出格式图样.而毛笔下的国画更是工笔写意,各展风采.而今天我们的故事从蜡笔与毛笔说起. 设想要绘制一幅图画,蓝天.白云.绿树.小鸟 ...
- JavaJavaScript小问题系列之JSON解析
1.错误消息及截图 这个很搞笑也很纠结,今天一开发妹子,发现一个问题: 服务端返回字符串"{\"phone\":\"15000000000\"}&qu ...
- 【Tomcat】batch获得war包
功能: 将maven项目打包复制到tomcat/webapps set git=C:\Users\zhengwenqiang\git set tomcat=e:\tomcat7.0.64 c: cd ...
- vue调试工具vue-devtools安装及使用
本文主要介绍 vue的调试工具 vue-devtools 的安装和使用 工欲善其事, 必先利其器, 快快一起来用vue-devtools来调试开发你的vue项目吧 安装: 1.到github下载: ...
- SpringMVC拦截器 - 设置不拦截html,js等静态文件
拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <mvc:resources location="/" mapping="/**/*.js& ...
- 零碎的JS基础
一.js的三种弹窗: 警告框 弹出警告alert() 确认框 有确认内容的框confirm()有两个值,true和false 当用户按下确认键后,打印tru ...
- spring boot整合jsp的那些坑(spring boot 学习笔记之三)
Spring Boot 整合 Jsp 步骤: 1.新建一个spring boot项目 2.修改pom文件 <dependency> <groupId>or ...
- Oracle 11g的安装
选择对应版本的Oracle 11g: 解压之后,点击"setup.exe"进行安装. 如果希望接受Oracle的广告邮件可以留下自己的电子邮件地址, 如果希望通过My Oracle ...