当前位置: 首页 > 后端技术 > Java

[Ljava.lang.Object;是什么?

时间:2023-04-01 19:12:47 Java

1。概述在本文中,我们将了解[Ljava.lang.Object的含义以及如何访问该对象的值。2.Java对象类如果我们在Java中直接打印一个对象,首先想到的是尝试调用这个对象的toString方法:Object[]arrayOfObjects={"John",2,true};assertTrue(arrayOfObjects.toString().startsWith("[Ljava.lang.Object;"));//打印如下:[Ljava.lang.Object;@17d0685f如果上面的测试运行,肯定会成功,但是打印出来的值是通常没用。我们想要的是打印出数组中元素的值。相反,由于在Object.class中实现了toString,我们打印类的名称:getClass().getName()+'@'+Integer.toHexString(hasCode());当我们直接从对象中获取类名时,我们从JVM中获取内部名称及其类型,这就是为什么会显示[和L等字符串,分别代表Array和ClassName类型。3、打印有意义的值为了能够打印出我们想要的结果,我们可以使用java.util包中的一些类。3.1.Arrays我们可以使用Arrays类中的两个方法来进行转换。对于一维数组,可以使用toString方法:Object[]arrayOfObjects={"John",2,true};assertEquals(Arrays.toString(arrayOfObjects),"[John,2,true]");对于多维数组,我们可以使用deepToString方法:Object[]innerArray={"We","Are","Inside"};Object[]arrayOfObjects={"John",2,innerArray};assertEquals(Arrays.deepToString(arrayOfObjects),"[John,2,[We,Are,Inside]]");3.2。StreamingJava8的新特性之一是引入了流,其中还包括用于处理元素序列的类:Object[]arrayOfObjects={"John",2,true};ListlistOfString=Stream.of(arrayOfObjects)。map(Object::toString).collect(Collectors.toList());assertEquals(listOfString.toString(),"[John,2,true]");以上代码使用辅助类创建一个流,将将数组中的对象通过map方法转化为字符串,然后将hit插入到列表中并打印出来。4.结论在本文中我们学习了如何打印数组以避免打印默认的[Ljava.lang.Object;并打印有意义的信息。