一:

1、源代码

//MAO2015.10.6

//foo

class Foo

{

int value;

public Foo(int initValue)

{

value = initValue;

}

}

public class Test2

{

public static void main(String[] args)

{

Foo obj1 = new Foo(2);

}

}

2、截图

3、总结

如果一个类提供自定义的构造方法,导致系统不再提供默认构造方法。

二:

1、源代码

//mao2015.10.16

//初始化

class InitializeBlockClass

{

{

field = 200;

}

public int field = 100;

public InitializeBlockClass(int value)

{

this.field = value;

}

public InitializeBlockClass()

{

}

}

public class Test3 {

public static void main(String[] args) {

// TODO Auto-generated method stub

InitializeBlockClass obj = new  InitializeBlockClass();

System.out.println(obj.field);

obj = new InitializeBlockClass(300);

System.out.println(obj.field);

}

}

2、结果截图

3、总结Java字段初始化规律

首先执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。其次,执行类的构造函数

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

三:

1、  源码

//mao2015.10.17

//静态初始化块的执行顺序

class Root

{

Static

{

System.out.println("Root的静态初始化块");

}

{

System.out.println("Root的普通初始化块");

}

public Root()

{

System.out.println("Root的无参数的构造器");

}

}

class Mid extends Root

{

Static

{

System.out.println("Mid的静态初始化块");

}

{

System.out.println("Mid的普通初始化块");

}

public Mid()

{

System.out.println("Mid的无参数的构造器");

}

public Mid(String msg)

{

//通过this调用同一类中重载的构造器

this();

System.out.println("Mid的带参数构造器,其参数值:" + msg);

}

}

class Leaf extends Mid

{

Static

{

System.out.println("Leaf的静态初始化块");

}

{

System.out.println("Leaf的普通初始化块");

}

public Leaf()

{

//通过super调用父类中有一个字符串参数的构造器

super("Java初始化顺序演示");

System.out.println("执行Leaf的构造器");

}

}

public class TestStaticInitializeBlock

{

public static void main(String[] args)

{

new Leaf();

}

}

2、结果

3、总结出“静态初始化块的执行顺序”

静态初始化块只执行一次。创建子类型的对象时,也会导致父类型的静态初始化块的执行。

四:

静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

请编写代码验证你的想法。

1、源码

//mao2015.10.17

//调用

class Use

{

static int a = 1;

int b = 2;

}

public class TestStatics {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(Use.a);

//System.out.println(Use.b);报错

Use use = new Use();

System.out.println(use.b);

}

}

2、结果

3、  结论

System.out.println(Use.a);

//System.out.println(Use.b);报错

五:

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

1、源码

//mao2015.10.17

//跟踪某个类所创建对象的个数

class Count

{

static int i = 0;

public Count()

{

i++;

}

void getI()

{

System.out.println("已创建 "+i+"个");

}

}

public class TestCount {

public static void main(String[] args) {

// TODO Auto-generated method stub

Count count = new Count();

count.getI();

}

}

2、结果

3、  总结

每创建一次,就会使用一次构造函数,所以用构造函数来计数。

JAVA类与对象作业——动手动脑以及课后实验性问题的更多相关文章

  1. JAVA 接口与继承作业——动手动脑以及课后实验性问题

    一.继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构 ...

  2. JAVA 多态和异常处理作业——动手动脑以及课后实验性问题

    1.  阅读以下代码(CatchWho.java),写出程序运行结果: 1)  源代码 public class CatchWho { public static void main(String[] ...

  3. JAVA 数组作业——动手动脑以及课后实验性问题

    JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...

  4. java类与对象的动手动脑和其他小问题

    在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...

  5. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

  6. JAVA String作业——动手动脑以及课后实验性问题

    一:如何解释这样的输出结果?从中你能总结出什么?1.源码 //mao2015.10.20 //==的两个分辨 //对原始数据而言 //对引用类型变量 public class StringPool { ...

  7. 2019-9-16 java上课知识整理总结(动手动脑,课后实验)

    java上课知识整理总结(动手动脑,课后实验) 一,课堂测试 1,题目:课堂测试:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求:(1)题目避免重复: (2)可定制( ...

  8. Java类和对象初始化

    类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...

  9. java类和对象之间的差

    java类和对象之间的差别是一个普遍的问题,刚开始学习java当它来到与类和对象接触.今天就来总结一下它们之间的差异. 先说说class和object差异.事实上,词:object是全部class的父 ...

随机推荐

  1. bzoj 3234: [Ahoi2013]立方体

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3234 题意:求长方体交的表面积. 思路:flood-fill const int ...

  2. 转 Android 对话框(Dialog)大全 建立你自己的对话框

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  3. How To Tune or Test PLSQL Code Performance in Oracle D2k Forms

    You can test or tune your program unit performance in Oracle forms with Ora_Prof package.Suppose you ...

  4. 列联表(Crosstabs)

    四格表(2*2的列联表): Tmin为最小的频数:N为频数之和. 1 当 Tmin≥5,N≥40时, 用普通卡方检验公式;2 当1≦Tmin≦5, N≥40时, 用校正卡方检验公式;3 Tmin< ...

  5. [51NOD1065] 最小正子段和(STL,前缀和)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1065 估计没人这么做吧-用一个set维护前缀和,但是set的l ...

  6. Java反序列化漏洞通用利用分析

    原文:http://blog.chaitin.com/2015-11-11_java_unserialize_rce/ 博主也是JAVA的,也研究安全,所以认为这个漏洞非常严重.长亭科技分析的非常细致 ...

  7. 检测服务器IP端口是否可用

    private static double Scanner(string ip, int port) { try { System.Net.Sockets.TcpClient Tcp = new Sy ...

  8. 《Linux内核设计的艺术》学习笔记(二)INT 0x13中断

    参考资料: 1. <IBM-PC汇编语言程序设计> 2. http://blog.sina.com.cn/s/blog_5028978101008wk2.html 3. http://ww ...

  9. Protractor AngularJS测试框架教程

    Protractor是一个建立在WebDriverJS基础上的端到端(E2E)的AngularJS JavaScript Web应用程序测试框架.Protractor全自动化真实的模拟用户在真正的浏览 ...

  10. updatePanel导致JS失效的解决办法(转)

    吐槽下,维护别人之前做的项目好蛋疼,整个页面都是用微软的ajax框架. 今天给repeater用JS写一个hover事件 <script type="text/javascript&q ...