• 201521123072《java程序设计》第三周学习总结


    201521123072《java程序设计》第三周学习总结

    标签: java学习


    1. 本周学习总结

    2. 书面作业

    1,代码阅读

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

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

    不可以通过编译,第7行,第11行出错。因为geti()方法是静态的,可是i却是非静态的,应该改为:public void geti(),
    Test1 Test=new Test1();
    Test.geti();
    第7行调用方法时的格式写错了,应该为:Test1.getj();

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

    三个i,一个j

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

    构造函数的作用:给对象中的属性进行初始化,编写格式为:构造函数名与类名相同即可
    如果一个类不写构造函数,它有构造函数
    如果一个类中只有带参的构造函数,它没有不带参数的默认构造函数

    3,使用java.lang.Math类的函数时,为什么不需要new?如果new Math()会产生什么错误?
    Math类的源代码如下:(只是部分)

    public final class Math {
    
        /**
         * Don't let anyone instantiate this class.
         */
        private Math() {}
    
        /**
         * The {@code double} value that is closer than any other to
         * <i>e</i>, the base of the natural logarithms.
         */
        public static final double E = 2.7182818284590452354;
        }
    

    由上可见,Math类的构造函数是没有参数的,并且为私有的,其他的方法也全为私有的,在外部是不能改变的。
    如果new Math(),会提示:The constructor Math() is not visible

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

    重载:函数的函数名相同,自变量的类型不同或者参数的个数不同
    构造函数重载:函数的函数名与类名相同,自变量的类型不同或者参数的个数不同
    java.lang.Math类中函数重载的例子:
    根据自变量的类型不同或者参数的个数来区分

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

    因为数组是对象,用final定义数组对象,只是数组这个对象不可变,即该数组名不能指向其他的数组,但是里面的数值还是可以改变的

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

    其属性为private,限制了访问权限,可以不让外部随意更改类中已经打包好的代码,体现了封装的特性
    为Employee类增加一个无参构造函数:

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

    为Employee类再增加一个有参构造函数:

     public Employee(String name, double salary){
    		  System.out.println(LocalDate.now());//当前日期,当前系统默认时区
    	 }
    

    7,编写函数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. 码云代码提交记录

    4. PTA实验

    题目集:jmu-Java-03-面向对象1-基础-封装继承 中的编程(5-1, 5-2, 5-3)
    实验1:
    可以通过以下方法建立对象数组:

    Person []persons = new Person[n];  
    		 for(int i=0;i<n;i++){
    persons[i]= new Person(in.next(),in.nextInt(),in.nextBoolean());
    }
    

    学会了用快捷方法写Getter,Setter,toString方法
    实验2:
    对象建立之后会先执行对象初始区块,若有静态初始区块,则先执行静态初始化块,并且只执行一次,接着才调用指定的构造函数

  • 相关阅读:
    【用例篇】Xmind转为csv 导入禅道
    idea替换当前文件内容
    配置IDEA项目JDK环境
    git 只提交部分修改文件
    `总结TESTNG与JUNIT的异同
    POST请求BODY格式区别
    【转】使用AllureReport生成测试报告
    Springboot+Redis 配置和使用
    【转】git branch 命令查看分支、删除远程分支、本地分支
    [转]Json字符串和map和HashMap之间的转换
  • 原文地址:https://www.cnblogs.com/wish-tree/p/6534456.html
Copyright © 2020-2023  润新知