博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201521123069 《Java程序设计》 第3周学习总结
阅读量:4953 次
发布时间:2019-06-12

本文共 3519 字,大约阅读时间需要 11 分钟。

1. 本章学习总结

1109870-20170309213300469-1032449600.png

如果看不清楚可点击

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

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

如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因??
修改后的代码:

public class Test1 {    private int i = 1;//这行不能修改    private static int j = 2;    public static void main(String[] args) {        geti();        Test1getj();//编写Test1getj()静态方法    }    public static void Test1getj() {        // TODO Auto-generated method stub        System.out.println(j);    }    public static void geti() {        Test1 t=new Test1();//新建一个Test1对象        System.out.println(t.i);//调用它的属性    }    public static void getj() {        System.out.println(j);    }}
答:不能通过编译." Test1getj();"与"System.out.println(i);",没有创建Test1getj()方法无法调用它,在静态方法中不能访问非static的属性和方法,如果创建3个Test1对象,在内存中有3个i,1个j.i是Test1类的私有属性,每创建一个对象,在内存中就会有一个i,Test1对象指向i.j是类变量,被所有对象共享,内存中只有一个j.

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

答:构造函数对类进行初始化操作。编写格式:修饰符(public、protected、private等) 类名(){...},如果一个类不写构造函数,系统默认有一个无参构造函数。如果一个类中只有带参的构造函数,它没有不带参数的默认构造函数。

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

Math类的源代码:

1109870-20170309133648203-1486124910.png

答:java.lang.Math类中的函数都为静态方法,调用静态方法,直接用类名.方法名(...)即可调用该方法。如果new Math()编译会出错,因为Math类源代码中有"private Math(){}"构造函数,只能在Math类内部new Math(),在类外部Math类是不允许被实例化的。

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

java.lang.Math类中函数重载:
1109870-20170309135413734-1457833028.png

答:重载即多个方法拥有相同的方法名但参数不同(参数类型不同,参数个数不同,参数顺序不同)。在一个类中定义多个构造函数,只要构造函数的参数不同,称为重载构造函数。根据重载函数中参数的类型,个数,顺序的不同来区分两个重载函数。

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

final int[] NUMBS= {1,2,3,4,5};NUMBS[2] = 1;
答:final限定NUMBS指向的对象,即NUMS不能再指向其他的对象,但是变量指向的对象的值是可以修改的。

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

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

6.1答:.每位雇员的名字,工资,雇佣日期一旦确定下来一般是不进行修改的,所以用private对Employee类的属性进行修饰,好处是在类外部无法直接对该类的属性进行访问(对象封装)。
6.2public Employee(){       this("雇员1",3000,2017,3,5);   }
6.3public Employee(String n,double s){       name=n;       salary=s;       Calendar rightNow = Calendar.getInstance();       hireDay=rightNow.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();        if(dayOfWeek!=DayOfWeek.SATURDAY && dayOfWeek!=DayOfWeek.SUNDAY){            System.out.println("上班时间");            return true;        }        else{            System.out.println("休息时间");            return false;        }                        }

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

3.1本周Commit历史截图

在码云的项目中,依次选择“统计-Commits历史-设置时间段”,然后搜索并截图

1109870-20170309204732000-994687925.png

3.2 实验总结

实验碰到的问题:(1)使用toString函数输出"类名 [name=, age=, gender=, id=]"时格式错误(2)不清楚初始化类与对象时,构造函数、初始化块、静态初始化块的执行顺序。(3)对(int)Math.PI*radius*2与(int)(Math.PI*radius*2)的区分不够清楚。
解决方案:(1)利用Eclipse自动生成toString函数时,注意name,age,gender,id的顺序(2)实践证明,初始化类与对象时,执行的先后顺序为静态初始化块、初始化块、构造函数(3)(int)Math.PI*radius*2是先将Math.PI强制转换成整型再*radius*2,(int)(Math.PI*radius*2)是将Math.PI*radius*2的结果强制转换成整型,本题中应采用(int)(Math.PI*radius*2)。

4. 其他的一些题目,如特别加分的实验题目、小任务、自己用Java做的一些小东西(可选,加分)

转载于:https://www.cnblogs.com/kzq-java-markdown/p/6525063.html

你可能感兴趣的文章
hdu--2848--未解决
查看>>
HDU 5943 Kingdom of Obsession 二分图的匹配
查看>>
iOS 播放GIf图, 动态效果
查看>>
poj 1703 Find them, Catch them (并查集)
查看>>
SQL Server Execute Package Utility Version 10.50.2500.0 for 64-bit
查看>>
compilation debug= true targetframework= 4.0 / configuration error
查看>>
数据结构:分块-区间众数查询
查看>>
使用四阶龙格库塔方法求解三体问题(解十二元一阶常微分方程组)
查看>>
搜索:N皇后
查看>>
BlockingQueue and BlockingDeque
查看>>
paython3-练习
查看>>
练习3:参数值传递的汇编实质
查看>>
弹出键盘时UITableview内容跟着上移,不至于被键盘挡住,导致UITableView内容显示不完...
查看>>
JS 实现触发下载内容(H5 download)
查看>>
jQuery中的编程范式
查看>>
redis linux版本自定义安装目录、注册服务、自启动设置、一台计算机安装多个redis...
查看>>
矩阵连乘 动态规划
查看>>
获取Civil 3D 三角网曲面TinSurface中每个小三角形的法向量
查看>>
hdu 5464 Clarke and problem
查看>>
Could not create the view: An unexpected exception was thrown.问题解决
查看>>