黑马程序员技术交流社区
标题:
参数传递,{1,2,3}是个什么样的存在
[打印本页]
作者:
asinzuo
时间:
2015-8-16 07:25
标题:
参数传递,{1,2,3}是个什么样的存在
public class Args {
public static void main(String[] args) {
int [] arr = {1,2,3};
int [] arr1 = new int [] {1,2,3};
int x = 5;
String str = "abc";
show(arr,x,str); //这么写,正确
show(new int[]{1,2,3},5,"abc"); //这么写,也正确
//show({1,2,3},5,"abc"); /<font color="#ff0000">/这么写,为什么编译报错,{1,2,3}是个什么样的存在</font>
}
public static void show(int [] arr,int x,String str)
{
System.out.println(Arrays.toString(arr)+x+str);
}
}
复制代码
作者:
fmi110
时间:
2015-8-16 07:25
new int [] {1,2,3}; 这句将新建一个数组 新建了一个一维数组 含有3个元素 1 2 3,然后将它作为参数传递给show
所以可以 show(new int[]{1,2,3},5,"abc"); 但是你传递给函数的并不是arr,因为你new 新建了一个值一样的数组
{1,2,3} 是一个错误的存在
java中有一个叫区域代码块就是在函数中 单独用{}扩出来的
比如
int main()
{
int a;
{int b;intc }//区域代码块,里面是语句
}
复制代码
代码块{1,2,3}里边都不是合法的语句所以编译失败,但是
new int[]{1,2,3};里的括号不是区域代码块 它是一维数组建立的固定使用方法
作者:
樱花飘过
时间:
2015-8-16 09:12
int [] arr = {1,2,3};
其实应该是int[ ] arr=new int[]{1,2,3};的简写
字符串"abc"是一个字面值形对象,arr是一个地址指向了堆内存,然后堆内存里面的内容是1,2,3, {1,2,3},并不能表示一个对象
作者:
Glc90
时间:
2015-8-16 09:33
int [] arr=new int[]{1,2,3} = ;
等于静态初始化数组, 这个是new出来的 ,储存在堆内存,所以在这个时候arr= {1,2,3}这个在系统输出是个地址值
所以arr 或者 new int[]{1,2,3}都是代表一维数组,所以输出没问题。
但是直接输出{1,2,3}的话,就不能代表数组了 ,具体是什么我也不太清楚了
作者:
肖天长
时间:
2015-8-16 11:09
{1,2,3}是一个元素吧,但是你这里的 System.out.println(Arrays.toString(arr)+x+str);是把数组变成字符串打印出来就不成了
作者:
l_15562009298
时间:
2015-8-16 19:37
数组声明的三种方式:
int [][] iArray;
int []iArray[];
int iArray[][];
作者:
asinzuo
时间:
2015-8-17 08:28
fmi110 发表于 2015-8-16 07:25
new int [] {1,2,3}; 这句将新建一个数组 新建了一个一维数组 含有3个元素 1 2 3,然后将它作为参数传递 ...
说的好有道理
作者:
阳光下的小树33
时间:
2015-8-18 17:11
编译时的异常 说明是代码的规范不对 {}是构造代码块 可以放在类中 和main方法平行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2