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);
} }

Q1以上代码可否编译通过?哪里会出错?为什么?尝试改正?

答:不能编译通过,错误如下截图所示,错在两个地方,一是Test1getj(),没有定义该方法就直接调用,二是i是非静态变量,而geti是静态函数,因此geti是不能调用i。

改正如下:

Q2如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因?

答:会有3个i和1个j。用static修饰的变量有点类似于C语言中的全局变量,它的每一个实例都指向同一个内存地址,所以静态变量j只会有一个,而非静态的i就会有三个。

(2)构造函数有什么用?其编写格式是什么?如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?

答:对数据的初始化是非常重要的,所以我们可以把需要初始化的数据写在构造函数中,创建对象是会自动调用构造函数以达到数据初始化的目的。编写格式:public/private 类名(){}。如果一个类不写构造函数它也是有的,因为系统会给它一个默认的无参构造函数。一个函数有带参构造函数后不会再有默认的构造函数了,

(3)使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?分析原因?

答:Math的源代码如下图所示:Math函数是final类不允许被继承,构造函数被声明为私有的,所以外部不能调用,也就不能new一个对象了。

如果new Math()会产生如下错误:构造函数是不可见的,因为Math函数是不能被继承的。

(4)什么是重载?什么是构造函数重载?在java.lang.Math类中举出1个函数重载的例子?怎么才能区分两个重载函数?

答:重载是函数名相同但是参数的类型或者个数不同。需要注意的是仅是函数的返回类型不同的函数不是重载函数。例子如下:

两个重载函数可以通过参数的类型或者参数的个数区分。

(5)final修饰的变量不能改变,为什么如下代码可以正常运行?

final int[] NUMBS= {1,2,3,4,5};
NUMBS[2] = 1;

答:因为final修饰的变量只是其引用不能修改,但是变量指向的对象本身的值是可以修改的。

(6)阅读代码EmployeeTest.java,回答:

Q1为什么其属性均为private?这样设计有什么好处?

答:属性设为private是为了防止其他类修改变量,这样做的好处是保证了数据的安全性。

Q2为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)

答:代码如下:

class Employee
{
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
// GregorianCalendar uses 0 for January
hireDay = calendar.getTime();
}
public Employee(){
this("雇员1",3000,2017,3,5);
}

Q3为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)

答:代码如下:

public Employee(String n,double s){
//Calendar now =Calendar.getInstance();
this(n,s,Calendar.getInstance().get(Calendar.YEAR),Calendar.getInstance().get(Calendar.MONTH)+1,Calendar.getInstance().get(Calendar.DAY_OF_WEEK));
}

如果上面的代码没有注释那一行而直接使用now.get(...)会提示Constructor call must be the first statement in a constructor(构造函数调用必须是构造函数中的第一个语句)错误,所以就改为上面那样了。。。

(7)编写函数public static boolean isMondayToFriday()

功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。

提示:使用LocalDateTime, DayOfWeek

答:代码如下:

package java8time;

import java.time.DayOfWeek;
import java.time.LocalDate; public class Time {
public static boolean isMondayToFriday(){
LocalDate now = LocalDate.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
int d=now.getDayOfMonth();
if (d>=1&&d<= 5)
{
System.out.println("上班时间");
return true;
}
else
{
System.out.println("休息时间");
return false;
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
isMondayToFriday();
} }

3.使用码云管理Java代码

4.PTA实验总结

有些代码是不需要自己手动写的,比如toString()、getter和setter都可以自动生成

经常会出现这样的结果,在eclipse中编译和运行都是正确的但是在pta提交实验时就是错误的,原因可能是输出的结果多了一个空格或者输出的顺序出错

this代表对象本身的引用,防止变量名称相同时,编译出错

第二题和第一题大部分都是差不多的,需要在第二题加一个静态初始化块对id进行初始化操作

第三题的数组开始没注意所以越界了,最后改正过来了,使用Arrays.deeptoString打印出来的数组是自动会在[ ]括号中的。

201521123039 《java程序设计》第三周学习总结的更多相关文章

  1. Java程序设计第三周学习总结

    1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  2. 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...

  3. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  4. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  9. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  10. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

随机推荐

  1. 一步一步学多线程-Timer

    在执行定时任务的时候可以用Timer来实现,现在小编对学到的进行一次总结,先来看一个demo 1 public class TimerTest { 2 3 public static void mai ...

  2. 学问Chat UI(2)

    前言 上文讲了下要去做哪些事,重点分析了融云Sdk中RongExtension这个扩展控件,本文来学习下同样是融云Sdk中的AutoRefreshListView如何适配多种消息的实现方式,写的有不足 ...

  3. 在Linux下更新或安装curl

    问题 我这有一个项目是.net core写的,然后运行到centos机器上,刚开始发请求都能正常处理,但是时间长了,程序会报Segmentation fault,然后退出,我查了一下系统log,说的是 ...

  4. Linux Oracle服务启动&停止脚本与开机自启动[转]

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

  5. .Net Webapi Swagger增加登录功能

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  6. re模块的结果小练习题

    1.匹配标签 import re ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>','<h1& ...

  7. React&Webpack 环境安装

    react的安装依赖nodejs,nodejs安装下载可从http://nodejs.org/en/下载 1.   环境安装 1.1      创建lib目录 cd E:\ReactLib 1.2   ...

  8. ExoPlayer Talk 01 缓存策略分析与优化

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Android studio 2.3.3 | ExoPlayer r2.5.1 使用 ExoPlayer已经有一段时间了, ...

  9. Git的commit your changes or stash them before you can merge

    今天用git pull来更新代码,遇到了下面的问题: error: Your local changes to the following files would be overwritten by ...

  10. 安装 CentOS 时, BIOS 设置界面,找不到虚拟镜像

    安装 CentOS 时, 遇到 BIOS 设置界面,找不到虚拟镜像  1. 启动电脑或重启电脑,当电脑还没有进入window图标界面,按F2或DEL 2. 左下角有一个 Advanced Mode(F ...