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

}

}

运行结果:

原文地址:https://www.cnblogs.com/yyh-678/p/7693393.html