入门者学习门槛:关于数组
1重写一个方法,我写的代码
public class ArrayTest3
{
public static boolean t(int[] a, int[] b)
{
if(a.length == b.length)
{
for(int i = 0; i < a.length; i++)
{
boolean result = a[i] == b[i]?true:false;
return result;
}
}
else
{
return false;
}
}
public static void main(String[] args)
{
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
t(a, b);
System.out.println(a.equals(b));
}
}
编译都不能通过,我百思不得其解,为什么?
我知道正确的是
import java.util.Arrays;
public class ArrayEqualsTest
{
// compare the content of two arrays
public static boolean isEquals(int[] a, int[] b)
{
if(a == null || b == null)
{
return false;
}
if(a.length != b.length)
{
return false;
}
for(int i = 0; i < a.length; i++)
{
if(a[i] != b[i])
{
return false;
}
}
return true;
}
public static void main(String[] args)
{
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(isEquals(a, b));
System.out.println("----------");
System.out.println(Arrays.equals(a, b));
}
}
这个我能看懂,但我觉得这样排除法可以,那可不可以不用这种排除法,我以上的代码时错误的,错在哪?正确的是怎么样的代码?
2
int[][][] a = new int[2][3][4];
System.out.println(a[0] instanceof int[][]);
System.out.println(a[0][0] instanceof int[]);
我看懵了,这a[0]不是表示这个三维数组的第一行吗?怎么一下子变成一个二维数组的实例了?
下面一行,a[0][0]不是这个三维数组的第一行第一列吗?怎么一下子变成一个数组的实例了?
问题很琐碎,百度不到,望高手解答,谢谢!
------解决方案--------------------
[code=Java][/code]
问题1:
public class ArrayTest3
{ static boolean result;
public static boolean t(int[] a, int[] b) {
if(a.length == b.length) {
for(int i = 0; i < a.length; i++) {
result = (a[i] == b[i])?true:false;
}
return result; //你的返回值boolean 应该放在if中,而不是for里面(if会看不到)
}else {
return false;
}
}
public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(t(a, b)); //这样答应应该是 你的需求.
System.out.println(a.equals(b));
}
}
问题2很容易理解哈,
一行肯定是一个队伍的实例吧,
一块肯定是一行的实例吧,
例如:
Object obj = new Object()
obj就是类Object的一个实例,也就是一个具体的对象