JAVA作业02

一,      课堂练习

(一)构造方法

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

(二), 运行结果

时间: 2024-10-24 12:37:59

JAVA作业02的相关文章

JAVA作业 02

一. 思考问题一:枚举类型 public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t是否引用同一个对象 System.out.println(s==t); //是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //从字符串中转换 Size u=Size.valueOf("S

软件工程个人作业02(四则运算)

四则运算作业02 import javax.swing.JOptionPane; import java.util.Random; import java.util.Scanner; public class Arithmetic { public static void main(String[] args) { // TODO 自动生成的方法存根 int c;//选择 int c1,c4,c5,c6,c7,c8; int a,b,d1;//二位数运算 int c2,c3; int e=0;/

软件工程结对作业02(借鉴版)

软件工程结对作业02(借鉴版) 在编写程序的时候因为不会将Java程序嵌入进jsp中所以借鉴了一个学姐的程序,下面是学姐的程序.但在对学姐程序就行修改时发现了一些问题: 在Newjsp中能调用html中的题目个数的参数 在Myjsp中不能调用html中的题目个数的参数 其中这个参数timugeshu,是我自己后来添加的,用来改变题目个数的,与Java程序无关,只在jsp文件中作用 源程序: NewFeil.html <!DOCTYPE html> <html> <head&g

[连载]Java程序设计(02)---任务驱动方式:个人所得税计算器

上周有厂商到公司测试,拿了一块据说很猛的网络处理加速PCIe板卡,拎在手里沉甸甸的很有分量,最让人意淫的是那4个万兆光口,于是我迫不及待的想要一览光口转发时那种看不见的震撼.       可是,仅凭4个光口怎么测试?起码你要有个"对端"啊!任何人应该都不想扛着三台机器在客户们之间跑来跑去测试其转发性能,当然你也不能指望客户那里就一定有你需要的"对端"设备,比如我们公司就没有这种和万兆光口对接的设备,不过赶巧的是,那天还真有一台设备带有万兆光口,但是只是碰巧了.最佳的

Java基础02 方法与数据成员(转载)

对象中的数据成员表示对象的状态.对象可以执行方法,表示特定的动作. 此外,我们还了解了类(class).同一类的对象属于相同的类型(type).我们可以定义类,并使用该定义来产生对象. 调用同一对象的数据成员 方法可以调用该对象的数据成员.比如下面我们给Human类增加一个getHeight()的方法.该方法返回height数据成员的值: public class Test{    public static void main(String[] args){        Human aPer

Java学习02

昨天学了一天Java,今天来回忆总结一下. Java是一门面向对象的语言,与C++有很多地方都很相似. Java的特点: 1.取消了指针,用引用代替 2.有垃圾自动回收机制,程序员不需要手动管理内存 3.跨平台性(JVM) 昨天主要从最基础的开始学,学习了变量,操作符,语句结构.下面用程序来回顾一下. 1 /* 2 测试4种进制 3 1.二进制 4 2.十进制 5 3.八进制 0开头 6 4.十六进制 0x开头 7 */ 8 9 //当class声明为public时文件名必须为类名一样 10 p

关于提高字节流问题暨第四次java作业

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException; public class CopyFile { /** * @param args */ public static void main(String[] args) { try { FileInputStream fis = new FileInputStream ("a.mp3"); FileOutpu

java作业4

(一)  请查看String.equals()方法的实现代码,注意学习其实现方法.(发表到博客作业上) (二)  整理String类的Length().charAt(). getChars().replace(). toUpperCase(). toLowerCase().trim().toCharArray()使用说明 Length():获取字串长度 String s1 = "Welcome to java"; System.out.println("s1's length

java作业3

一.构造方法 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 InitializeBlock