201521123069 《Java程序设计》 第3周学习总结
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?请分析原因??
修改后的代码:
public class Test1 {
private int i = 1;//这行不能修改
private static int j = 2;
public static void main(String[] args) {
geti();
Test1getj();//编写Test1getj()静态方法
}
public static void Test1getj() {
// TODO Auto-generated method stub
System.out.println(j);
}
public static void geti() {
Test1 t=new Test1();//新建一个Test1对象
System.out.println(t.i);//调用它的属性
}
public static void getj() {
System.out.println(j);
}
}
答:不能通过编译." Test1getj();"与"System.out.println(i);",没有创建Test1getj()方法无法调用它,在静态方法中不能访问非static的属性和方法,如果创建3个Test1对象,在内存中有3个i,1个j.i是Test1类的私有属性,每创建一个对象,在内存中就会有一个i,Test1对象指向i.j是类变量,被所有对象共享,内存中只有一个j.
Q2. 构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?
答:构造函数对类进行初始化操作。编写格式:修饰符(public、protected、private等) 类名(){...},如果一个类不写构造函数,系统默认有一个无参构造函数。如果一个类中只有带参的构造函数,它没有不带参数的默认构造函数。
Q3. 使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?分析原因?
Math类的源代码:

答:java.lang.Math类中的函数都为静态方法,调用静态方法,直接用类名.方法名(...)即可调用该方法。如果new Math()编译会出错,因为Math类源代码中有"private Math(){}"构造函数,只能在Math类内部new Math(),在类外部Math类是不允许被实例化的。
**Q4.什么是重载?什么是构造函数重载?在java.lang.Math类中举出1个函数重载的例子?怎么才能区分两个重载函数? **
java.lang.Math类中函数重载:

答:重载即多个方法拥有相同的方法名但参数不同(参数类型不同,参数个数不同,参数顺序不同)。在一个类中定义多个构造函数,只要构造函数的参数不同,称为重载构造函数。根据重载函数中参数的类型,个数,顺序的不同
来区分两个重载函数。
**Q5.final修饰的变量不能改变,为什么如下代码可以正常运行? **
final int[] NUMBS= {1,2,3,4,5};
NUMBS[2] = 1;
答:final限定NUMBS指向的对象,即NUMS不能再指向其他的对象,但是变量指向的对象的值是可以修改的。
**Q6.阅读代码EmployeeTest.java,回答:
1.为什么其属性均为private?这样设计有什么好处?
2.为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
3.为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码) **
6.1
答:.每位雇员的名字,工资,雇佣日期一旦确定下来一般是不进行修改的,所以用private对Employee类的属性进行修饰,好处是在类外部无法直接对该类的属性进行访问(对象封装)。
6.2
public Employee(){
this("雇员1",3000,2017,3,5);
}
6.3
public Employee(String n,double s){
name=n;
salary=s;
Calendar rightNow = Calendar.getInstance();
hireDay=rightNow.getTime();
}
Q7.编写函数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;
}
}
3. PTA实验总结及码云上代码提交记录
3.1本周Commit历史截图
在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

3.2 实验总结
实验碰到的问题:(1)使用toString函数输出"类名 [name=, age=, gender=, id=]"时格式错误(2)不清楚初始化类与对象时,构造函数、初始化块、静态初始化块的执行顺序。(3)对(int)Math.PI*radius*2与(int)(Math.PI*radius*2)的区分不够清楚。
解决方案:(1)利用Eclipse自动生成toString函数时,注意name,age,gender,id的顺序(2)实践证明,初始化类与对象时,执行的先后顺序为静态初始化块、初始化块、构造函数
(3)(int)Math.PI*radius*2是先将Math.PI强制转换成整型再*radius*2,(int)(Math.PI*radius*2)是将Math.PI*radius*2的结果强制转换成整型,本题中应采用(int)(Math.PI*radius*2)。
4. 其他的一些题目,如特别加分的实验题目、小任务、自己用Java做的一些小东西(可选,加分)
201521123069 《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 ...
随机推荐
- 【Spring】的【bean】管理(XML配置文件)
Bean实例化的三种方式 说明:通过配置文件创建对象就称为Bean实例化. 第一种:使用类的无参构造创建(重点) 实体类 package com.tyzr.ioc; public class User ...
- python 第六天
模块 包 我们可以同过包来避免与其它模块的命名冲突,例如,调用在外层 demo.py 调用 demoFile 文件夹中的demo.py 就可以通过 demo.demo 来调用 请注意,每一个包目录下面 ...
- Tomcat 部署安装及JVM调优~
Tomcat 部署Tomcat环境 环境准备 linux: CentOS 7.3 tomcat: 9.0.0.M21 jdk: 1.8.0_131 ip: 192.168.1.5 tomcat官方下载 ...
- 导入import com.sun.image.codec.jpeg.JPEGCodec出错
在Eclipse中处理图片时,需要引入两个包:import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPE ...
- SQL实现 模糊查询(转)
在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表示任 ...
- 用notepad如何在每行结尾处添加特殊字符
在处理关键词的时候,有时候需要将每一行的末尾添加某个特殊字符,较常用的一种方法就是用excel拼接起来.今天要分享是一种简单的方法,用notepad就可以很容易实现,主要用到notepad中的扩展匹配 ...
- URI和URL的区别 一起学习呗
一直存在很多技术上的争论,其中最为妙的恐怕就是web地址应该叫什么的问题.通常情况就是这样:有人把地址栏的内容叫"URL",这时候有些人就来劲了:"不!其实那就是URI. ...
- 两台主机之间单向Ping不通的问题
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
- C++三种野指针及应对/内存泄露
野指针,也就是指向不可用内存区域的指针.如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃. 野指针不是NULL指针,是指向"垃圾"内存的指 ...
- [小北De编程手记] [Lesson 02] AutoFramework构建 之 Page Objects - 设计模式
写在最前面 这个系列的主旨是要跟大家分享一下关于自动化测试框架的构建的一些心得.这几年,做了一些自动化测试框架以及团队的构建的工作.过程中遇到了很多这样的同学,他们在学习了某一门语言和一些自动化测试的 ...