• 2017.10.20作业


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

     如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。Test类在进行调用下面类方法的时候,没有加上参数。

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

    class Test3 {

     public int field=100;

     {

     field=200;

     }

    public Test3(int value)

    {

    this.field=value;//如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,还要看两者的

    //先后顺序,谁在后,创建对象的的时候,就会使用谁。

    }

    public Test3()

    {

    }

    public static void main(String []args)

    {

    Test3 obj= new Test3();

    System.out.println(obj.field);  

    //类的初始化块,只要一被创建,就会被执行;

    //如果有构造参数,就会执行构造参数。

    obj=new Test3(300);

    System.out.println(obj.field);

    // TODO 自动生成的方法存根

     }}

    运行以上代码,调换构造方法和类的初始化块的顺序,就会有不一样的结果。

    1. 静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

    答: 设置参数

    package 第四次上课;

    public class Static {

    public static void main(String[] args)

    {

    F t=new F();

    int a=t.getnum();

    F.input(a);

    t.input(a);

    }

    }

    //静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

    //可以通过设置参数访问

    class F

    {

    int a = 100;

    public int getnum()

    {

    return a;

    }

    public static void input(int c)

    {

    System.out.println("静态方法调用实例成员"+c);

    }

    }

    运行以上代码,在F类中,有实例化成员,正型变量100,还有静态方法,静态方法中设置了int类型参数,然后就可以访问类中的实例化成员了。

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

     

    答:JDK1.5中对整形数据采用了缓存,使用该种方法定义整形的包装类对象时,

     * 会自动进行装箱,装箱的时候编译器实际上调用的是Integer的valueOf方法。

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

    代码如下:package 第四次上课;

    public class Sum {

    public static int a=0;

        int c;

       public Sum(int cc)

      {

         c=cc;

         a++;

       } //上面静态定义一个a,每次执行一次构造函数,就加一,用来计数。

       //最后随便输出一个对象加点get(),就可以输出计数结果

       public int get()

       {

        return a;

       }

    }

    package 第四次上课;

    public class Shiyan {

    public static void main(String[] args)

    {

    Sum one=new Sum(2);

    Sum three=new Sum(3);

    Sum a=new Sum(7);

    Sum b=new Sum(2);

    //输出

    System.out.println("你已经创建对象的个数是:"+three.get());

    }

    }

    运行结果:

  • 相关阅读:
    CListCtrl基本用法
    学习c++:获得函数私有变量
    vc 学习笔记 之工程
    怎样用c/c++编程连接mysql数据库?
    几天的总结,CEdit,CListctl.......
    c++ const成员函数
    PreparedStatement是如何大幅度提高性能的 (转)
    __declspec(dllexport)与.def文件
    让我懂得 多态性 的网友的帖子
    解读工程 之困惑之处
  • 原文地址:https://www.cnblogs.com/yyh-678/p/7693393.html
Copyright © 2020-2023  润新知