课后作业

1.

public MyTestClass(int initValue){
Value=initValue;
}

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

方法名与类名相同

没有void也没有返回值

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

public class InitializeBlockDemo {

    public static void main(String[] args) {
        
        InitializeBlockClass obj=new InitializeBlockClass();
        System.out.println(obj.field);
        
        obj=new InitializeBlockClass(300);
        System.out.println(obj.field);
    }

}

class InitializeBlockClass{
    
    {
        field=200;
    }
    public int field=100;
    public InitializeBlockClass(int value){
        this.field=value;
    }
    public InitializeBlockClass(){
        
    }
}

  由示例程序可知由构造函数决定

3.总结Java字段初始化的规律。

所有类的变量都默认初始化为null

数字类的原始数据类型默认初始化为0

执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

执行类的构造参数

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

4.静态初始化块的执行顺序

静态初始化块只执行一次。

创建子类型的对象时,也会导致父类型的静态初始化块的执行。

5.

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

请编写代码验证你的想法。

package lizi;
public class ceshi {
     int a = 3;
     static int b=4;   
     public static void ceshiyi()
     {
        System.out.println("非静态变量a=" + new ceshi().a);
        System.out.println("静态变量b=" + b);
     }
 public static void main(String[] args)
     {
     ceshi.ceshiyi();
     ceish i= new ceshi();
  System.out.println("a=" + i.a);
  
     }
}

 由例子可知需进行类的实例化

6.Integer类的装箱和拆箱到底是怎样实现的?

装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 intValue方法实现的.

7.上述神奇代码(StrangeIntegerBehavior.java)输出诡异的结果,原因何在?

integer实现时整型范围为-128到127 第一个未超出范围所以true而第二个超出范围所以false

 
原文地址:https://www.cnblogs.com/zhpdqs/p/7698384.html