zoukankan      html  css  js  c++  java
  • java作业3

    一.构造方法

    1.源代码

    public class Test{

             public static void main(String[] args){

                      Foo obj1=new Foo();

             }

    }

    class Foo{

             int value;

             public Foo(int initValue){

                      value=initValue;

             }

    }

    2.程序截图

     

    3.结果分析

    若构造方法已提供,则系统不再提供默认构造方法。

    二.JAVA字段初始化

    1.源代码

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

                     

             }

    }

    2.程序截图

     

    3.结果分析

    关于java字段初始化问题,无继承情况:初始化块第一个执行,字段初始值设置代码第二个执行,构造函数第三个执行。

    三.有继承情况的初始化问题

    1.源代码

    class B{

     public B() {

      System.out.println("父类  构造函数第四个执行");

     }

     {

      System.out.println("父类  动态代码块第三个执行");

     }

     static {

      System.out.println("父类   静态块第一个执行");

     }

    }

    public class A extends B{

     public A() {

      System.out.println("子类   构造函数第六个执行");

     }

     {

      System.out.println("子类   动态代码块第五个执行");

     }

     static {

      System.out.println("子类   静态块第二个执行");

     }

     public static void main(String[] args) {

      new A();

     }

    }

    2.程序截图

     

    四.

     

     

    对象的初始化顺序:首先执行父类静态的内容,父类静态内容执行完毕后,执行子类内容。子类执行完后,再去看父类有没有非静态代码块,如果有就执行。父类非静态代码块--->父类构造方法--->子类非静态代码块--->子类构造方法。

    五.课后作业  编写一个类,在任何时候都能查询创建对象的个数

    1.源代码

    public class Test {                private int id;                private String name;                private static long count;                private final static ThreadLocal tl=new ThreadLocal();                public Test() {                                super();                                count++;                                tl.set(count);                }                public long getCount(){                                return (Long)tl.get();                }                public static void main(String[] args) {                                for (int i = 0; i < 5; i++) {                                               Test t=new Test();                                               System.out.println(t.getCount());                                }                }                 }

    2.程序截图

     

     

     

  • 相关阅读:
    Data Visualisation Cheet Sheet
    数据预处理
    算法题目
    集成方法
    Mysql数据库重要知识点(知了堂学习心得)
    Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 创建复杂数据模型
    Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 排序、筛选、分页以及分组
    Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
    ASP.NET Core文档中Work with Data章节的翻译目录
    webpages框架中使用Html.TextArea()在前台显示多行信息时,如何进行大小、样式的设置
  • 原文地址:https://www.cnblogs.com/Jasoon/p/4888481.html
Copyright © 2011-2022 走看看