• java课堂作业


    课上问题

    1.早期我们经常这样定义变量

    int value=100;

    前面的示例中这样定义变量

    MyClass obj = new MyClass();

    这两种方式定义的变量是一样的吗?

    答:不一样,前面是定义定义原始数据类型的变量,而后边是定义一个对象变量。

    2.对于原始数据类型的变量(比如int),可以直接使用“==”判断两变量值是否相等,对象变量也可以使用“==”判断两变量值是否相等吗?

    不可以。因为对象变量使用==”判断的是地址是否相等。

    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.

      请总结一下,这个方法有哪些“与众不同之处”,你能列出几条?

      答:函数名与类名相同,没有返回值。

    5. 以下代码为何无法通过编译?哪儿出错了?

     

    答:Foo类的构造函数有参数,而主函数中定义对象时没加变量。

    6.如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?

        答:他们都是用于初始化,三者的执行次序为初始化块,初始值,构造方法,所以最后的构造方法说了算。

    7.以下代码输出结果是什么?

     

     

    答:输出结果为

     

    8.请依据代码的输出结果,自行总结Java字段初始化的规律。

    答:java字段初始化时当类中存在初始化块,初始值,构造方法时,当无参数创建一个对象时,会进行初始化块和初始值的步骤,并调用无参数的构造函数,当进行添加参数时他会再调用构造函数。所以第一次的值是100,第二次是300

    9.请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

     

    总结:对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。 

    10.

     

    两对整数明明完全一样,为何一个输出true,一个输出false

    答:integer不是一个基本类型,而是int的一个包装类,所以上式表明i1和j1指向的是同一个对象,而i2j2则是分别指向不同的对象。

    在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。

    上面的代码中i1和i2的数值为100,因此会直接从cache中取已经存在的对象,所以i1和j1指向的是同一个对象,而i2j2则是分别指向不同的对象。

    11.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?

        //20163677 多文佳

    public class duixiang {

    public static int i=0;

    {

    i+=1;                     //用于创建对象个数的累加

    }

    public int chaxun() {  //用于查询当前创建对象的个数

    return i;

    }

     

  • 相关阅读:
    Mysql 设置变量的几种方式
    Mysql Alter table 操作
    Truncate有外键约束的表
    Mysql ESCAPE 用法
    Jquery checkbox operation
    Mysql 根据URL获取顶级域名
    MySQL分区表操作
    TIB工作室动态今后将发布在 http://www.automationqa.com/ , 敬请关注!
    TestPartner资源列表
    如何开始学习一个自动化测试工具?
  • 原文地址:https://www.cnblogs.com/duowenjia/p/7697742.html
Copyright © 2020-2023  润新知