您的位置:

java数组cunzhi,java数组存储对象

本文目录一览:

Java中数组对象的存储位置?

原帖地址:

数组单一说在栈中还是堆中都是错误的,分为几种情况:

1、固定数组在函数体内分配是在栈中的

我们做一个试验,一般DELPHI程序线程的栈大小是1M,如果我们函数体中申请4M大小的数组,报栈溢出,则表示数据的大小是在栈中的。

const

CArrayCount = 1024*1024*4;

procedure TForm1.btnMainThreadClick(Sender: TObject);

var

MainThreadArray: array[1..CArrayCount] of Char;

i: Integer;

begin

for i := Low(MainThreadArray) to High(MainThreadArray) do

MainThreadArray[i] := #0;

end;

我把以上代码在主线程中测试时,确实报了栈溢出,如果这时你把DELPHI程序的栈调大为6M则正确,表示在函数体中申请的数组是在栈中的。

2、固定数组在类中分配是在堆中的

我们在类中加一下定义语句

FFixArray: array[1..CArrayCount] of Char;

程序正常,表示在类中分配固定数组是在堆中的。

3、固定数组全局变量是在堆中的

我们在程序定义全部数组

GFixArray: array[1..CArrayCount] of Char;

程序也正常,表示全局固定长度是在堆中的。

3、动态数组不管在函数体中、类中、全局变量都是在堆中

如果你会汇编,看一下汇编就明白了。DELPHI这么实现是合理的,在函数里中分配的固定长度数组放在栈中可以加快运行效率,而且在多线程的情况下,不用像堆分配有加锁。只是大家在写程序的过程中注意在函数里定义太长的数组需要注意,否则栈溢出,程序就崩溃了。

java中数组的定义

数组的定义

语法有两种:

type arrayName[];

type[] arrayName;

type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量。

    /** 

         * 数组的三种定义方法 

         *  

         * 1.数组类型[] 数组名=new 数组类型[数组长度];   

         * 2.数组类型[] 数组名={数组0,数组1,数组2,数组3,....};   

         * 3.数组类型[] 数组名=new 数组类型[]{数组0,数组1,数组2,...};  

         * */  

  

public class WhatEver {  

    public static void main(String[] args) {  

        //第一种   例:  

        String[] test1 = new String[6];  

        test1[0] = "数组0";  

        test1[1] = "数组1";  

          

          

        //第二种 例:  

        String[] test2 = {"数组0","数组1","数组2","...."};  

          

        //第三种 例:  

        String[] test3 = new String[]{"数组0","数组1","数组2","...."};  

          

          

          

    }  

}

Java数组是同一种类型数据的集合。其实数组就是一个容器。 

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

Java 语言中提供的数组是用来存储固定大小的同类型元素。

你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。

JAVA二维数组存储

不论怎么操作,数据都是要输入一遍的,不知道你说的操作简便是指程序步少还是什么的,不过50位数我建议你用字符串表存取吧,新建一个ArrayList String这样的容器,每一个String就是一个50位数。

那你就用字符串的split方法,选择空格符为分隔符号,然后存储