JavaSE 【类和对象】(3)(重点:代码块、对象的打印)

目录

一、代码块

1.静态代码块

2.构造代码块/实例代码块

3.总结

代码块执行的顺序:

1.静态代码块

2.构造代码块(实例代码块)

3.执行对应的构造方法

其中:静态的只执行一次

二、 对象的打印

有一个快速打印的方法:重写toString


一、代码块

使用 {} 定义的一段代码称为代码块
根据代码块定义的位置以及关键字,又可分为以下四种:
1.普通代码块:就是定义在方法中的代码块
2.构造代码块(实例代码块)
3.静态代码块
4.同步代码块(后续讲解多线程部分再谈)
 

 

class Student{

    public String name ;
    public int age ;

    //静态成员变量:所有对象共有的
     public static String classRoom = "110class";

   //带参数的构造方法
    public Student(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("带参数的构造方法Student(String,int)");
    }


    /**
     * 静态代码块:
     * 一般用来初始化静态成员
     * 类加载的时候就被调用
     */
    static {
        classRoom = "bit";
        System.out.println("静态代码块!!");
    }
    /**
     * 构造代码块/实例代码块
     */
    {
        System.out.println("构造代码块/实例代码块");
    }

    public void eat() {
        System.out.println(this.name+"吃饭!");
    }

    public void show(){
        //this.eat();//可以在成员方法里,调用另一个成员方法
        System.out.println("姓名:"+this.name+" 年龄:"+this.age);
    }

}


public class Test {
    public static void main(String[] args) {
        System.out.println(Student.classRoom);
    }

}

1.静态代码块

static{

}

 

打印出来了,证明静态代码块被执行了 

 

 

2.构造代码块/实例代码块

{

}

实例代码块需要实例化对象以后才会执行 

没有打印出构造代码块,说明 构造代码块没有被执行

 

是因为,实例代码块需要实例化对象以后才会执行 

        此时我只运行了一条实例化对象的student1这个语句,可我们发现 静态代码块被执行了,构造代码块(实例代码块)被执行了,构造方法也被执行了。

        尽管我换了这几个代码的顺序,依然得到如下结果。

3.总结

代码块执行的顺序:

1.静态代码块

2.构造代码块(实例代码块)

3.执行对应的构造方法

其中:静态的只执行一次

 再实例化一个对象student2

发现第二次实例化对象的时候,没有 执行静态代码块了

 当有多个静态块时,可以看作一个大的静态块,按从上到下的顺序依次执行

二、 对象的打印

以往打印对象的属性,要写一个show方法

 

有一个快速打印的方法:重写toString

sout (对象),原本打印的是对象student1的地址

 打开源码发现,sout底层调用的是 toString这个方法

 

 自己写一个toString方法,按照自己想要的格式输出返回

 这样原本打印的student1对象的地址,就可以打印出对象的属性信息了

 

假如我就喜欢上面show方法的格式,我自定义toString修改之后,同样可以达到一样的效果

(这个其实就是重写)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值