201521123067 《Java程序设计》第3周学习总结


1. 本周学习总结

初学面向对象,会学习到很多碎片化的概念与知识。尝试学会使用思维导图将这些碎片化的概念、知识组织起来。请使用纸笔或者下面的工具画出本周学习到的知识点。截图或者拍照上传。参考资料:百度脑图 XMind

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

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

答:编译不可通过。Test1getj()会出错,因为找不到这个方法;System.out.println(i)这行也会出错,因为i并不是static类型的,静态的方法不能调用非静态的值,应将public static void geti()改为 public static void geti(int i)。

②如果创建3个Test1对象,有内存中有几个i,几个j?

答:i和j各一个。

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

答:●构造函数的作用:在创建对象时初始化对象,为对象成员变量赋初始值。
  ●其编写格式是:
public+函数名(参数)
{
函数的内容
}
构造函数的命名必须和类名完全相同。
●如果一个类不写构造函数,编译器中会默认有一个构造函数。
●如果一个类中只有带参的构造函数,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。因此它有不带参数的默认构造函数。

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

答:如果一个方法是静态的,它是属于整个类的,可以用类名.方法来直接访问,不需要new一个新的对象,只需要在代码的头部加上import java.lang.Math即可,而不需要new一个新的对象。由于构造函数被声明为私有的,就是说明不能被外部调用,所以不能new出来一个新的对象,如果new Math()会产生编译错误。

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

答:●重载:是指函数或者方法有相同的名称,但是参数列表不相同的情形。
  ●构造函数的重载:构造函数具有相同的名字,而参数的个数或参数类型不相同。
  ●在java.lang.Math类中函数重载的例子:static int getExponent(double d)和static int getExponent(float f)
  ●区分两个重载函数:虽然函数有相同的名称,但是参数列表不相同,所以可以根据参数列表来区分两个重载函数。

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

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

NUMBS[2] = 1;

答:因为final修饰引用类型变量,变量的值(引用)不能修改,但是变量指向的对象的值可以修改。就如指针一样,指向一方的箭头方向不能变,而引用的东西的具体内容可以改变,所以这段代码可以正常运行。

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

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

答:因为属性是不希望被人轻易知道的,所以要将属性保护好,只有设置为private,才不会随便被调用或是被改变

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

代码如下:
public Employee()
{
Employee("雇员1", 3000.0, 2017, 3, 5);
}

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

代码如下:
public Employee(String ming, double gongzi, int year, int month, int day)
{
name = ming;
salary = gongzi;
GregorianCalendar c= new GregorianCalendar(year, month - 1, day);
hireDay = c.getTime();
}
public Employee(String ming, double gongzi)
{
Employee(ming, gongzi, Calendar.getInstance().get(Calendar.YEAR),
Calendar.getInstance().get(Calendar.MONTH) + 1,
Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
}

(7)编写函数public static boolean isMondayToFriday()功能:判断今天如果是周一到周五,直接输出如“上班时间”并返回true,否则输出“休息时间”。提示:使用LocalDateTime, DayOfWeek 参考资料:JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf Java8DateTimeTest.java

代码如下:
public static boolean isMondayToFriday()
{
LocalDateTime time = LocalDateTime.now();
int day = time.getDayOfWeek().getValue();
if (day >= 1 && day <= 5)
{
System.out.println("上班");
return true;
}
else
{
System.out.println("休息");
return false;
}
}

3. 码云代码提交记录

4. PTA实验总结

●问题:

①总体来说,这次的三道编程题难度都不大,相对来说比第二次简单。

②在做第一道题的时候,我不知道如何覆盖toString函数;刚开始不知道怎样编写有参构造函数对name,gender,age赋值。

③起初第二题中的初始化块我不会做;后来把代码打好之后,在eclipse能正常运行并且结果时正确的,但复制到PTA上一直出错。

④在第三题中,我把public String tostring()错打成了public string tostring(),所以一直出错。

●解决:

①第一题通过百度搜索知道了如何正确覆盖toString函数,于是就做出来了。

②第二题我问了同学,得知做初始化块的方法,这道题也打出来了,但是在PTA上无法通过。

③第三题我找了很久的错误原因,终于发现是大小写的问题,修改好之后就能正常运行了。

201521123067 《Java程序设计》第3周学习总结的更多相关文章

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

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

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

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

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

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

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

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

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

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

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

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

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

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

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

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

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

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Java入门——(8)网络编程

      关键词:IP地址..端口.UDP.DatagramPacket类.DatagramSocket类.TCP.ServerSocket类.Socket类.文件上传     一.基本概念         ...

  2. Maven干货2

    回顾: 1. maven核心 a) 依赖管理:对jar统一管理.根据坐标(groupId,artifactId,version)去找jar包,本地,私服,中央仓库 b) 项目构建:通过命令构建.cle ...

  3. Java 脚本引擎

    脚本引擎,就是一个编程语言的解释器,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能. Java脚本引擎简单地说就是指Java提供的一组兼容操作各种脚本语言的的API ...

  4. Gate One

    运维堡垒机介绍: 运维堡垒机的理念起源于跳板机.2000年左右,高端行业用户为了对运维人员的远程登录进行集中管理,会在机房里部署跳板机.跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台 ...

  5. C#使用Xamarin开发可移植移动应用(5.进阶篇显示弹出窗口与通讯中心)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 没啥好说的 ...

  6. Windows环境下Mysql如何快速导入或恢复表为innodb的数据

    注: 一.这个是对Innodb的数据恢复.MyISAM不需要这么麻烦,只要数据文件存在直接复制过去就可以. 二.该方法只适用于 1:想要恢复或者导入表的ibd文件和frm文件 2:你不仅需有ibd和f ...

  7. Use Select To Generate Any Insert/Delete/Update Statement

    If you don't have the permission to generate script according to an existing db, but you have the re ...

  8. 自定义EasyUI的datetimebox控件日期时间的显示格式(转)

    工作中遇到的问题,在此记录一下. 需求:前台页面使用了EasyUI框架,在某一个html页面中要求datetimebox显示格式为年月日和小时,如图所示: 尝试过两种方法,分别如下: 第一种方法: d ...

  9. VMware Workstation 12 Pro 之安装林耐斯StartOS X64系统

    VMware Workstation 12 Pro 之安装林耐斯StartOS X64系统... ---------------- 先去下载系统暗中包ISO   网址:http://www.xiaza ...

  10. 一起来学Go --- (go的枚举以及数据类型)

    枚举 枚举指一系列的相关的常量,比如下面关于一个星期的中每天的定义,通过上篇博文,我们可以用在const后跟一对圆括号的方式定义一组常量,这种定义法在go语言中通常用于定义枚举值.go语言并不支持众多 ...