作业:使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。

源代码:

 1 import java.util.Scanner;
 2
 3 class sss123 {
 4     //将用来计次的变量times给初始值为0
 5     public static int times=0;
 6     sss123() {
 7         //构造函数,每创建一个实例times就增加1
 8         times=times+1;
 9     }
10 }
11
12 public class StaticValue {
13     public static void main(String[] args) {
14         sss123 s1 = new sss123();
15         sss123 s2 = new sss123();
16         sss123 s3 = new sss123();
17         //可以看到当前我们已经手动创建了3个对象,接下来调用sss123类的静态变量查询创建了多少对象
18         System.out.println("当前创建的对象个数为 "+sss123.times);
19     }
20 }
21
22 //public class StaticValue {
23 //    public static void main(String[] args) {
24 //        String YorN=new String();
25 //        YorN="Y";
26 //        int i=0;
27 //        Scanner sc = new Scanner(System.in);
28 //        while(YorN.equals("Y"))
29 //        {
30 //            System.out.println("正在创建一个对象");
31 //            //我希望每循环一次就创建一个对象,但是不知道怎么表达
32 //            sss123 s = new sss123();
33 //            System.out.println("创建对象完成");
34 //            System.out.println("当前共创建对象个数为 "+sss123.times);
35 //            System.out.println("是否要继续创建对象?是(Y)/否(N)");
36 //            YorN=sc.nextLine();
37 //        }
38 //    }
39 //}

课堂例子:
1、对TestStaticInitializeBlock.java的总结:

源代码:

 1 class Root
 2 {
 3     static{
 4         System.out.println("Root的静态初始化块");
 5     }
 6     {
 7         System.out.println("Root的普通初始化块");
 8     }
 9     public Root()
10     {
11         System.out.println("Root的无参数的构造器");
12     }
13 }
14 class Mid extends Root
15 {
16     static{
17         System.out.println("Mid的静态初始化块");
18     }
19     {
20         System.out.println("Mid的普通初始化块");
21     }
22     public Mid()
23     {
24         System.out.println("Mid的无参数的构造器");
25     }
26     public Mid(String msg)
27     {
28         //通过this调用同一类中重载的构造器
29         this();
30         System.out.println("Mid的带参数构造器,其参数值:" + msg);
31     }
32 }
33 class Leaf extends Mid
34 {
35     static{
36         System.out.println("Leaf的静态初始化块");
37     }
38     {
39         System.out.println("Leaf的普通初始化块");
40     }
41     public Leaf()
42     {
43         //通过super调用父类中有一个字符串参数的构造器
44         super("Java初始化顺序演示");
45         System.out.println("执行Leaf的构造器");
46     }
47
48 }
49
50 public class TestStaticInitializeBlock
51 {
52     public static void main(String[] args)
53     {
54         new Leaf();
55     }
56 }

运行结果:

由此可见,静态初始化块的执行顺序为:先执行父类的静态初始化块,再执行子类的静态初始化块,然后在执行父类的普通初始化块和构造函数,最后执行子类的普通初始化块和构造函数

Java字段初始化的规律:先执行静态初始化快,再执行普通初始化快,在执行构造函数,再执行字段的初始值。

这个错的地方在于构造函数中要求传入一个整形变量,但是在主函数中使用的时候并没有传入整形变量,导致出错

转载于:https://www.cnblogs.com/yychnbt/p/4888573.html

