动手动脑

Posted 1502762920-com

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动手动脑相关的知识,希望对你有一定的参考价值。

一:看代码找错误

技术分享图片

 

技术分享图片

 

 

 二:java字段初始化规律

package 代码测试;

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

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

}

  

输出结果为:100 300

分析

1  {field=200;} 该部分为类的初始化模块,在类中直接将语句包围起来,直接作为类成员,像这种成员多用与初始化类的字段。

2  在 public int field=100; 定义时初始化,所以obj.field值为100

obj=new InitializeBlockClass(300);
        System.out.println(obj.field);

利用构造方法初始化,将field的值初始化为300,输出为300;

4 Java字段初始化的规律:

静态初始化生成实例(new之后)变成你赋给他的值,先执行静态初始化,如果没有实例化,按照初始化和构造方法在程序中出现的顺序执行。

当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

 

 三:类字段的初始化顺序

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

2 执行类的构造函数

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

四:静态初始化的执行顺序

技术分享图片

五:如何在静态方法中访问类的实例成员(即没有附加static)

package Test;

public class emm {
    public static void display() {
        System.out.println("吴林祥");
    }
    public void display1() {
        System.out.println("吴林祥666");
    }
    public static void main(String[] args) {
        emm e=new emm();
        e.display1();
        emm.display();
    }
    

}

静态方法中不能直接访问同一类中的非静态成员,而必须先创建对象,再通过对象访问成员

六:Integer诡异特性

package 代码测试;

public class ceshi {
    public static void main(String[] args) {
        Integer i1=100;
        Integer j1=100;
        System.out.println(i1==j1);
        
        Integer i2=129;
        Integer j2=129;
        System.out.println(i2==j2);
    }

}

  结果

技术分享图片

输出结果不一样主要是因为与IntegerCache类有关 为了避免重复创建对象,对INteger值做了缓存,如果这个值在缓存的范围内直接返回缓存对象,否则new一个新的对象返回。

 



以上是关于动手动脑的主要内容,如果未能解决你的问题,请参考以下文章

课堂动手动脑

Java11月9日的动手动脑

方法的动手动脑

动手动脑

第七周动手动脑(2018.10.29-11.4)

JAVA09异常处理之动手动脑问题