谔谔,最近好多人对这里迷糊了,给你一个例子看一下,你拷贝运行一下,多运行几次,基本就懂了!
public class Demo1{
public static void main(String[] args){
Person p1=new Person();
Person p2=new Person("李磊",28);
Person p3=new Person("jack",22);
Person p4=new Person("rose",20);
}
}
class Person{
//静态成员变量
static String country="US";
//静态代码块
static{
country="CN";
System.out.println("静态代码块用于类初始化.");
}
//成员变量
private String name="rose";
private int age;
//构造代码块
{
this.name="jack";
this.age=1;
System.out.println("构造代码块");
}
//构造函数
Person(){
System.out.println("无参数构造");
}
Person(String name ,int age){
this.age=age;
this.name=name;
System.out.println("有参数构造C");
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
//成员方法
void speak(){
System.out.println(name+":"+age);
System.out.println("普通的成员方法.");
}
}
上面的这段代码只是帮助你理解三者的关系,再给你一段代码,这段代码很好的运用到了这三者,练习一下,看你是否真的理解了(答案附带给你):
public class Demo2{
{
x = 1;
System.out.println("构造代码块");
}
//静态成员变量(类变量)
public static int x = 2;
static{
x = 3;
System.out.println("静态代码块");
}
public static void main(String[] args) {
//System.out.println(Demo2.x); //3
System.out.println( Demo2.x + new Demo2().x ); //4
System.out.println( Demo2.x + new Demo2().x ); //2
}
}
说真的,做了这个小练习你决定会懂了,我当初也是这么懂的,不懂?!那再看第一段代码吧!
|