一,      课堂练习

(一)构造方法

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. css3延时动画

    不太理解属性都是什么意思,但是有动画效果,我也是惊呆了 <style> #animated_div{animation:animated_div 4s 1; -moz-animation: ...

  2. UNTIY3D接入91SDK的办法

    原地址: http://bbs.18183.com/thread-111324-1-1.html UNITY3D接入Android-SDK 方法一:把UNITY3D游戏打成安卓项目文件,修改安卓项目文 ...

  3. 客户端安全-xss-1类型介绍

    1.需求 xss的有哪些类型的了解 2.xss的类型 1.反射 xss 2.存储 xss 3.Dom based xss 3.类型详解 1.反射xss例子 <?php echo 3; $a = ...

  4. 破解Excel保护

    一.录制宏 二.停止录制 三.查看录制 四.点击编辑进入VB编辑环境 五.清空原有的内容,copy以下代码 Public Sub 工作表保护密码破解() Const DBLSPACE As Strin ...

  5. VirtualBox CentOS安装增强功能与设置共享文件夹

    如果安装的是CentOS minimal版无网络的可以看这篇文章. 一.安装依赖环境 依次执行如下命令 yum install update yum install kernel-headers yu ...

  6. php中发送email

    一.使用PHP内置的mail()函数 看了一下手册,就直接开始写代码了,如下 <?php $to = "test@163.com"; //收件人 $subject = &qu ...

  7. DICOM医学图像窗口变换的加速算法

    详见:http://pan.baidu.com/s/1gfFLbJ9 DICOM医学图像窗口变换的加速算法* 张尤赛 ,陈福民 ( 同济大学计算中心, 上海 200092 ) (华东船舶工业学院电子与 ...

  8. Raspberry Pi 学习笔记之一

    记录几个搭建服务器教程: [教程] 将树莓派变成网络打印机服务器(更新PC和手机端设置)!http://www.eeboard.com/bbs/thread-8818-1-1.html[心得] [分享 ...

  9. 【GoLang】golang 微服务框架 介绍

    原文如下: rpcx是一个类似阿里巴巴 Dubbo 和微博 Motan 的分布式的RPC服务框架,基于Golang net/rpc实现. 谈起分布式的RPC框架,比较出名的是阿里巴巴的dubbo,包括 ...

  10. Shortest Palindrome

    Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. ...