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

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

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

A:以上代码不可以编译通过,在main方法中输出i的值的时候会出错,因为i是成员变量,即实例变量,是要有实例生成的时候才可以用的。改正如下:

如果创建了3个Test1对象,内存中会有三个i,而却只有一个j,因为j是一个类变量,它是与类相对应的而不是类的实例相对应,同一个类实例化生成的多个对象也只会有一个共同的类变量。

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

构造函数用来初始化一个类的对象。

编写格式是:

1.方法名要与类名严格一致 2.它没有返回值,也不能用void来修饰

因为在语言使用者编写自己的类时,在类的内部,方法可能被命名为任意名字,故所有名字都是不安全的,于是java选择延续了这种机制,即限定构造器为与类名同名的无返回类型说明的特殊方法。

当一个类没有编写任何构造方法的时候,java语言会自动为其添加一个默认的无参构造器,只要在类中编写了一个构造方法,就不会再生成无参构造器。

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

因为Math类的所有方法和变量都是static修饰的,所以我们使用的时候无需实例化对象。

如果尝试实例化对象就会看到ide的提示:Math的构造器不可见

因为开发者将Math的构造器用private修饰了,限定了在类的外部无法调用,也没有在源文件中找到例如利用某个public static方法内部引用构造器的“单例”用法,所以我们无法实例化一个Math类。

Math类开发者注释:Don't let anyone instantiate this class.=-=

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

方法重载就是通过对同名的一组方法设计不同的参数类型从而让它们能够通过传进来的参数的类型不同而自动选择执行的具体方法的实用技巧,在使用者看来仿佛是一个方法“智能”地针对不同的情况表现出了不同的行为。

构造函数同理,即这组方法都是参数类型不同的构造方法

abs函数文档:



abs函数测试



可以看到,同一个名字的方法,由于传入参数类型的不同表现出了不同的处理行为。

区分两个不同的重载函数只能通过参数类型而不是返回类型。

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

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

final作用于类变量的时候,不能改变的是引用,类似指针一样的概念,不变的是指针的指向,而不是指针指向的内容,而数组算是一种特殊的类。

Q6.阅读代码EmployeeTest.java,回答:

1.为什么其属性均为private?这样设计有什么好处?
2.为Employee类增加一个无参构造函数,调用其有参构造函数,设置name为雇员1, salary为3000, hireDay的年月日为2017年3月5日。(粘贴代码)
3.为Employee类再增加一个有参构造函数,参数只有name与salary,hideDay为当前日期。(粘贴代码)

1.防止雇员的信息被轻易修改

2.代码如下

public Employee()
{
//雇员1, salary为3000, hireDay的年月日为2017年3月5日。
this("雇员1", 3000.0, 2017, 3, 5);
}

3 .代码如下

public Employee(String n, double s) {
name = n;
salary = s;
Calendar calendar = Calendar.getInstance();
hireDay = calendar.getTime();
}

Q7.编写函数public static boolean isMondayToFriday()

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

提示:使用LocalDateTime, DayOfWeek

public static boolean isMondayToFriday()
{
LocalDateTime now = LocalDateTime.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
System.out.println(dayOfWeek);
if(dayOfWeek!=DayOfWeek.SATURDAY && dayOfWeek!=DayOfWeek.SUNDAY)
{
System.out.println("上班时间");
return true;
}
System.out.println("休息时间");
return false;
}

3. PTA实验总结及码云上代码提交记录

3.1本周Commit历史截图

3.2 实验总结

第一题:

 IDE的自动生成功能很方便,可以节省很多时间

第二题:

合理使用初始化块和静态块可以实现很多重复性工作,还可以做到类似赋予实例对象唯一ID之类的功能

第三题:

toString方法是基类Object的方法,重写该方法可以让我们输出时自动转换为设定的形式      

多态思想可以让我们写出适应多个互相联系的类的通用方法,极大地提高了程序灵活性和效率

201521123077 《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. 排座椅 2008 NOIP 普及组 第二题

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...

  2. Java入门——(4)多线程

      关键词:线程.Thread.Runnable.sleep().yield().join().同步   一.线程的概述 在一个操作系统中,每个独立执行的程序都可以称为一个进程,也就是"正在 ...

  3. selenium 相关api操作

    driver.close(); //关闭程序 driver.findElement(By.id("idExpression")); //查找单个页面元素 driver.findEl ...

  4. config OSX firewall programmatically

    osx firewall configuration file is : /Library/Preferences/com.apple.alf.plist the default plist and ...

  5. Linux常见命令(四)——mkdir

    今天我们来介绍第四个命令:mkdir.mkdir (Make Directory 创建目录): 若指定目录不存在则创建目录.在创建目录时,要求创建目录的用户具有写权限,并应保证新建的目录没有重名. 用 ...

  6. SQL 创建存储过程,让主键自增

    1.  首先创建存储过程: 2.  然后分别创建序列,生成基金公司编号.基金代码.活期账号.理财账号.基金账户.合同号.要求如下: 基金公司编号,字母K+5位数字. 基金代码,字母V+6位数字. 活期 ...

  7. 简单利用HTTP中的PUT协议拿下SHELL

    第一次用方法拿shell,之前遇到的都是没有写入权限的. 站太辣鸡,纯粹练手,就不打码了. 此次实战会用到的HTTP请求方法: OPTIONS,PUT,MOVE/COPPY * 战前准备 0x01 什 ...

  8. jquery 的 each 方法中 return 的坑

    jquery 的 each 方法中 return 的坑 Chapter 0 在项目中使用 jquery 的 each 方法时想在 each 的循环中返回一个布尔类型的值于是掉进一个坑中... Chap ...

  9. 7.7 WPF后台代码绑定如果是属性,必须指定一下数据上下文才能实现,而函数(click)就不用

    如: private bool _IsExportWithImage; /// <summary> /// 是否选择导出曲线图 /// </summary> public bo ...

  10. [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)

    声明 本文对Lambda表达式的扩展,示例代码来源于网络. 场景描述 web开发查询功能的时候,如果查询条件比较多,就会遇到动态组合查询条件的情况.在手写sql的情况下,我们一般会根据传入的参数,针对 ...