1. 本章学习总结

你对于本章知识的学习总结

链接点击此处

2. 书面作业

代码阅读

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.1.以上代码可否编译通过?哪里会出错?为什么?尝试改正?

答: 从截图中可以看到编译错误。这段代码一共两个地方出错,第一个是 Test1getj(); 第二个是 System.out.println(i);

关于第一个错误 ,我感觉是老师在出题时写错了,其实原来的代码应该是getj(),这样才能和下面的函数一致,要是非要说错的话,只能再加一个Text1getj()函数

       private static void Test1getj() {
System.out.println(j);
}

这题的关键还在于static的用法 。 以下

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

  被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

  只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

  用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。

  static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:

  类名.静态方法名(参数列表…)

在本题中i非static变量,无法用static方法访问。修改的话 在i 前面加上static就行

  

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

答:内存中应该有3个i,一个j,因为static在java中分配一个储存单元

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

答:①对类进行初始化操作,如初始化类的属性值

②格式:public 类名(){ }

③若无定义,系统默认有一个无参构造方法

④没有..

总结一下:就是给初始化对象设初值

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

答:①Math类中的方法均被声明为static,因此不需要对象就可以直接调用;(static用法在题1)

②因为Math的构造函数是用private定义的,在类的外部无法使用,如果new Math(),则会产生无法调用的错误(此构造函数不是显性的)

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

答:①多个方法拥有相同的名称,但参数(不同的参数类型,不同的参数个数,不同的参数顺序)不同

②关于构造函数的重载,举个栗子

public  Student(){
private String name;
private String age;
public Student(){
}
public Student(String name){
this.name = name;
}
public Student(String name,String age){
this.name = name;
this.age = age;
}

上面三个函数都是Student类的构造函数。第一个是无参的,第二个有一个参数,第三个有两个参数。这就是构造函数的重载

③例如Math中的abs().

④根据参数类型和参数的顺序来区分

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

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

答:final修饰的是引用类型变量,变量的值(引用)不能修改(直接引用)。但是变量指向的对象的值可以修改(间接引用)。

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

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

答:private的用法:首先private中文意思是私有的,private表示一个类的私有属性,只能在本类中访问到,在其他的类中无法进行访问。这样使其在类外部无法直接修改,加强数据的稳定

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

public  Employee(){
this("雇员",3000,2017,3,5) }

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

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

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

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

提示:使用LocalDateTime, DayOfWeek

 public static boolean isMondayToFriday(){
LocalDateTime now = LocalDateTime.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
if(dayOfWeek!=DayOfWeek.SATURDAY && dayOfWeek!=DayOfWeek.SUNDAY){
System.out.println("上班时间");
return true;
}
else{
System.out.println("休息时间");
return false;
}
}
参考资料:
JAVA 8:健壮、易用的时间-日期API - ImportNew.pdf Java8DateTimeTest.java

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

3.1本周Commit历史截图

3.2 总结

实验碰到的问题、思考、收获与解决方案

java也学了三周了,感觉自己才刚刚入门而已,也许是读书还不够认真,也许是代码还敲的不够多。以后还要在多花一点时间在java课程上。对于我自己来说,对这门课是挺感兴趣的,既然对这门课感兴趣,我想虽然现在对于我来说,学这门课还有点吃力,但是我肯定要慢慢克服他带给我的困难,多写写代码,会慢慢进步的

4. PTA实验

pta上的实验暂时还没写完,不过会慢慢完成的

201521123122 《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. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  2. WPF中使用Data Annotations验证Model

    .NET Framework中System.ComponentModel.DataAnnotations提供了很多属性来验证对象的属性.可以在C:\Program Files (x86)\Refere ...

  3. Linux误删C基本运行库libc.so.6处理方法

    1. libc.so.6介绍/usr/lib/libc.so.6是glibc的软链接,不同的平台可能路径会不一样.使用命令查看会看到: [root@farmer:~]$ls -l /lib/libc. ...

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

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

  5. python 中self理解

    python类的方法和普通函数的区别--python中类的方法必须有一个额外的参数:self 假如创建一个新的类Myclass,类中有一个方法method(arg1,arg2),b实例化Myclass ...

  6. node的包管理工具:yarn和npm

    arn是Facebook发布的一款依赖管理工具,它比npm更快.更高效. NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 一.yarn官方网站: 英文官网:ht ...

  7. c++类大小问题

    1.空类 class A { }; 解析:类的实例化就是为每个实例在内存中分配一块地址:每个类在内存中都有唯一的标识,因此空类被实例化时,编译器会隐含地为其添加一个字节,以作区分. 2.虚函数类 cl ...

  8. 【leetcode】148. Sort List

    Sort a linked list in O(n log n) time using constant space complexity. 链表排序可以用很多方法,插入,冒泡,选择都可以,也容易实现 ...

  9. asp.net 开发 sql server 转 oracle

    前段时间我们公司项目 要把sql server 转oracle 分享一下心得 也记录一下问题 开始我研究了一段时间 然后下载了 oracle 11g 版本 和 PL/SQL(客户端) 和sql ser ...

  10. 移动端JS判断手势方向

    原生JS判断手势方向的解决思路: 1.滑动屏幕事件使用html5 的touchstart滑动开始事件和touchend滑动结束事件. 2.方向的判断,以起点做平面坐标系,与终点连线做直线,直线与x正半 ...