为什么我的这个数组会是输出这些来?以下是代码和输出内容

public class dsd {
public static final User[] users = new User[100];
public static int usersLength = 0;
public static final Book[] books = new Book[100];

public static int booksLength = 0;

static{
users[0] = new User(User.ADMIN,"zs","123");
    users[1] = new User(User.STUDENT,"ls","456");
    users[2] = new User(User.STUDENT,"ww","123456");
    users[3] = new User(User.STUDENT,"ds","521346");
    

    books[0] = new Book("西游记","吴承恩",21,5);
    books[1] = new Book("水浒传","施耐庵",25,3);
    books[2] = new Book("红楼梦","曹雪芹",30,3);
    books[3] = new Book("三国演义","罗贯中",40,10);

    
    
}
public static void main(String[] args) {
    for (int i = 0; i <books.length; i++) {
        System.out.println(books[i]);
    }
}}

这些打完以后他就给我输出以下内容:
Book@182decdb
Book@7637f22
Book@4926097b
Book@762efe5d

后面的索引都是null了,因为后面我没有加内容

我想把数组里面的字段给输出出来

需要重写toString方法。因为你直接输出的是对象,只有重写了方法才能自动输出对象中的内容。
参考下面格式:

img

要在book类重写tostring方法。默认情况toString方法返回的是对象的内存地址。

不想重新的话,可以试试这个

System.out.println(JSON.toJSONString(books[i]));