JAVA数组存放,int a[]=new int[3],这三个元素是放在堆内存中的;但int a[]={1,2,3},这三个元素存在哪?

int a[]={1,2,3},这三个元素是存放在堆内存还是栈内存,求详细解释

栈内存里面

栈是存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。
. 堆是存放所有new出来的对象。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-05
java的数组变量是一种引用型的变量,数组变量并不是数组本身。他只是指向堆内存中的数组对象。
所有局部变量都是存放在栈内存中,不管其是基本类型的变量还是引用类型的变量,都是存储在各自的方法栈区中;但引用类型变量所引用的对象(包括数组、普通java对象)则总是存储在堆内存中。
{1,2,3}存放在堆内存中追问

能否请教什么书籍里有相关知识介绍

第2个回答  2013-08-05
一样放在堆里

当创建一个数组对象时,实际上就创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己关键字null。一旦Java看到null就知道这个引用还没有指向某个对象,在使用之前必须为其指定一个对象。

int a[]={1,2,3}等价使用new 可以去看下 《Thinking in Java》追问

能否告知在哪一章节,我去详细看看,谢谢

追答

第五章 初始化与清理 在99页

追问

正解,这种情况的内存空间分配由编译器负责,等价使用new,非常感谢。

本回答被提问者采纳

java 语句int a[][]=new int[][3]哪里错了啊?帮我解释详细点哦,谢谢
int a[][]=new int[3][];a[0]=int new int[3];a[1]=int new int[3];a[2]=int new int[3];

int []array=new int [3];和int[] array = { 1,2,3};效果是一样的,但是...
int []array=new int [3]是分配了内存空间和地址给一个叫array的数组,没有赋初值 int[] array = {1,2,3}分配了内存空间和地址给一个叫array的数组,并且赋了初值

JAVA里的int[]a =new int[3],是指数组里指定义3个数么
int[] a=new int[length]; a[0]=1;2、int[] a={1,2,3};3、int[] a; a=new int[length];初始化时一定要指明数组长度,或像(2)间接指明长度。像你这种情况,若没有进一步赋值,将会创建3个可以存放int变量的内存空间,初始值都为0。a[0]=0; a[1]=0; a[2]=0;...

java中 inta a[ ]=new int[3]; a=null;是什么意思
数组初始化的时候是空的,所以a=null;我个人认为好像不会出现这个问题。int类型好像是默认为0.

int a [ ] = new int [5]; int [ ] a=new int [ ] {1,2,3,4,5}...
回答:2种写法在不同语言上都是对的,在c#里只能用第二种写法来定义数组。当然,你会问这个问题,猜想你用的应该是java。其实2个定义方式没什么区别,只不过第二个定义实例的时候同时给数组的每个元素都赋上了值。

int [] a=new int[3]; int [] b={1,2,3,4,5,6}; a=b; 为什么打印出来会...
int [] a=new int[3]; \/\/定义了一个长度为3的整型数组,变量a是对该数组的一个引用 int [] b={1,2,3,4,5,6}; \/\/定义一个长度为6的整型数组,并用{1,2,3,4,5,6}对数组元素进行初始化,变量b是对该数组的一个引用 a=b; \/\/这条语句将导致a的引用发生变化,a也成为对...

用java输入三个整数,求最大值和最小值,为什么用一个for循环中最小值求...
以下是合理的做法。public class MaxminValues { public static void main(String[] args) { Scanner he=new Scanner(System.in);int[]a=new int[3];int max=0;int min=0;for(int i=0;i<a.length;i++){ System.out.println("输入第"+(i+1)+"个学生的成绩:");\/\/注意i+1 a[i]...

JAVA中int类型一维数组的默认值是多少
堆上数组有默认值为1(new出来的 int a[]=new int[3];)栈上的是随机的没有手动初始化之前不能用于计算和给其他变量赋值 (int a[10];)

java中 int [] a = {1,2,3}; 那么a和{1,2,3}的关系是什么
{1,2,3}是一个数组,里面放了1,2,3 三个数 a 只是这个数组的别名

在Java 中int Array[] =new int[4] {1,2,3};这样写可以吗
不可以,可以写为下面这样:int Array[] =new int[] {1,2,3};

相似回答