zoukankan      html  css  js  c++  java
  • java第二次作业

    一、学习要点

    认真看书并查阅相关资料,掌握以下内容:

    理解对象的创建与引用的关系
    掌握构造方法的重载
    掌握String类
    掌握类的设计方法
    掌握this关键字
    掌握static关键字
    理解引用传递并掌握基本应用
    掌握单例模式
    理解内部类
    二、作业要求

    发布一篇随笔,主要包括以下几部分的内容:

    (一)学习总结

    1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?

    public class Test {
        public static void main(String args[]) { 
           Foo obj = new Foo();       
        }     
    }
    class Foo{
        int value;
        public Foo(int intValue){
            value = intValue;
        }
    }
    

    (1)构造方法的重载就是方法名称相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。
    (2)该程序不可以运行,因为只定义了一个有参构造方法;如果在一个类中已经明确了地声明了一个构造方法,那么程序在编译时将不会再生成默认的构造方法。
    (3)构造方法的名称是与类名相同的;
    (4)构造方法没有返回值,即方法名前没有void,int等数据类型,方法体内没有return语句;
    (5)参数格式为:数据类型 数据名称 其定义的变量可以在方法内使用,常用来传递数据。而在本方法体外是没有办法访问的,亦可理解为局部变量。
    2.运行下列程序,结果是什么?分析原因,应如何修改。

    public class Test {
    public static void main(String[] args) {
    MyClass[] arr=new MyClass[3];
    arr[1].value=100;
    }
    }
    class MyClass{
    public int value=1;
    }

    结果是

    原因:没有实例化
    修改:实例化
    3.运行下列程序,结果是什么?说明原因。

    public class Test {
    public static void main(String[] args) {
    Foo obj1 = new Foo();
    Foo obj2 = new Foo();
    System.out.println(obj1 == obj2);
    }
    }
    class Foo{
    int value = 100;
    }
    结果是

    原因:存储地址不同

    4.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。
    就是封装起来,一个对象一个对象的, 对象与对象之间的通信也是用专门的对象的
    Java的封装是通过private修饰符来声明属性和方法实现的。对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节,即封装。对事物进行分类。把具有相同属性和服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个示例。
    5.阅读下面程序,分析是否能编译通过?如果不能,说明原因。
    (1)

    class A{
    private int secret = 5;
    }
    public class Test{
    public static void main(String args[]){
    A a = new A();
    System.out.println(a.secret++);
    }
    }
    不能,因为insert是私有属性
    (2)

    public class Test{
    int x = 50;
    static int y = 200;
    public static void method(){
    System.out.println(x+y);
    }
    public static void main(String args[]){
    Test.method();
    }
    }
    不能,因为x没有定义为static属性
    6.使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出测试类代码和Book类的部分代码,将代码补充完整。

    class Book{
        int bookId;
        String bookName;
        double price;
        // 声明静态变量
        public static a
        //定义静态代码块对静态变量初始化
        static{
            a=0;
        }
        //构造方法
         public Book(String bookName,double price ){
             this.bookName=bookName;
            this.price =price ;
            a++;
            this.bookId=1000+a;
        }
         public String getBookName() {
            return bookName;
        }
      public double getPrice() {
            return price;
        }
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
      
        public void setPrice(double price) {
            this.price = price;
        }  
        //定义方法求图书总册数
        public int totalBook(){
              return a;
         }
        //重写toString方法
         public string toString(){
           return "编号"+bookld+“书名”+bookName+"价格"+"price "+"图书总数目为"+a;
        }
    }
    public class Test{
        public static void main(String args[]){ 
            Book[] books = {new Book("c语言程序设计",29.3),
                            new Book("数据库原理",30),
                            new Book("Java学习笔记",68)};
            System.out.println("图书总数为:"+ Book.totalBook()); 
            for(Book book:books){
                System.out.println(book.toString());
            }
        }   
    }
    

    7.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。
    1.单例类只能有一个实例.
    2.单例类必须自己创建自己的唯一实例.
    3.单例类的构造器必须是私有,不允许外界通过构造器创建对象.
    4.单例类只能通过公开的静态方法向外界返回类的唯一实例

    class Sun{
    private Sun in = new Sun();
    private Sun(){
    }
    public static Sun getIn(){
    return in;
    }
    }
    

    8.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。

    public class Test {
    String str = new String("你好 ");
    char[] ch = { 'w','o','l','l','d' };
    public static void main(String args[]) {
    Test test = new Test();
    test.change(test.str, test.ch);
    System.out.print(test.str);
    System.out.print(test.ch);
    }
    public void change(String str, char ch[]) {
    str = "hello";
    ch[0] = 'W';
    }
    }

    输出“你好”后,空间会被释放掉,而ch数组中w会变成W,然后输出

    9.其他需要总结的内容。

    (二)实验总结

    本次实验包括实验二和实验三两次的内容:
    1.用面向对象思想完成评分系统
    程序设计思路:用三个类,然后在测试类中调用
    2.Email验证
    程序设计思路:用一个方法进行判断,然后再在主函数中调用,用charAt等函数来判断
    问题1:结果不对
    原因:布尔类型和int不能相互转化
    3.查找子串
    程序设计思路:输入字符串和要查找的子串,通过循环来查找子串
    4.统计文件
    程序设计思路:用str.substring()和toUpperCase()函数
    5.类的设计
    对完成实验内容过程中遇到的问题、解决方案以及程序的设计思路和思考等进行归纳总结。

  • 相关阅读:
    cpu核数和逻辑个数的区别_CPU逻辑核心数和物理核心数
    linux查看CPU数
    Java读取excel中日期格式结果为数字44326天
    Java实现读取excel中的数据及图片
    jmeter设置全局变量,获取登录token,实现两个线程组参数公用
    CPU使用率
    快照版本和发布版本区别
    jmeter与postman请求结果返回不一致
    接口认证方式:Bearer Token
    jmeter 中报java.lang.OutOfMemoryError: Java heap space
  • 原文地址:https://www.cnblogs.com/xuan0826/p/8688660.html
Copyright © 2011-2022 走看看