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

代码

package test;public class test { private static int n=0;public test(){n=n+1;//每次new一个对象的时候都可以给n加1
    }   public static void main(String[] args) {@SuppressWarnings("unused")test t1=new test();@SuppressWarnings("unused")test t2=new test();@SuppressWarnings("unused")test t3=new test();System.out.println("共有对象个数为:"+n);}}

运行结果:

思想

设计公共类逐次计数,当创建一个新的类时n+1;每次new一个对象的时候都可以给n加1,实现对象的计数。最后返回n计数

动手动脑

1,请输入并运行以下代码,得到什么结果?

 public static void main(String[] args) {// TODO Auto-generated method stub
  Foo obj1=new Foo();Foo obj2=new Foo();System.out.println(obj1==obj2);}
}
class Foo
{int value=100;
}

运行结果:

原因:

当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等 当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。 引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。

2.以下代码为何无法通过编译?哪儿出错了?

package test;public class test { public static void main(String[] args) {Foo obj1=new Foo();      }}       class Foo{int value;public Foo(int initValue) {value=initValue;}
}

原因:在Foo类中已经有了一个Foo的含参构造方法,所以在定义Foo类对象时不能使用new Foo()方法。如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

3.如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?

package test;public class test { /*** @param args*/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字段的初始值//public int field=100;
    {field=200;}public int field=100;public InitializeBlockClass(int value){this.field=value;}public InitializeBlockClass(){}
}

运行结果:

如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,还要看两者的先后顺序,谁在后,创建对象的的时候,就会使用谁。

自行总结Java字段初始化的规律:

总结:所有的静态初始化块都优先执行,其次是非静态的初始化块和构造函数,它们的执行顺序是:父类的静态初始化块>子类的静态初始化块>父类的初始化块>父类的构造函数>子类的初始化块>子类的构造函数.

转载于:https://www.cnblogs.com/qq1793033075/p/9825532.html

java第五周课后作业相关推荐

  1. 【第五周课后作业】“番茄工作法”软件创新性分析

    当今,效率与自制力是学习与工作无法回避的话题.看十分钟书,玩二十分钟的手机,这样的现象虽然谈不上普遍,但也不是一两个人存在的问题. 如何保持较长时间的专注?其实,早在1992年,弗朗西斯科·西里洛就提 ...

  2. 第五周课后作业(浅谈腾讯的创新)

    浅谈腾讯的创新 ​        说起腾讯,我们就一定会想起QQ,微信以及以前的或者现在的一堆热门的游戏,而且现在马化腾同志已经成为名副其实的中国首富,所以我们不禁会想到底是什么促使了马同志和腾讯的成 ...

  3. 写在11期培训班第五次课后作业前面的话

       本文内容简单,但是感觉对一些博友还是有参考警醒价值,因此,分享给支持老男孩的所有博友们,希望你们喜欢! 写在11期培训班第五次课后作业前面的话: 作为运维过来人,老男孩总希望能多给大家讲一点成功 ...

  4. MOOC程序设计入门——C语言(翁恺)第五周编程作业“念整数”

    MOOC程序设计入门--C语言(翁恺)第五周编程作业"念整数" ****念整数 题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整 ...

  5. JAVA 第五周学习总结

    20175304 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 Java为什么要定义接口:接口的作用是实现多重继承,因为一个子类只能继承一个父类,但是可以实 ...

  6. 从Airbnb的发展历程和网易云的大起大落看IT行业创新(第5周课后作业)

    我想先根据个人看法回答"创新是什么?"这个空泛的问题.创新是面对当下的资源条件限制创造出能够满足动态需求或解决动态发展中的问题的新策略.这种实用化定义在大部分邻域都勉强能让定义者自 ...

  7. 慕课软件质量保证与测试(第五章.课后作业)

    慕课金陵科技学院.软件质量保证与测试.第五章.软件测试过程.课后作业 0 目录 5 软件测试过程 5.7 课后作业 5.7.1 课堂重点 5.7.2 测试与作业 6 下一章 0 目录 5 软件测试过程 ...

  8. Java第十周的作业

    1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2.书面作业 本次作业题集 集合 2.1. List中指定元素的删除(题集题目) 2.1.1 实验总结.并回答:列举至少 ...

  9. HTML5和CSS3开发第五章课后作业

    1.制作图5.38所示的北大青鸟课程介绍页面.页面要求如下, >使用<div>.<p>.<span>等标签编辑页面,页面整体背景颜色使用线性渐变 (#ECEC ...

  10. java第五章课后题_黑猴子的家:Java SE 练习题第五章

    尾部都有答案 第五章练习题(继承) (1)下列关于继承优点的叙述正确的是哪几项?(选三项) A.可以创建更为特殊的类型 B.消除重复代码 C.执行效率高 D.便于维护 (2)在子类中调用父类中被覆盖的 ...

最新文章

  1. Android 如何在xmL 里面动态设置padding
  2. python 串口_Python串口操作库pyserial(1)
  3. 【译】Typeof null 的历史
  4. docker下安装Pillow模块
  5. 你们也只剩下点赞的交情
  6. centos 服务器装与python34源码安装
  7. java+什么时候才需要deploy_细思极恐 - 什么才是真正的会写 Java ?
  8. 如何使用 DNSMAQ 搭建 DNS 服务器?
  9. 输入n个字符串字典序排序_30个Python奇淫技巧集
  10. 使用全备+binlog日志恢复数据库
  11. 广义逆高斯分布(Generalized Inverse Gaussian Distribution)及修正贝塞尔函数
  12. Linux中创建 静态库和动态库(共享库) 本人亲测可行
  13. 【PAT刷题甲级】部分笔记1065-1155~(下)
  14. Android聊天室
  15. 女程序员是最好的语言 | 3·8特辑
  16. 焊接机器人比传统手工焊接有哪些优势
  17. Excel删除重复行单不删除单元格
  18. 线段树1——神奇的数据结构
  19. 【OGG】extract不抓取日志--running状态--不能stop和kill--自动abended
  20. 大型B2C网站如何做好EDM营销

热门文章

  1. 社区发现(二)--GN
  2. 三维计算机视觉(七)--Spin image
  3. 剑指offer最新版_剑指offer第二版速查表
  4. ROS下载Gazebo模型到本地
  5. clickhouse分布式DDL查询
  6. 通过解析器向DNS服务器发出查询
  7. Mysql高可用设计入门
  8. ARKit Plane Detection (平面检测)
  9. 洛谷 P3404 斐波那契(线段树)
  10. 理解与学习linux 文件系统的目录结构