「java数组重写」数组重组java
本篇文章给大家谈谈java数组重写,以及数组重组java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java重写toString 使之可以输出二维数组
- 2、java用数组模拟栈, 重写了tostring方法,却没有调用,输出的是地址,为什么?
- 3、java: 比较两个二维数组,用Array.equal 要重写吗? 如果要怎么写?
- 4、java 自己重写ArrayList
- 5、java数组是什么类 数组可以怎么重写tostring方法
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数组重写的信息别忘了在本站进行查找喔。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。