动手动脑

package jxlpacakge;//信1605-3 20163432 张运涛

public class InitializeBlockClass {
{
field=200;
}
public int field=100;
public InitializeBlockClass(int value)//定义有参的构造函数
{
this.field=value;
}
public InitializeBlockClass()//定义无参的构造函数
{

}
public static void main(String[] args) {
// TODO Auto-generated method stub
InitializeBlockClass obj=new InitializeBlockClass();//构造InitializeBlockClass类的对象obj
System.out.println("输出:"+obj.field);
obj=new InitializeBlockClass(300);
System.out.println("输出:"+obj.field);
}

}

所有类的变量都默认初始化为null,比如String a; Integer b;
数字类的原始数据类型默认初始化为0,比如int a; short b; char c;
boolean默认初始化为false;

package jxlpacakge;//信 1605-3 20163432 张运涛

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

}
}

  1. 所有的静态初始化块都优先执行,其次才是非静态的初始化块和构造函数,它们的执行顺序是:
    1. 父类的静态初始化块
    2. 子类的静态初始化块
    3. 父类的初始化块
    4. 父类的构造函数
    5. 子类的初始化块
    6. 子类的构造函数
    7. 可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。 类的这种“没有名字”的“成员”,多用于初始化类的字段。

程序设计思想:

类中的静态方法或者属性本质上并不是该类的成员,它只是在这类中寄居不需要累的构造器进行实例化,而非类的需要构造函数实现类实例化

在外部调用静态方法是可与使用类名.方法名的方式,亦可以对象名.方法名。而实例化的只能用对象名.方法名调用。

 源程序:

package jxlpacakge;//信1605-3 20163432 张运涛

import java.util.Scanner;

public class Student {
Scanner in=new Scanner(System.in);
static class T//在静态方法中访问类的实例成员
{
String name="zhangyuntao20163432";//实例变量
int num=123456987;

static double score=4582;//静态变量
public static void display()
{
System.out.println("name="+new T().name);//静态方法调用实例变量
System.out.println("score="+score);
}

public static void main(String [] args)
{ T.display();//可以用类直接调用
System.out.println("**************");
T S=new T();
S.display();

}

}}

程序截图:

 


posted @ 2017-10-20 15:12  小张在搬砖  阅读(133)  评论(0编辑  收藏  举报