画线两处的意思分别是什莫

img


import java.util.*;
public class Main{
    public static void main(String[] args){
        Book a[]=new Book[3];
        a[0]=new Book("Java程序设计",34.5);
        a[1]=new Book("数据结构",44.8);
        a[2]=new Book("C++程序设计",35.0);
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
 
        }System.out.println("图书总册数为:"+Book.count);
    }
}class Book{
    String name;
    static int id;
    double price;
    int num=0;
    static int count=0;
    public Book(String name,double price){
        this.name=name;
        this.price=price;
        this.id=num++;
        count++;
    }public String toString(){
        id++;
        return "书名:"+name+", 书号:"+Book.id+", 书价:"+price;
    }                                
}

img

this.id = num++; // 这里时 构造方法初始化 书号,构造方法里,这里默认都是 0,因为num是 Book类的普通成员变量,默认就是 0,并且不同的Book类有 不同的num变量。
toString方法里的 ,id++ ,才是 实现 书号 自动加1的 主要实现, 但这里也只是 适用于 单线程情况下,考虑到你main函数执行,并打印 Book类,都是在一个线程内,所以没有啥问题。

id++ (id =+1 或 id = id +1)
this.id = num++ (this.id = num;num++ 注意这里的this.id会赋值num自加1之前的值)