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

标签(空格分隔): Java


1.本周学习总结

XMind图:

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

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

*(2)如果创建3个Test1对象,有内存中有几个i,几个j?

编译结果如下:

答:

(1)由上图可知不可通过编译。错误如下截图:



分析:对于Test1getj()出错,因为静态方法不能调用一个非静态的成员变量。



分析:关于static的用法,不能直接访问非static的成员变量

改正:可以把public static void geti()改为public void geti()

修改后运行截图:



(2)如果创建3个Test1变量,内存中会有3个i,1个j。

因为一个static在一个类内来说只有一个存储空间,而非static对于其中每个对象都会有一个新的存储空间。

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

答:

1.作用:

构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与

类相同的名称,它通常初始化新对象的数据成员。

构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作,当创建对象时, 对象会自动调用它的构造函数。一般来说,构造函数有以下三个方法:

■ 给创建的对象建立一个标识符;

■ 为对象数据成员开辟内存空间;

■ 完成对象数据成员的初始化。

2.编写格式:

public 类名(){

、、、、、

}

构造方法的名字要和类名一样,没有返回类型,可以是public、private。

简单的例子:

public class Moyi {
String name;
public Moyi(String name){
this.name=name;
} }

3.第三问与第四问:

一个类,如果没有定义构造函数,那么系统默认会有一个无参的构造函数(无参数、内容为空)。如果程序定义了一个有参的构造函数,程序自己不会创建无参构造函数,如果想构造无参函数,就必须显式的声明一个。

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

答:

因为在Math类里面的所有成员变量和成员方法都是静态的,所以不需要new实例化。Math是已有方法,直接调用就可以了。开发者将Math的构造器用private修饰了,限定了在类的外部无法调用。只要import java.lang.Math,然后用类名.方法就可以调用。

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

答:

1.重载,就是函数或者方法有相同的名称。方法的重载指方法名相同,但是参数的类型不同或参数的个数不一样。

例子:

//举例一:
void test(int x) {
};
void test(double x) {
……};//这个叫参数类型不同的方法重载 。
//举例二:
void test(int x) {
……};
void test(int x, int y) {
……};//这个叫参数个数不同的方法重载 。

2.构造函数的重载,其实是构造函数具有相同的名字,而参数的个数或参数类型不相同。

3.截图:





4.通过参数的顺序,类型不同进行区分。

可以参考3的截图中abs和max函数的例子。

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

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

答:

final修饰的是引用型变量,指的是所指向的变量值不能修改,但指向的对象的值可以修改。题目中指向的地址没有变,值由3变为1。

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

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

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

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

答:

1.因为把属性设置为private,可以通过指定的方法来操作类成员变量,不能随意地操作类的变量成员。

2.代码如下:

public Employee() {
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

参考资料

JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf

Java8DateTimeTest.java

答:

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;
}
else
{
System.out.println("休息时间");
return false;
} }

在原来的代码上修改isMondayToFriday运行后的截图:

Q8.Runnable Jar(可选)

我们以前编写的程序,必须打开Eclipse或者将相应的.class文件拷贝出来在命令行下执行相应命令才能运行,如果.class文件较多且类文件中有包名,需要将完整的目录结构及文件拷贝出来,才能运行。现在希望将Eclipse项目中的Java文件打打成一个可运行的jar包,在命令行直接运行。改造题目7,使其从命令行接收参数,参数为年-月-日,将项目打成jar包,然后在命令行通过java -jar运行,并截图。参考文件如下:http://www.cnblogs.com/yuki-lau/archive/2013/02/27/2935778.html

3. 码云代码提交记录

4. PTA实验

questionOne:

本周开始学习Java中面向对象的基础,在这个实验中对Person类中的age、gender、id设置为私有变量。学会了编写无参和有参构造函数,学会用MyEclipse生成toString函数和setter、getter函数。重温了数组和this的用法。

quetionTwo:

题目2是对题目的改进,题目中涉及了构造函数、初始化块、静态初始化块。

编写定义类的初始化块和静态初始化块的代码如下:

static {
System.out.println("This is static initialization block");
} {
id = Id;
Id++;
System.out.println("This is initialization block, id is " + this.id);
}

重点是了解构造函数、初始化块、静态初始化块这三种方法执行的先后顺序:

静态代码块>构造代码块>构造函数

对这三者的了解可参考:

http://blog.csdn.net/jeep_ouc/article/details/26412191

http://www.cnblogs.com/BlackStorm/p/5699965.html

questionThree:

本体中代码还是比较简单的,pta中已提交成功,但暂时未用到继承和多态的思想。也是用到了构造函数和toString函数,然后就是Arrays.deepToString分别输出上面建立的Rectangle数组与Circle数组。

总结:

这是的3道题都是面向对象的基础,最重要的是了解了构造函数的重要性。

201521123082《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. viewpager+layout布局文件随数据多少创建滑动页面

    近期在做一个答题类型的APP,而其中最重要的是答题卡.而答题卡要如何做? 1.将数据插入到SQLite数据库中 2.建立entity实体包,创建实体类,封装. 3.创建实体与view的List集合 4 ...

  2. ios-->制作ipa文件

    用证书进行真机调试并生成二级制文件,通常位于:/Users/.../Library/Developer/Xcode/DerivedData/XXXXXDemo-gmtamkryoesxilartayu ...

  3. MySQL root密码忘记解决

    --MySQL root密码忘记的解决办法 -----------------------------------2014/03/14 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接My ...

  4. SQL语句Tips

    1. 可以在FROM字句中指定多个表,表与表之间用逗号隔开,如下面所示. SELECT * FROM T1,T123 结果集是这两个表的笛卡尔乘积.

  5. 菜鸟装逼指南--linux内核中听过就能记住的概念

    打算给我们部门弄个内部分享.发现大家对一些底层知识的认知停留在一句一句的,比如听说JVM使用-XX:-UseBiasedLocking取消偏向锁可以提高性能,因为它只适用于非多线程高并发应用.使用数字 ...

  6. 设计模式之桥接模式(Bridge模式)

    我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根据想象描绘出格式图样.而毛笔下的国画更是工笔写意,各展风采.而今天我们的故事从蜡笔与毛笔说起. 设想要绘制一幅图画,蓝天.白云.绿树.小鸟 ...

  7. ReactiveCocoa应用篇(一)

    作为函数式编程和响应式编程的代表ReactiveCocoa,自一出世便受到广大码农的热爱,结合MVVM编程模式,不仅能够方便的处理各种交互事件.降低模块间的耦合性,还能简化项目结构,降低阅读和维护的成 ...

  8. String与Date(java.util.Date)互转(转)

    http://yunnick.iteye.com/blog/1074495 一.String与Date(java.util.Date)互转 1.1 String -> Date String d ...

  9. 【Js应用实例】限制上传图片大小

    需求:前端页面开发中,常遇到图片上传的需求,一般要求限制图片格式及大小. 说明:这里就把实现此功能所需代码贴出来,供同志们参考,也方便我以后复用. 要点:1.处理 类型type为file的输入元素的v ...

  10. TP-LINK 路由器怎么设置

    TP-LINK 路由器怎么设置... ----------------------- 1.线路连接: 没有使用路由器时,电脑直接连接宽带上网,现在使用路由器共用宽带上网,则需要用路由器来直接连接宽带. ...