打印java数组的最简单方法是什么?

cngwdvgl  于 2021-08-25  发布在  Java
关注(0)|答案(30)|浏览(434)

在java中,数组不重写 toString() ,因此,如果您尝试直接打印一个,您将获得 className +“@”+字符的十六进制 hashCode 数组的,定义如下 Object.toString() :

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

但通常情况下,我们会想要更像 [1, 2, 3, 4, 5] . 最简单的方法是什么?以下是一些输入和输出示例:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
q5lcpyga

q5lcpyga1#

如果使用commons.lang库,我们可以: ArrayUtils.toString(array) ```
int[] intArray = new int[] {1, 2, 3, 4, 5};
String[] strArray = new String[] {"John", "Mary", "Bob"};
ArrayUtils.toString(intArray);
ArrayUtils.toString(strArray);

输出:

{1,2,3,4,5}
{John,Mary,Bob}

wh6knrhe

wh6knrhe2#

在java 8中:

Arrays.stream(myArray).forEach(System.out::println);
1qczuiv0

1qczuiv03#

这里有一个可能的打印功能:

public static void printArray (int [] array){
        System.out.print("{ ");
        for (int i = 0; i < array.length; i++){
            System.out.print("[" + array[i] + "] ");
        }
        System.out.print("}");
    }

例如,如果main是这样的

public static void main (String [] args){
    int [] array = {1, 2, 3, 4};
    printArray(array);
}

输出将为{[1][2][3][4]}

vlju58qv

vlju58qv4#

在jdk1.8中,可以使用聚合操作和lambda表达式:

String[] strArray = new String[] {"John", "Mary", "Bob"};

// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

// #2
Stream.of(strArray).forEach(System.out::println);

 // #3
 Arrays.stream(strArray).forEach(System.out::println);

/* output:
John
Mary
Bob

* /

另外,从java 8开始,还可以利用string类提供的join()方法打印出数组元素,不带括号,并由所选的分隔符(以下示例中的空格字符)分隔

string[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting)

`输出将是“嗨,朋友!”

z8dt9xmd

z8dt9xmd5#

如果您正在运行jdk 8。

public static void print(int[] array) {
    StringJoiner joiner = new StringJoiner(",", "[", "]");
    Arrays.stream(array).forEach(element -> joiner.add(element + ""));
    System.out.println(joiner.toString());
}

int[] array = new int[]{7, 3, 5, 1, 3};
print(array);

输出:

[7,3,5,1,3]
qvtsj1bj

qvtsj1bj6#

打印数组有以下几种方法

// 1) toString()  
    int[] arrayInt = new int[] {10, 20, 30, 40, 50};  
    System.out.println(Arrays.toString(arrayInt));

// 2 for loop()
    for (int number : arrayInt) {
        System.out.println(number);
    }

// 3 for each()
    for(int x: arrayInt){
         System.out.println(x);
     }
wf82jlnq

wf82jlnq7#

这被标记为用于打印字节[]的副本。注意:对于字节数组,可能有其他合适的方法。
如果包含iso-8859-1字符,则可以将其打印为字符串。

String s = new String(bytes, StandardChars.ISO_8559);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.ISO_8559);

或者如果它包含utf-8字符串

String s = new String(bytes, StandardChars.UTF_8);
System.out.println(s);
// to reverse
byte[] bytes2 = s.getBytes(StandardChars.UTF_8);

或者如果你想把它打印成十六进制。

String s = DatatypeConverter.printHexBinary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseHexBinary(s);

或者,如果您想将其打印为base64。

String s = DatatypeConverter.printBase64Binary(bytes);
System.out.println(s);
// to reverse
byte[] bytes2 = DatatypeConverter.parseBase64Binary(s);

或者如果要打印有符号字节值的数组

String s = Arrays.toString(bytes);
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = Byte.parseByte(split[i]);

或者,如果要打印无符号字节值数组

String s = Arrays.toString(
               IntStream.range(0, bytes.length).map(i -> bytes[i] & 0xFF).toArray());
System.out.println(s);
// to reverse
String[] split = s.substring(1, s.length() - 1).split(", ");
byte[] bytes2 = new byte[split.length];
for (int i = 0; i < bytes2.length; i++)
    bytes2[i] = (byte) Integer.parseInt(split[i]); // might need a range check.
cunj1qz1

cunj1qz18#

public class printer {

    public static void main(String[] args) {
        String a[] = new String[4];
        Scanner sc = new Scanner(System.in);
        System.out.println("enter the data");
        for (int i = 0; i < 4; i++) {
            a[i] = sc.nextLine();
        }
        System.out.println("the entered data is");
        for (String i : a) {
            System.out.println(i);
        }
      }
    }
vc9ivgsu

vc9ivgsu9#

// array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};

System.out.println(Arrays.toString(intArray));

output: [1, 2, 3, 4, 5]
// array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};

System.out.println(Arrays.toString(strArray));

output: [John, Mary, Bob]
lo8azlld

lo8azlld10#

要添加到所有答案中,还可以选择将对象打印为json字符串。
使用jackson:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
System.out.println(ow.writeValueAsString(anyArray));

使用gson:

Gson gson = new Gson();
System.out.println(gson.toJson(anyArray));
tjrkku2a

tjrkku2a11#

for each循环还可用于打印数组元素:

int array[] = {1, 2, 3, 4, 5};
for (int i:array)
    System.out.println(i);
zour9fqk

zour9fqk12#

可以选择使用org.apache.commons.lang3.stringutils.join(*)方法
例如:

String[] strArray = new String[] { "John", "Mary", "Bob" };
String arrayAsCSV = StringUtils.join(strArray, " , ");
System.out.printf("[%s]", arrayAsCSV);
//output: [John , Mary , Bob]

我使用了以下依赖项

<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
kxe2p93d

kxe2p93d13#

我尝试过的简化快捷方式是:

int x[] = {1,2,3};
    String printableText = Arrays.toString(x).replaceAll("[\\[\\]]", "").replaceAll(", ", "\n");
    System.out.println(printableText);

它会打印出来

1
2
3

这种方法不需要循环,最好只用于小型阵列

beq87vna

beq87vna14#

您可以在数组中循环,在循环时打印出每个项目。例如:

String[] items = {"item 1", "item 2", "item 3"};

for(int i = 0; i < items.length; i++) {

    System.out.println(items[i]);

}

输出:

item 1
item 2
item 3
wpx232ag

wpx232ag15#

如果数组是char[]类型,还有一种方法:

char A[] = {'a', 'b', 'c'}; 

System.out.println(A); // no other arguments

印刷品

abc

相关问题