一,      课堂练习

(一)构造方法

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运行结果

3结果分析

父类静态块第一个执行,子类静态块第二个执行,父类初始值代码第三个执行,父类构造函数第四个执行,子类动态初始化块第五个执行,子类构造函数第六个执行。

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

(四)运行结果:

总结分析:

对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

二,      课后作业

请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象

(一)源代码:

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

(二), 运行结果

JAVA作业02的更多相关文章

  1. JAVA自学作业02

    JAVA自学作业02 1.什么是标识符?由哪些部分组成?常见的命名规则有哪些? 标识符是用户为变量的内存空间所定义的字符序列: 可以由字母.下划线.美元符号以及数字组成,但数字不可作为首字符.标识符不 ...

  2. 假期作业02:安装JDK与文本编辑器并编写第一个Java程序

    假期作业02:安装JDK与文本编辑器并编写第一个Java程序 一.安装JDK与文本编辑器并编写第一个java程序 首先在oracle官网(需要创建账号,进行登录后方可使用)按照自己的需求下载JDK(h ...

  3. 第五次Java作业

    作业一: 文件显示列表框. 增加了下拉式组合框,text区域设置颜色为红色. import javax.swing.*; import java.awt.*; import java.io.File; ...

  4. Java学习02

    Java学习02 1.导入内部的包 一.在包的下面加入下面一句话: import    java.util.Scanner; 二.在类中 Scanner input=new     Sanner(Sy ...

  5. Java作业:第四次过程性考核 ——长春职业技术学院 16级网络工程

    Java作业:第四次过程性考核 码云链接:https://gitee.com/SoridoD/java_kaohe4    (时间匆忙没打注释,真有急事) (客户端和服务器会自动创建表,所以没有sql ...

  6. Java作业:第一次过程性考核 ——长春职业技术学院 16级网络工程

    Java作业:第一次过程性考核 ••<结构化程序设计>•• 考核目标:初步了解Java基本语法规则,学习结构化程序设计思想. 码云链接:https://gitee.com/SoridoD/ ...

  7. 初识Java作业

    初识Java作业 一.    填空题 Java技术按照用途不同分为三大版本,分别是JavaSE.     javaEE       和JavaMe Java虚拟机就是一个虚拟的用于执行  .class ...

  8. C语言I—2019秋作业02

    1.[新增内容] 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 <C语言I-2019秋作业02> 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 <实现一些基 ...

  9. c语言1博客作业02

    c语言1博客作业02 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪 [作业要求](https://edu.cnblogs.com/campus/zswxy/SE2019-2/homewor ...

随机推荐

  1. Sqli-LABS通关笔录-16

    这个关卡之前我还使用了一下工具跑,发现居然跑不出来.这就尴尬了.行吧手工试试. payload admin") and If(ascii(substr(database(),1,1))=11 ...

  2. OpenCV成长之路(7):图像滤波

    滤波实际上是信号处理里的一个概念,而图像本身也可以看成是一个二维的信号.其中像素点灰度值的高低代表信号的强弱. 高频:图像中灰度变化剧烈的点. 低频:图像中平坦的,灰度变化不大的点. 根据图像的高频与 ...

  3. String与InputStream互转的几种方法

    [java] view plain copy /** * 利用BufferedReader实现Inputstream转换成String <功能详细描述> * * @param in * @ ...

  4. fzu2172 字符串dp

    F - 巡了南山我巡北山 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  5. phpcms模块开发简易教程

    简介: 在phpcms中,各个功能是以模块为单位定义的(对应modules目录),如果需要新增功能最好的办法就是开发一个模块,然后复制到phpcms目录下,然后进入后台安装即可. 官方说明: phpc ...

  6. 【GoLang】函数作为 类型 和 值

    代码示例 package test import ( "fmt" "testing" ) type testInt func(int) bool func is ...

  7. [k]css盒模型

    box-sizing :  content-box || border-box || inherit 1.content-box:此值为其默认值.元素的宽度/高度(width/height)等于元素边 ...

  8. c#之Insert字符串的三种写法

    1.Format Format(String, Object) 将指定字符串中的一个或多个格式项替换为指定对象的字符串表示形式. ex1:简单示例怎么应用 private void btnTest_C ...

  9. 如何使用shell脚本快速排序和去重文件数据

    前面写过一篇通过shell脚本去重10G数据的文章,见<用几条shell命令快速去重10G数据>.然而今天又碰到另外一个业务,业务复杂度比上次的单纯去重要复杂很多.找了很久没有找到相应的办 ...

  10. ios swfit 由继承UIButton了解类的构造方法

    最近需要建立UIButton的子类. 先看一看swfit中继承父类构造方法的条件: Rule1 1“If your subclass doesn’t define any designated ini ...