要表示别的元素的地址就是x+i(第i个元素的地址),建议楼主去看看c语言的指针。
解决方案 »
- 彩信猫二次开发设想
- java如何能读取Win7的mac地址
- 请问,怎么用DefaultCellEditor类来给JTABLE里面的单元格添加jcombobox
- 请教 c++到java的类型转换问题!
- 求一正则表达式
- C:\Program Files\Java\jre1.5.0_04\lib\i386\jvm.cfg
- 如何让JTree的节点根据标志的不同,显示不同的颜色
- 菜鸟问题
- 急,请教,用appletviewer看applet,jdialog是模态的,但applet嵌入网页中,就不起作用,请帮助,急!!!
- java 如何将多维数组与多维数组 拼接起来
- 编译出错高手指教!!!!!!!!!!!
- 求四本java书的电子版,分数可以商量,最少每本100分
你要是写 int *k = new int ; 那么你的k 是在堆里分配的
x = new int[10];
//打印x的内存地址
System.out.println(x);
/打印的是堆内存中初始化的值。
//System.out.println(x[0]);
System.out.println(x[2]);
System.out.println(args[0]);
System.out.println(args);
--------------------------
首先x是引用它应该存储在栈中,而 new int[10];它们存在堆中,System.out.println(x);
这句因该代表你声明数组的首地址,x[0]--x[10]它们代表确切的值,由于你没有进行初始化,所以基本类型会被初始化为0。
----------------------------------
String [] y = new String []{new String(),new String(),new String()};
for(int i=0;i<y.length;i++)
{
System.out.println("y["+i+"]="+y[i]);
}
System.out.println(args[0]);
System.out.println(args);
-----------------------------------------
而后来你改为Sting类型,你也没有进行初始化,所以输出的都是空。
而args也是代表引用所以输出的结果也是地址
能给我写一个程序吗?我想知道第3个元素的地址,是:
System.out.println(x+2);?吗?可是我的输出有问题:
F:\javaview\lesson2>javac Test01.java
Test01.java:8: operator + cannot be applied to int[],int
System.out.println(x+2);
^
1 error
-------------------------------------------------------------------
to: azhengabc(阿政ABC)
你要是写 int *k = new int ; 那么你的k 是在堆里分配的
你的写发对吗?我用的是java语言啊!有点晕!-------------------------------------------------------------------
to: yongfans(yongfan)
前面的我都比较清楚了,就是在怎么求第i个元素的地址.有点不太清楚!
对于其他类型的数组,new数组的时候不会自动new其元素,但是会保留元素类型信息,不允许储存类型非法的引用。
String[10] //堆内存,实际上是在堆中分配了10个String的指针根本上还是要注意JAVA只有基本类型和引用类型对等C/C++:
string* s[] = new String*[10]
如果你熟悉C/C++,就容易明白了
String** s = new String*[10];
大家好啊,其实我要的就是在怎么求第i个元素的地址.有点不太清楚!
不过我个人认为,好象不能求的。
举个简单的例子
class A
{
String name;
int age;
void c()
{
System.out.println("A.c()");
}
}
public class B
{
public static void main(String [] args)
{
A a = new A();
System.out.println(a);
a.c();
}
}
---------------------------------------------------------------------------------
输出结果为:F:\javaview>java B
A@7172ea
A.c()
---------------------------------------------------------------------------------等用new A();是在堆内存中对class A中的field都进行了初始化,即对name为null,对age为0;后将其对象附给reference a ,也就是a指向了堆内存的首地址。所以我认为如果是数组,也只能指向其首地址,而第i个元素的地址是不能知道的(我的看法)。
不过我又有个疑问了,那CLASS A中的方法也要分配内存吧,那是在堆内存吗?那又是怎么分配的啊?