Java类与对象——几个课堂例子的总结及作业相关推荐

  1. 杨校老师课堂之Java类与对象、封装、构造方法

    杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...

  2. 【Java类和对象】

    Java类和对象 在Java简介中就有介绍到,Java是一门面向对象的编程语言,在面向对象的编程语言中,肯定离不开对象这个概念,而对象则是类的实例,所以也肯定离不开类这个概念.简单的来说就是,在Jav ...

  3. java类与对象 编程题目_Java类与对象的课后练习

    Java类与对象的课后练习编程题(java2实用教程P111) 这章内容自学完了,在做教材课后其他练习题的时候(只要自己仔细)都没啥问题,但在做最后一道上机编程题的时候问题出现了,在阅读题目的时候自己 ...

  4. java类与对象实验_JAVA类与对象实验报告

    <JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...

  5. 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?

    转载自   从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的? 先回顾一下Java程序执行的过程: Java程序执行时,第一步系统创建虚拟机进程,然后虚拟器用类加载器Class Loade ...

  6. java类和对象程序_Java类与对象程序设计基础

    Java类与对象程序设计基础 一.实验目的: 通过编制一个独立应用程序,使得学生掌握Java的系统所提供类的引用方法:通过编制一个完整的应用程序,使得学生对Java的应用程序的基本构成和基本算法熟练掌 ...

  7. java类与对象 演练 查找并修改姓名

    java类与对象 演练 查找并修改姓名 视频 https://www.ixigua.com/i6870489659168784903/ 思路 先定义一个类 类中有一个名字数组 提前给这个数组一些默认值 ...

  8. java类与对象 演练 客户姓名添加与查看

    java类与对象 演练 客户姓名添加与查看 视频 https://www.ixigua.com/6870483106223096327?logTag=_YUmIb2rn9-6JpoNipj9r 类的定 ...

  9. 最大公约数与最小公倍数( 初学Java 类与对象 )

    最大公约数与最小公倍数( java 类与对象的运用 ) Problem Description 输入两个正整数,求它们的最大公约数与最小公倍数. Input 输入两个正整数,两个整数之间用空格分开. ...

  10. Java类和对象(如何理解类和对象)

    Java类和对象 一.什么是对象? 1.什么是对象的属性? 2.什么是对象的行为 二.什么是类? 三. 类和对象的关系 四.类的定义 1.类的定义格式 2.类的定义示例 五.对象的使用 1.对象的创建 ...

最新文章

  1. jQuery Ajax 实例 ($.ajax、$.post、$.get)
  2. 如何基于MySQL及Redis搭建统一的kv存储服务 | 秦波
  3. Hibernate two table same id
  4. mac r 导出csv文件_每天学习一点R:8.数据的导入和输出
  5. php输出mysqli查询出来的结果
  6. PAT (Advanced Level) 1004 Counting Leaves(树的遍历)
  7. java8 base64_Java 8中的Base64 –加入乐趣为时不晚
  8. SharePoint自动化系列——通过PowerShell创建SharePoint Lists
  9. oracle last_day比较,Oracle的LAST_DAY函数
  10. 搭建Vue2.0脚手架(vue-cli)
  11. shell脚本特殊变量与变量子串相关知识
  12. matlab 柏林噪声,游戏AI怎么写(一)——高级随机技术
  13. AR/MR技术的应用
  14. xftp传输文件报错
  15. 【无线网络技术专题(十一)】无线网络常用软件与工具大全
  16. 深度学习模型知识产权保护怎么做?看看IJCAI 2021这场Workshop说了什么
  17. java socket 实现原理_java socket原理
  18. u8如何备份文件服务器,用友u8 数据备份到云服务器
  19. 上传gitlab ! [remote rejected] dev - dev (pre-receive hook declined)
  20. 十人即开团,分销商城全民拼购模式解析

热门文章

  1. Kate:Linux下自动检测文件编码的编辑器
  2. php的变量引用与销毁机制
  3. Iphone隐藏和显示TabBar的方法
  4. Spring Boot打包成jar包
  5. 本以为用的MyBatis框架就万无一失了,没想到还是被黑客注入了,我真的无语了!...
  6. 100 道 Linux 笔试题,能拿90分以上的都去了BAT
  7. 面试官问:请拿出一段体现你水平的代码时,该如何回答?
  8. 高考出分,志愿填报成难题
  9. 微信最近的一些新改动
  10. 影响腾讯 20 年的产品方法论