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. Oracle数据库 拾漏补缺

    select语句的基本使用 可以查询需要的列,行,可以进行多表链接,连接查询. from p_emp e select 后面跟的是要显示的结果,可以是通过运算或者连接符号得出的伪列 null  空值 ...

  2. Shell curl 和 wget 使用代理IP

    Linux Shell 提供两个非常实用的命令来爬取网页,它们分别是 curl 和 wget curl 和 wget 使用代理 curl 支持 http.https.socks4.socks5 wge ...

  3. iOS枚举的运用

    1.什么是枚举? 枚举其实就是一个整型常数的集合,最简单的例子就是表示星期的SUN, MON, TUE, WED, THU, FRI,SAT, 就是一个枚举. 2.iOS中枚举的使用 在ObjC中可以 ...

  4. Webapi文档描述-swagger优化

    一.前言 最近做的项目使用WebApi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word.Xmind思 ...

  5. CSS3基础(4)——CSS3 渲染属性

    一. CSS3 计数器详解    CSS3计数器(CSS Counters)可以允许我们使用CSS对页面中的任意元素进行计数,实现类似于有序列表的功能. 与有序列表相比,它的突出特性在于可以对任意元素 ...

  6. Oracle Basic Ready Notes

    1. Select the standard database block size. This is specified at database creation by the DB_BLOCK_S ...

  7. Javacript的变量和输出

    一.js使用的三种方式 1.在HTML标签中,直接内嵌js(并不提倡使用): >>不符合W3C内容与表现分离的要求!!! 2.在HTML页面中使用<script></sc ...

  8. ctrl+c 和 ctrl+z 的区别

    ctrl+c 和 ctrl+z 的区别 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c是强制中断程序的执行, 而ctrl+z的是将任务中断,但是此任务并没有结束,他仍然 ...

  9. 京东地址导航js+css

    HTML------------------------------------------------<!DOCTYPE html><html lang="en" ...

  10. VMware Workstation 12 Pro 之安装XP系统

    使用VMware Workstation 12 Pro  安装XP系统 ... <个人觉得现在没有必要再给自己的电脑装XP系统了.虽然XP很小..但是功能相比现在的Windows差很多.兼容性与 ...