黑马程序员技术交流社区
标题:
突然想到一个问题!关于int[] a=new int[2];a是什么?
[打印本页]
作者:
李会成
时间:
2013-1-30 13:59
标题:
突然想到一个问题!关于int[] a=new int[2];a是什么?
本帖最后由 李会成 于 2013-2-1 11:11 编辑
突然想到一个问题!
1.关于int[] a=new int[2];如果System.out.println(a);[I@c17164;貌似是一个地址但好像又不是!这到底是什么?求解!
如果是地址的话【i@好像说不通吧。!!!如果是地址指出[I@ 这几个字符是什么意思?
2.另外在java我们可以对引用变量做一些什么操作?比如+-;当然我知道这两个肯定不行!
作者:
张庚
时间:
2013-1-30 14:27
I@c17164; 16进制的就是地址 I@加的默认标示
作者:
pzfpang449
时间:
2013-1-30 14:35
java中的数组定义方式:int[] x=new int[100]
在内存中java分为栈内存和堆内存,如果光写int[] x;
这句只是在栈内存中定义了一个装数组地址用的变量,而真正的数组地址是在堆内存中的.
new int[100]这句才是在堆内存中定义了数组,
x=new int[100] 是把堆内存中的数组的首地址给栈内存中的变量x,
x也就是指向数组的首地址了,当执行x=null时,x就不指向任何数组的首地址,
堆中也就多了一个没法再用到的数组,垃圾回收器会在一个不确定的时间将该数组销毁.
鉴于楼主希望打印的值不是内存我这有个例子楼主可以看看
例子:
String[] str={"1","2","3","4","5","6","7","8","9","99","999","999","9999"};
for(int i=0;i<str.length;i++)
{
System.out.println(str[i]);
}
for(String s:str)
{
System.out.println(s);
}
希望对楼主有所帮助
作者:
李桐
时间:
2013-1-30 14:37
[I:整形数组
@:at
c17164:地址
作者:
王永彬
时间:
2013-1-30 14:43
[表示数组类型,“@数字”表示一个十六近制的hash地址值,这是调用其数组类型tostring方法时出现的结果。
作者:
黄振
时间:
2013-1-30 14:49
a是一个数组,可以理解为定义常量的扩展形。而int[] a=new int[2];叫定义了一个名字为a的数组,在这个数组中有两个int形的常量,I@c17164是这个数组储存在堆内存的地址。I@是这个地址的硬向定义名称,没什么实际意义,就像人的名称一样,是一个定向的意思,规定好了的,没什么实际意义,这个标识出来知道它是什么就行。
作者:
钱志新
时间:
2013-1-30 20:25
a是你new的int[]数组的名称,后面的那个是像指针一样的标示符。
作者:
沈文杰
时间:
2013-1-30 21:21
问题1:
int[] a=new int[2];a就是你new出来数组的名字,同时也是该数组的首地址System.out.println(a);[I@c17164;[I表示数组类型,@=at,c17164是十六进制表示堆内存为该数组分配的地址。建议多看一下数组在内存中的存储
方式那几个图。
作者:
陈圳
时间:
2013-1-30 23:18
这个打印形式,视频里,毕老师已经讲解过了,你可以复写toString方法来设定自己的打印形式
比如:public String toString()
{
return "数组:"+a;
}
而系统的是:
public String toString()
{
return "类型"+"@"+toHex(a);
}
作者:
左兆彬
时间:
2013-1-30 23:24
一瞅就是没看视频的{:soso_e140:}
作者:
黑马李超
时间:
2013-1-31 00:02
左兆彬 发表于 2013-1-30 23:24
一瞅就是没看视频的
不错。。毕老师讲的特别详细
作者:
Beautiful
时间:
2013-1-31 06:45
通过这么个代码public class ArrayTest {
public static void main(String[] args){
int[] a = new int[2];
System.out.println(a);
}
}
运行的结果为[I@6b97fd,这个值得话代表的是 这个a是一个数组,并且这个数组有个哈希值,我这样直接打印出来的数字代表的是哈希值,在所有类的主类Object中有个方法hashCode();你看一下就懂了,去看看视频吧
作者:
逍林游
时间:
2013-1-31 10:06
int 数组的toString()方法没被重写覆盖,
public String toString()
{
String a="";
for(int i = 0;i<arr.length;i++)
a=a+arr[i];
return a;
}
才会
作者:
张洪慊
时间:
2013-1-31 10:27
这个毕老师 把每个 部分都讲了- -就像李桐同学说的
作者:
李会成
时间:
2013-2-1 11:11
李桐 发表于 2013-1-30 14:37
[I:整形数组
@:at
c17164:地址
非常感谢,我明白了
作者:
李培根
时间:
2013-2-18 11:40
请勿复制他人帖子,技术分不是入学的门槛而是为了帮助大家学习而存在的。
请勿再次发此类帖子了!
此贴就关闭了。此后如有再次发现直接封禁处理,请看到此贴的会员也加以注意。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2