java静态数组定义_详解Java静态数组

说到Java静态数组,我们第一时间可能就会想到相应的动态数组,两者看上去挺相似,实质却大不一样。Java静态数组是一定义出来就创建了,而动态数组则是定义时不创建,使用时才创建,一定意义上节省了内存空间。本文我们主要来讲一讲相对比较简单的Java静态数组。

实际上我们之前学习的大部分数组都是静态数组,然而在很多的时候,静态数组根本不能满足我们编程的实际需要,比方说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静态数组大小是固定的,显然就不能添加数据,要动态添加数据必须要用到动态数组,动态数组中的各个元素类型也是一致的,不过这种类型已经是用一个非常大的类型来揽括—Object类型。

Java静态数组,顾名思义,是静态不变的,在内存中位于栈区,是在定义时就已经在栈上分配了固定大小,在运行时这个大小不能改变,如:int

a[10];

在函数执行完以后,系统自动销毁;

动态数组是malloc或者new出来的,位于内存的堆区,它的大小是在运行时给定,并且可以改变其,如:

int *a;

a = new

int[10];动态数组,其创建麻烦,使用完必须由程序员自己通过free或者delete释放,否则严重会引起内存泄露。new[]/delete[]

#include

#include

void fun( int *p )

{

sizeof( p ) / sizeof( p[0] );

}

int main( void )

{

int a[5];

int *p = a;

sizeof( p ) / sizeof( int ); // 结果为1

sizeof( a ) / sizeof( int ); // 结果为5

p = ( int * ) malloc( sizeof(int) * 5);

sizeof( p ) / sizeof( int ) ; //结果为1

return 0;

}

Java静态数组可以看成是一个特殊的指针,它是指是一个常量,在第一次赋值以后,不能修改。编译器还保存关于数组长度的信息sizeof()便可以体现。

一般我们定义一个数组 int a[5] ; main函数栈就为它分配空间,便把这段空间的首地址赋值给a,a

做为指针类型,具有具体值,只能作为右值(出现在在表达式的右边)。

下面我们通过实例来看一下Java静态数组的创建和简单使用:

#include// std::cout std::endl

int main(void)

{

// 创建具有10个元素的数组并且全部初始化为0

int arr1[10] = {};

// 跟上面一样, 赋值符号可省略

int arr2[10]{};

// 创建具有10个元素的数组,前三个分别初始化为1, 2, 3, 剩余全部初始化为0

int arr3[10]{ 1, 2, 3 };

// 创建具有4个元素的数组, 编译器在编译的时候会确定数组中元素的数量

int arr4[]{ 4, 5, 6, 7 };

// 对数组的元素进行操作

arr4[2] = 1024; // arr4的现在元素是{ 4, 5, 1024, 7 }

// 数组名是内存地址而不是指针, 去掉下面注释将会报错

// arr1 = arr4;

// 数组名是数组的首地址, 使用指针保存数组首地址

auto *p = arr4; // int *p = arr4;

std::cout << p[2] << std::endl;

return 0;

}

以上就是Java静态数组的相关知识,或许你学的还不够尽兴,那么来观看本站的Java基础教程吧,不仅能够带你全面学习Java数组知识,还有更多的Java基础知识帮你奠定良好的Java基础!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值