黑马程序员技术交流社区
标题:
结果为什么是15?
[打印本页]
作者:
意念痴心灬戒贪
时间:
2015-12-20 00:26
标题:
结果为什么是15?
public class T {
public static void main(String[] args) {
int x = 10;
method(x);
System.out.print(x);
int[] arr[] = {{1,2,3},{1,2,3}};
// method(arr);
System.out.print(x+arr[0] [0]);
}
public static void method(int y) {
y=5;
}
// public static void method(int[][] arr) {
// arr[0] = new int[]{5,10,15};
}
作者:
王晓亮
时间:
2015-12-20 09:21
!!!!!!!!
作者:
Mr.zhao
时间:
2015-12-20 09:50
你是不是搞错了,忘了把//去了?因为第一个method参数是基本类型,第二个是引用类型,
作者:
天若也易老
时间:
2015-12-20 11:08
刚试了试,没去// 结果是10和11
去掉之后结果是10和15
arr 经过method 内部arr[0] 被修改成{5,10,15} 所以 int[] arr[]={{5,10,15},{1,2,3}}
所以arr[0][0]=5,结果为15
作者:
M075097
时间:
2015-12-20 14:10
import java.util.*;//导入工具类包,可以使用Arrays.toString() 方法查看数组内的值。
class Ceshi
{
public static void main(String[] args)
{
int x = 10;
method(x);// 此时调用Method(int Y)方法没有实际意义,该方法没有实际返回值,而x为基本数据类型,只是把x的值赋给其内部的y,而不是把其引用传递给y。
System.out.println(x);//该处x值依然是10
int[] arr[] = {{1,2,3},{1,2,3}};
method(arr);//而由于arr是一个对象类型引用,此时传递的是arr的对象引用,调用该方法赋值时修改的是即该引用指向的arr,其与主函数内的arr为同一个。
System.out.println(Arrays.toString(arr[0]));//此时打印结果即为arr[0]=[5,10,15]
System.out.println(x+arr[0] [0]);//此时x=10,arr[0][0]=5,结果为15。
}
public static void method(int y)
{
System.out.println(y);//主函数调用该方法时实现int y = x;此时y值为10。
y=5;
System.out.println(y);//此时y值为5。但该y值与主函数内x无关。
}
public static void method(int[][] arr)
{
arr[0] = new int[]{5,10,15};//因为此时arr引用与主函数内的arr引用为同一份,赋值时即把原有arr内的值给改变了。此时arr[][] ={{5,10,15},{1,2,3}};
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2