Java构造方法的使用及静态代码块和this和static

public class TestThis {
    int a,b,c;
    {
        System.out.println("静态代码块在这里!!!!!");
    }
 //当调用类时     静态代码块优先执行只要调用他就先执行且执行一次
    TestThis() {
        System.out.println("正要new一个Hello对象");
    }

    TestThis(int a, int b) {
         //Hello(); // //这样是无法调用构造方法的!
        this(); //调用无参的构造方法,并且必须位于第一行!
        // a = a;//这里都是指的局部变量而不是成员变量
        this.a = a;//这样就区分了成员变量和局部变量. 这种情况占了this使用情况的大多数!
        this.b = b;
        System.out.println("两个参数的结果:a是\t"+a+"\tb是\t"+b);
    }

    TestThis(int a, int b, int c) {
        this(a, b); //调用无参的构造方法,并且必须位于第一行!
        this.c = c;
        System.out.println("三个参数的结果:a是\t"+a+"\tb是\t"+b+"\tc是\t"+c);
    }

    void sing() {
    }

    void chifan() {
        this.sing(); //sing();
        System.out.println("你妈妈喊你回家吃饭!");
    }

    @Override
    public String toString() {
        return "TestThis{" +
                "a=" + a +
                ", b=" + b +
                ", c=" + c +
                '}';
    }

    public static void main(String[] args) {
        TestThis hi = new TestThis(2,3,4);
        hi.chifan();
        System.out.println(hi);
    }
}

注意:如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则编译器不会
添加无参数构造方法!

 但是当你创建有参构造器时,调用无参构造器时会报错,所以谨记当你创造有参构造器时,连带无参构造器也创建出来。

在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.


它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
 static变量置于方法区中!


 用static声明的方法为静态方法


 不需要对象,就可以调用(类名.方法名)
 在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
静态方法不能以任何方式引用this和super关键字

猜你喜欢

转载自blog.csdn.net/wqr111/article/details/118110450
今日推荐