• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
齐畅
博客园    首页    新随笔    联系   管理    订阅  订阅
201521123073《Java程序设计》第3周学习总结

1. 本周学习总结

2. 书面作业

1.代码阅读

public class Test1 {
    private int i = 1;//这行不能修改
    private static int j = 2;

    public static void main(String[] args) {
        geti();
        Test1.getj();
    }

    public static void geti() {
        System.out.println(i);
    }

    public static void getj() {
        System.out.println(j);
    }

}

以上代码可否编译通过?哪里会出错?为什么?尝试改正?
如果创建3个Test1对象,有内存中有几个i,几个j?请分析原因?

答:
<1>以上代码不能通过编译
<2>“Test1getj()”和“ System.out.println(i)”两个地方出错
<3>因为只能在静态的方法里调用静态的变量,而i不是静态的
<4>Test1getj()改为Test1.getj();创建一个新对象t=new Test1 ,System.out.println(i)改为System.out.println(t.i)
<5>会有3个i,一个j。因为j是static只有一个存储空间,i是非static每创建一个对象都会形成一个存储空间。


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

答:
<1>构造函数是对类进行初始化操作,如初始化类的属性值;
<2>其编写格式为:修饰符 类名(形参){ };
<3>有的。若无定义,系统默认有一个无参构造方法;
<4>如果一个类中只有带参的构造函数,那它没有不带参数的默认构造函数


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

答:因为math里面含有的都是静态的,不需要生成对象,也就不用new;如果new Math()就会出现The constructor Math() is not visible。即编译错误。


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

答:
<1>重载:就是函数或者方法有相同的名称,但参数是不同的参数类型,不同的参数个数,不同的参数顺序
<2>构造函数重载:具有相同名称的构造函数但是函数所含参数类型、个数不同。构造函数的作用就是实例化一个对象。
<3>区分两个重载函数的方法是根据传入的参数数量、顺序、类型来区别


5.final修饰的变量不能改变,为什么如下代码可以正常运行?
final int[] NUMBS= {1,2,3,4,5};
NUMBS[2] = 1;

答:对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。


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

答:
<1>private只有内部可以访问,外部无法访问,增加了程序的私密性

<2>
public Employee()
{
this("雇员1",3000,2017,3,10);
}
<3>
public Employee(String n, double s) 
{
    this.name = name;
    this.salary = salary;
    gethideDay();
}

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

public static boolean isMondayToFriday() {
    LocalDateTime localDateTime = LocalDateTime.now();
    int day = localDateTime.getDayOfWeek().getValue();
    if (day >= 1 && day <= 5) 
    {
        return true;
    }
    else 
    {
        System.out.println("休息时间");
        return false;
    }
        
}

3. 码云代码提交记录

4. PTA实验

第一题:有些代码是不需要自己手动写的,比如toString()、getter和setter都可以自动生成。哈哈,体会到eclipse的神奇。
第二题:只需加入static关键字对id进行修饰。另外初始化块、静态初始化块都是初始化类与对象的方法,且静态初始化块最先执行。
第三题:使用Math.PI时因为radius为int型所以结果需要转换为int型。
另外:
1.熟悉了掌握类的定义及如何构造有参和无参函数。
2.学习了创建类的方法,包括类的使用,构造函数的使用。

posted on 2017-03-11 20:10  齐畅  阅读(142)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3