「java数组重写」数组重组java

博主:adminadmin 2022-11-27 07:47:08 60

本篇文章给大家谈谈java数组重写,以及数组重组java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java重写toString 使之可以输出二维数组

java的标准API中的Array类没有toString方法,因此沿用父类Object的toString方法:

public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

而Array类中的方法几乎全是本地方法,可以说Array类就是一个本地类,因此他不受java语法约束,也根本无法用java语法改写toString方法,想要改写这个类实在是太难了,我是不会..

但是你可以使用java.util.Arrays类中的deepToString(Object o[])静态方法,可以实现打印多重数组。

举个例子:

int[][][] a=new int[3][4][5];

for(int i=0;i3;i++){

for(int j=0;j4;j++){

for(int k=0;k5;k++){

a[i][j][k]=i*j*k;

}

}

}

System.out.println(Arrays.deepToString(a));

java设计人员之所以不为Array类设计toString是因为不好确定用什么方式打印数组,是用“【”,还是用“{”,以及要不要“,”等都是问题。

Arrays的deepToString方法如下:

public static String deepToString(Object[] a) {

if (a == null)

return "null";

int bufLen = 20 * a.length;

if (a.length != 0 bufLen = 0)

bufLen = Integer.MAX_VALUE;

StringBuilder buf = new StringBuilder(bufLen);

deepToString(a, buf, new HashSet());

return buf.toString();

}

private static void deepToString(Object[] a, StringBuilder buf,

SetObject[] dejaVu) {

if (a == null) {

buf.append("null");

return;

}

dejaVu.add(a);

buf.append('[');

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

if (i != 0)

buf.append(", ");

Object element = a[i];

if (element == null) {

buf.append("null");

} else {

Class eClass = element.getClass();

if (eClass.isArray()) {

if (eClass == byte[].class)

buf.append(toString((byte[]) element));

else if (eClass == short[].class)

buf.append(toString((short[]) element));

else if (eClass == int[].class)

buf.append(toString((int[]) element));

else if (eClass == long[].class)

buf.append(toString((long[]) element));

else if (eClass == char[].class)

buf.append(toString((char[]) element));

else if (eClass == float[].class)

buf.append(toString((float[]) element));

else if (eClass == double[].class)

buf.append(toString((double[]) element));

else if (eClass == boolean[].class)

buf.append(toString((boolean[]) element));

else { // element is an array of object references

if (dejaVu.contains(element))

buf.append("[...]");

else

deepToString((Object[]) element, buf, dejaVu);

}

} else { // element is non-null and not an array

buf.append(element.toString());

}

}

}

buf.append(']');

dejaVu.remove(a);

}

}

java.lang.reflect.Array类的内容如下,你如果有能力可以改改:

/*

* @(#)Object.java 1.73 06/03/30

*

* Copyright 2006 Sun Microsystems, Inc. All rights reserved.

* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.

*/

package java.lang;

public class Object {

private static native void registerNatives();

static {

registerNatives();

}

public final native Class? getClass();

public native int hashCode();

public boolean equals(Object obj) {

return (this == obj);

}

protected native Object clone() throws CloneNotSupportedException;

public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

public final native void notify();

public final native void notifyAll();

public final native void wait(long timeout) throws InterruptedException;

public final void wait(long timeout, int nanos) throws InterruptedException {

if (timeout 0) {

throw new IllegalArgumentException("timeout value is negative");

}

if (nanos 0 || nanos 999999) {

throw new IllegalArgumentException(

"nanosecond timeout value out of range");

}

if (nanos = 500000 || (nanos != 0 timeout == 0)) {

timeout++;

}

wait(timeout);

}

public final void wait() throws InterruptedException {

wait(0);

}

protected void finalize() throws Throwable { }

java用数组模拟栈, 重写了tostring方法,却没有调用,输出的是地址,为什么?

你好!

你的tostring()方法名错了,toString()才对。

希望对你有帮助!

java: 比较两个二维数组,用Array.equal 要重写吗? 如果要怎么写?

比较两个数组内容是否相等,用Arrays.equal,不是Array.equal

是不需要重写的

java 自己重写ArrayList

首先,能请你以后有问题时把错误信息发出来好吗?

你的思路是错误的!!!

你想用一个数组直接把后面都加进来是行不能的,因为一个数组初始化后是不能改变大小的.所以当数组存储满了以后,要建立一个新的、更大的数组,然后把旧数组的值和参数的值循环赋值给新的数组。。。JAVA里的ArrayList就是这么做的。

java数组是什么类 数组可以怎么重写tostring方法

1

system.out.pring(arrayname);

你这个写错了

应该是 System.out.println(arrayname)

2

JAVA中的数组类时java.util.Arrays

此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。

这个类的所有的方法都是直接操作数组的static方法

3

你的arrayname是个数组吧

如果要想直接输出数组的话,Arrays.toString(arrayname)可以直接把数组连接为一个字符串,System.out.println(Arrays.toString(arrayname)); 就可以输出这个字符串

4

如果要想System.out.println(arrayname)这样的方式每次输出一个arrayname的元素的话,JAVA直接是实现不了的,用个循环就可以了

for(int i=0;iarrayname.length;i++)

System.out.println(arrayname)

5Arrays

类还有很多实用的方法,自己再看看JAVA API吧

java数组重写的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数组重组java、java数组重写的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。