Java学习之路(三):Java中的数组
2024-08-29 20:02:40
数组的概述和定义的格式
数组的作用:
- 用来存储同种数据类型的多个值
数组的基本概念:
- 数组是存储同一种数据类型多个元素的集合。就相当于一个容器。
注意:数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的定义格式:
- 数据类型[] 数组名 = new 数据类型[指定数组的长度]
数组的初始化
概念:
就是为数组开辟连续的内存空间,并且为每个数的元素赋值
如何初始化:
- 动态初始化:指定长度,有系统给出初始化值 int[] arr = new int[5]
- 静态初始化:给出初始化的值
- 格式:数据类型[] 数组名 = new 数据类型[数组长度]
如果打印一个数组的话,你会发现很好玩的事情
int[] arr = new int[5];
System.out.println(arr)
//结果:【I@一个十六进制的内存地址
[I@754e9654的解释:
- 【代表是一个数组,有几个就代表是几维的
- I代表的是int类型
- @一个固定的写法
- 那一串的十六进制数字则是数组所在的内存地址
数组的赋值和取值
数组是通过下标、索引进行赋值和取值的
当我们使用动态初始化时,系统会默认的给出一个默认值:
- 整数类型:bytes,short,int,long默认的初始化的数值为0
- 浮点类型:float,double的默认初始化值都是0.0
- 布尔类型:boolean默认的初始化值为false
Java中内存的分配
在Java中,我们将内存分为了5个部分:
- 栈:存储局部变量的部分
- 堆:存储new出来的对象的部分
- 方法区:类中的方法,想要调用一个方法的前提就是方法要在方法区
- 本地方法区:?
- 寄存器:给CPU使用的
我们去创建一个数组:
int[] arr = new int[5]
其实计算机的内部会把arr这个变量名放在栈区,new int[5]放在堆区,在堆区中开辟了5个连续的空间,默认的int为0
当我们将arr重新赋值给一个新的变量的时候,其实只是把他的内存地址又给了新的变量
数组的静态初始化
动态初始化: int[] arr = new int[5]
静态初始化:
格式:数据类型[] 数组名 = new 数据类型[]{元素......}
简化:数据类型[] 数组名 = {元素....}
数组的遍历
这要是在Python,分分钟,一个for,啥条件都不用
Java中:
数组的最大索引:array.length-1
//java中for循环数组 int[] arr = new int[5]; for(int i=0;i<=arr.length-1;i++){
System.out.println(arr[i]);
}
二维数组的概述和定义
定义:
- 本质上是以数组作为数组元素的数组,即“数组的数组”
二维数组的格式:
- 数据类型[][] 数组名 = new 数据类型[m][n]
- 数据类型 数组名[][] = new 数据类型[m][n]
- 数据类型[] 数组名[] = new 数据类型[m][n]
数组的声明:
int[][] arr = {{1,2},{3,4}}
补充:
- 基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量会随之消失
- 引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内的数组还在,可以继续通过地址继续访问
1.Java中的数组到时是传值还是传地址?
//1.即使传值,也是传地址,基本数据类型传递值,引用数据类型传递地址。
//2.Java中只有传地址,应为地址值也是值(官方说法)
最新文章
- NSString 和NSData 转换
- Query Designer:变量的偏移 Variable Offset
- for循环三个表达式的执行时间
- android 之 surfaceView和普通View的重绘使用
- 很好的UI动效设计参考
- [NOIP2011] 普及组
- eclipse加速
- 批量将MP4 转换为 MP3
- 485. Max Consecutive Ones
- 网易内推(Android) 拿offer
- SQL 一列拆分多行
- Hibernate(9)_双向n对n
- oss2罗列所有文件
- leecode第一百六十九题(求众数)
- 20165321 学习基础与C语言学习心得
- Windows环境下32位汇编语言程序设计笔记-基础篇
- Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等
- dp乱写3:环形区间dp(数字游戏)
- jquery获取元素颜色css(&#39;color&#39;)的值返回RGB
- Django - 路由层(URLconf)
热门文章
- CodeForces 519E A and B and Lecture Rooms(倍增)
- XJOI3363 树3/Codeforces 682C Alyona and the Tree(dfs)
- tcxgrid控件中drag a column header here to group by that column移除方法
- Rabbimq必备基础之对高级消息队列协议AMQP分析及Rabbitmq本质介绍
- SQL Server递归实例
- MVC断点续传
- 导出包含图片的excel、word、pdf 笔记
- [bzoj3714] [PA2014] Kuglarz(最小生成树)
- 安装npm及cnpm
- toggleClass,toggle切换